
/* WARNING: Type propagation algorithm not settling */

void png_combine_row(png_const_structrp png_ptr,png_bytep dp,int display)

{
  png_byte pVar1;
  byte bVar2;
  bool bVar3;
  uint uVar4;
  byte *pbVar5;
  png_const_structrp ppVar6;
  int iVar7;
  int iVar8;
  byte bVar11;
  uint extraout_v1;
  void *pvVar9;
  png_const_structrp ppVar10;
  uint uVar12;
  png_const_structrp ppVar13;
  undefined1 *puVar14;
  byte *pbVar15;
  undefined4 uVar16;
  png_const_structrp ppVar17;
  uint uVar18;
  size_t sVar19;
  uint in_t2;
  byte *pbVar20;
  uint in_t3;
  int iVar21;
  png_const_structrp ppVar22;
  byte *unaff_s0;
  uint uVar23;
  byte *pbVar24;
  uint unaff_s1;
  byte bVar26;
  int *piVar25;
  uint unaff_s2;
  uint uVar27;
  uint unaff_s3;
  png_const_structrp ppVar28;
  int iVar29;
  byte *pbVar30;
  undefined *puVar31;
  void *pvVar32;
  code *pcVar33;
  undefined8 uVar34;
  png_const_structrp ppStack_74;
  int iStack_5c;
  byte *pbStack_58;
  uint uStack_54;
  uint uStack_50;
  
  uVar18 = png_ptr->width;
  bVar11 = png_ptr->transformed_pixel_depth;
  uVar4 = (uint)bVar11;
  if (uVar4 == 0) {
LAB_00030084:
    (*(code *)PTR_png_error_0005340c)();
    uVar4 = extraout_v1;
    goto LAB_00030094;
  }
  pbVar15 = png_ptr->row_buf + 1;
  if (png_ptr->info_rowbytes == 0) {
LAB_0002fb8c:
    uVar12 = uVar4 * uVar18;
    if (uVar18 == 0) {
      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xb7c);
      goto LAB_00030084;
    }
    uVar27 = uVar12 & 7;
    bVar26 = 0;
    if (uVar27 == 0) {
      unaff_s0 = (byte *)0x0;
      unaff_s2 = 0;
LAB_0002fc38:
      pVar1 = png_ptr->interlaced;
    }
    else {
      if (uVar4 < 8) {
        uVar23 = uVar12 + 7 >> 3;
      }
      else {
        uVar23 = (bVar11 >> 3) * uVar18;
      }
      unaff_s0 = dp + (uVar23 - 1);
      bVar26 = *unaff_s0;
      if (-1 < (int)(png_ptr->transformations << 0xf)) {
        unaff_s2 = 0xff >> uVar27;
        goto LAB_0002fc38;
      }
      unaff_s2 = 0xff << uVar27;
      pVar1 = png_ptr->interlaced;
    }
    if ((pVar1 != '\0') && ((png_ptr->transformations & 2) != 0)) {
      bVar2 = png_ptr->pass;
      in_t3 = (uint)bVar2;
      if ((in_t3 < 6) && ((display == 0 || ((display == 1 && ((bVar2 & 1) != 0)))))) {
        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;
        if (uVar18 <= in_t2) {
          return;
        }
        if (uVar4 < 8) {
          if (uVar4 == 0) {
            trap(7);
          }
          iVar8 = 1;
          if ((int)(png_ptr->transformations << 0xf) < 0) {
            if (display == 0) {
              iVar8 = 0;
              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {
                iVar8 = 1;
              }
              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);
            }
            else {
              if (uVar4 == 1) {
                iVar8 = 0;
              }
              else if (uVar4 != 2) {
                iVar8 = 2;
              }
              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);
            }
          }
          else if (display == 0) {
            iVar8 = 0;
            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {
              iVar8 = 1;
            }
            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);
          }
          else {
            if (uVar4 == 1) {
              iVar8 = 0;
            }
            else if (uVar4 != 2) {
              iVar8 = 2;
            }
            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)
            ;
          }
          while( true ) {
            if ((uVar12 & 0xff) != 0) {
              if ((uVar12 & 0xff) == 0xff) {
                *dp = *pbVar15;
              }
              else {
                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;
              }
            }
            bVar3 = uVar18 <= 8 / uVar4;
            uVar18 = uVar18 - 8 / uVar4;
            if (bVar3) break;
            dp = dp + 1;
            pbVar15 = pbVar15 + 1;
            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;
          }
          goto LAB_0002fbfc;
        }
        goto LAB_0002fd9c;
      }
    }
    if (uVar4 < 8) {
      uVar18 = uVar12 + 7 >> 3;
    }
    else {
      uVar18 = (bVar11 >> 3) * uVar18;
    }
    (*(code *)PTR_memcpy_000534c4)(dp,pbVar15,uVar18);
LAB_0002fbfc:
    if (unaff_s0 != (byte *)0x0) {
      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar26) & (byte)unaff_s2;
    }
    return;
  }
  if (uVar4 < 8) {
    sVar19 = uVar4 * uVar18 + 7 >> 3;
  }
  else {
    sVar19 = (bVar11 >> 3) * uVar18;
  }
  if (png_ptr->info_rowbytes == sVar19) goto LAB_0002fb8c;
  pbVar15 = PTR_s_nt_0005301c + 0xb58;
  uVar34 = (*(code *)PTR_png_error_0005340c)(png_ptr);
  uVar4 = (uint)((ulonglong)uVar34 >> 0x20);
  png_ptr = (png_const_structrp)uVar34;
LAB_0002fd9c:
  uVar12 = uVar4 >> 3;
  if ((uVar4 & 7) == 0) {
    iVar8 = in_t2 * uVar12;
    dp = dp + iVar8;
    unaff_s3 = uVar18 * uVar12 - iVar8;
    unaff_s0 = pbVar15 + iVar8;
    unaff_s2 = uVar12;
    if (((byte *)display != (byte *)0x0) &&
       (unaff_s2 = uVar12 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {
      unaff_s2 = unaff_s3;
    }
    unaff_s1 = uVar12 << (7 - in_t3 >> 1 & 0x1f);
    if (unaff_s2 == 2) {
      do {
        *dp = *unaff_s0;
        dp[1] = unaff_s0[1];
        if (unaff_s3 <= unaff_s1) {
          return;
        }
        unaff_s3 = unaff_s3 - unaff_s1;
        unaff_s0 = unaff_s0 + unaff_s1;
        dp = dp + unaff_s1;
      } while (1 < unaff_s3);
      *dp = *unaff_s0;
      return;
    }
    if (unaff_s2 == 3) {
      bVar11 = *unaff_s0;
      while( true ) {
        *dp = bVar11;
        dp[1] = unaff_s0[1];
        dp[2] = unaff_s0[2];
        if (unaff_s3 <= unaff_s1) break;
        unaff_s0 = unaff_s0 + unaff_s1;
        unaff_s3 = unaff_s3 - unaff_s1;
        dp = dp + unaff_s1;
        bVar11 = *unaff_s0;
      }
      return;
    }
    if (unaff_s2 == 1) {
      *dp = *unaff_s0;
      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {
        unaff_s0 = unaff_s0 + unaff_s1;
        dp = dp + unaff_s1;
        *dp = *unaff_s0;
      }
      return;
    }
    if (((0xf < unaff_s2) || ((((uint)dp | (uint)unaff_s0) & 1) != 0)) ||
       (((unaff_s2 | unaff_s1) & 1) != 0)) {
      while (iVar8 = (*(code *)PTR_memcpy_000534c4)(dp,unaff_s0,unaff_s2), unaff_s1 < unaff_s3) {
        unaff_s3 = unaff_s3 - unaff_s1;
        unaff_s0 = unaff_s0 + unaff_s1;
        if (unaff_s3 < unaff_s2) {
          unaff_s2 = unaff_s3;
        }
        dp = (png_bytep)(iVar8 + unaff_s1);
      }
      return;
    }
    uVar4 = unaff_s1 - unaff_s2;
    if ((((uint)dp | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {
      pbVar15 = dp;
      while( true ) {
        do {
          pbVar24 = unaff_s0 + 2;
          pbVar5 = dp + 2;
          *(undefined2 *)dp = *(undefined2 *)unaff_s0;
          dp = pbVar5;
          unaff_s0 = pbVar24;
        } while (pbVar5 + -unaff_s2 != pbVar15);
        bVar3 = unaff_s3 <= unaff_s1;
        unaff_s3 = unaff_s3 - unaff_s1;
        if (bVar3) break;
        dp = pbVar5 + (uVar4 & 0xfffffffe);
        unaff_s0 = pbVar24 + (uVar4 & 0xfffffffe);
        pbVar15 = dp;
        if (unaff_s3 < unaff_s2) {
          do {
            pbVar5 = pbVar15 + 1;
            *pbVar15 = *unaff_s0;
            pbVar15 = pbVar5;
            unaff_s0 = unaff_s0 + 1;
          } while (dp + unaff_s3 != pbVar5);
          return;
        }
      }
      return;
    }
LAB_00030094:
    pbVar15 = dp;
    while( true ) {
      do {
        pbVar5 = dp + 4;
        uVar16 = *(undefined4 *)unaff_s0;
        unaff_s0 = unaff_s0 + 4;
        *(undefined4 *)dp = uVar16;
        dp = pbVar5;
      } while (pbVar15 + (unaff_s2 - (int)pbVar5) != (byte *)0x0);
      bVar3 = unaff_s3 <= unaff_s1;
      unaff_s3 = unaff_s3 - unaff_s1;
      if (bVar3) break;
      dp = pbVar5 + (uVar4 & 0xfffffffc);
      unaff_s0 = unaff_s0 + (uVar4 & 0xfffffffc);
      uVar18 = 0;
      pbVar15 = dp;
      if (unaff_s3 < unaff_s2) {
        do {
          pbVar5 = unaff_s0 + uVar18;
          pbVar15 = dp + uVar18;
          uVar18 = uVar18 + 1;
          *pbVar15 = *pbVar5;
        } while (uVar18 != unaff_s3);
        return;
      }
    }
    return;
  }
  ppVar17 = (png_const_structrp)(PTR_s_nt_0005301c + 0xb98);
  puVar31 = PTR_png_error_0005340c;
  (*(code *)PTR_png_error_0005340c)();
  piVar25 = *(int **)(puVar31 + 0x233b0);
  iStack_5c = *piVar25;
  ppVar13 = png_ptr;
  pbStack_58 = unaff_s0;
  uStack_54 = uVar12;
  uStack_50 = unaff_s2;
  if ((ppVar17 == (png_const_structrp)0x0) || (png_ptr == (png_const_structrp)0x0))
  goto LAB_00030268;
  pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;
  bVar11 = (byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];
  uVar4 = (uint)bVar11;
  uVar12 = (int)pvVar9 - 1;
  display = display * 4 + *(int *)(puVar31 + 0x22f10) + 0xd40;
  iVar8 = *(int *)display;
  ppVar6 = (png_const_structrp)((int)pvVar9 * iVar8);
  puVar14 = &ppVar6[-1].field_0x3e7;
  if (uVar4 == 2) {
    pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 2) - 8));
    ppVar13 = (png_const_structrp)
              ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 2) - 8));
    puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 3);
    ppVar17 = (png_const_structrp)((int)pvVar9 + 3);
    if ((uVar18 & 0x10000) == 0) {
      ppVar28 = (png_const_structrp)(~(uint)ppVar17 << 1);
      uVar12 = ~(uint)puVar14 << 1;
      iVar21 = 2;
      pbVar24 = &DAT_00000006;
      pbVar5 = (byte *)0x0;
    }
    else {
      ppVar17 = (png_const_structrp)((int)ppVar17 * 2);
      uVar12 = (int)puVar14 * 2;
      iVar21 = -2;
      pbVar24 = (byte *)0x0;
      pbVar5 = &DAT_00000006;
      ppVar28 = ppVar17;
    }
    pbVar30 = (byte *)((uint)ppVar28 & 6);
    display = uVar12 & 6;
    pvVar32 = (void *)0x0;
    if (pvVar9 != (void *)0x0) {
      do {
        bVar11 = *pbVar15;
        if (0 < iVar8) {
          iVar29 = 0;
          do {
            while( true ) {
              iVar7 = iVar29;
              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;
              uVar18 = (uint)bVar26;
              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =
                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |
                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;
              if (pbVar24 != (byte *)display) break;
              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;
              iVar29 = iVar7 + 1;
              display = (int)pbVar5;
              if (iVar7 + 1 == iVar8) goto LAB_0003051c;
            }
            display = display + iVar21;
            iVar29 = iVar7 + 1;
          } while (iVar7 + 1 != iVar8);
LAB_0003051c:
          ppVar17 = (png_const_structrp)(iVar7 + 1);
          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;
        }
        if (pbVar24 == pbVar30) {
          pbVar15 = pbVar15 + -1;
          pbVar30 = pbVar5;
        }
        else {
          pbVar30 = pbVar30 + iVar21;
        }
        pvVar32 = (void *)((int)pvVar32 + 1);
      } while (pvVar32 < pvVar9);
      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];
      goto LAB_0003024c;
    }
LAB_000302a4:
    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;
  }
  else {
    if (uVar4 == 4) {
      pbVar5 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8));
      pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +
                        (((uint)puVar14 >> 1) - 8));
      puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1);
      if ((uVar18 & 0x10000) == 0) {
        ppVar13 = (png_const_structrp)((int)pvVar9 + 1U & 1);
        pbVar24 = &DAT_00000004;
        if (ppVar13 != (png_const_structrp)0x0) {
          pbVar24 = (byte *)0x0;
        }
        if (((uint)puVar14 & 1) == 0) {
          iVar21 = 4;
          pbVar20 = &DAT_00000004;
          display = (int)&DAT_00000004;
          pbVar30 = (byte *)0x0;
        }
        else {
          pbVar30 = (byte *)0x0;
          iVar21 = 4;
          pbVar20 = &DAT_00000004;
          display = 0;
        }
      }
      else {
        ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4);
        display = (int)puVar14 * 4 & 4;
        iVar21 = -4;
        pbVar20 = (byte *)0x0;
        pbVar30 = &DAT_00000004;
        pbVar24 = (byte *)((uint)ppVar13 & 4);
      }
      pvVar32 = (void *)0x0;
      ppVar17 = ppVar6;
      if (pvVar9 == (void *)0x0) goto LAB_000302a4;
      do {
        bVar11 = *pbVar5;
        if (0 < iVar8) {
          iVar29 = 0;
          do {
            while( true ) {
              iVar7 = iVar29;
              uVar18 = (uint)*pbVar15;
              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<
                               (display & 0x1fU)) |
                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;
              if (pbVar20 != (byte *)display) break;
              pbVar15 = pbVar15 + -1;
              iVar29 = iVar7 + 1;
              display = (int)pbVar30;
              if (iVar7 + 1 == iVar8) goto LAB_00030440;
            }
            display = display + iVar21;
            iVar29 = iVar7 + 1;
          } while (iVar7 + 1 != iVar8);
LAB_00030440:
          ppVar17 = (png_const_structrp)(iVar7 + 1);
          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;
        }
        if (pbVar20 == pbVar24) {
          pbVar5 = pbVar5 + -1;
          pbVar24 = pbVar30;
        }
        else {
          pbVar24 = pbVar24 + iVar21;
        }
        pvVar32 = (void *)((int)pvVar32 + 1);
      } while (pvVar32 < pvVar9);
      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];
      ppVar13 = (png_const_structrp)0x0;
    }
    else {
      pbVar15 = (byte *)(uint)(bVar11 >> 3);
      if (uVar4 == 1) {
        pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8));
        display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8);
        uVar12 = (int)pvVar9 + 7;
        puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3);
        if ((uVar18 & 0x10000) == 0) {
          uVar12 = ~uVar12;
          puVar14 = (undefined1 *)~(uint)puVar14;
          iVar21 = 1;
          ppVar10 = (png_const_structrp)&DAT_00000007;
          ppVar28 = (png_const_structrp)0x0;
        }
        else {
          iVar21 = -1;
          ppVar10 = (png_const_structrp)0x0;
          ppVar28 = (png_const_structrp)&DAT_00000007;
        }
        ppVar22 = (png_const_structrp)(uVar12 & 7);
        ppVar13 = (png_const_structrp)((uint)puVar14 & 7);
        pvVar32 = (void *)0x0;
        if (pvVar9 == (void *)0x0) goto LAB_000302a4;
        do {
          bVar11 = *pbVar15;
          if (0 < iVar8) {
            iVar29 = 0;
            do {
              while( true ) {
                iVar7 = iVar29;
                uVar18 = (uint)*(byte *)display;
                *(byte *)display =
                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<
                           ((uint)ppVar13 & 0x1f)) |
                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;
                if (ppVar10 != ppVar13) break;
                display = display + -1;
                ppVar13 = ppVar28;
                iVar29 = iVar7 + 1;
                if (iVar7 + 1 == iVar8) goto LAB_00030364;
              }
              ppVar13 = (png_const_structrp)
                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);
              iVar29 = iVar7 + 1;
            } while (iVar7 + 1 != iVar8);
LAB_00030364:
            ppVar17 = (png_const_structrp)(iVar7 + 1);
            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;
          }
          if (ppVar10 == ppVar22) {
            pbVar15 = pbVar15 + -1;
            ppVar22 = ppVar28;
          }
          else {
            ppVar22 = (png_const_structrp)
                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);
          }
          pvVar32 = (void *)((int)pvVar32 + 1);
        } while (pvVar32 < pvVar9);
        uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];
      }
      else {
        ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);
        ppVar28 = (png_const_structrp)
                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);
        ppStack_74 = (png_const_structrp)
                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +
                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));
        if (pvVar9 != (void *)0x0) {
          iVar21 = -(int)pbVar15;
          pvVar9 = (void *)0x0;
          do {
            uVar18 = 8;
            ppVar13 = (png_const_structrp)&stack0xffffff9c;
            ppVar17 = ppVar28;
            display = (int)pbVar15;
            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)
            ;
            if (0 < iVar8) {
              iVar29 = 0;
              ppVar10 = ppStack_74;
              do {
                iVar29 = iVar29 + 1;
                ppVar13 = ppVar10;
                ppVar17 = (png_const_structrp)&stack0xffffff9c;
                display = (int)pbVar15;
                iVar7 = (**(code **)(puVar31 + 0x233b8))
                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);
                ppVar10 = (png_const_structrp)(iVar7 + iVar21);
              } while (iVar29 != iVar8);
              ppStack_74 = (png_const_structrp)
                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +
                           iVar8 * iVar21 + -8);
            }
            pvVar9 = (void *)((int)pvVar9 + 1);
            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);
          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);
          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];
        }
      }
    }
LAB_0003024c:
    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;
    if (7 < uVar4) {
      png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)((uVar4 >> 3) * (int)ppVar6);
      goto LAB_00030268;
    }
  }
  png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)(uVar4 * (int)ppVar6 + 7 >> 3);
LAB_00030268:
  if (iStack_5c == *piVar25) {
    return;
  }
  pcVar33 = *(code **)(puVar31 + 0x23378);
  (*pcVar33)();
  if (puVar31 + 0x2aee3 < &DAT_00000004) {
    if (ppVar13->read_filter[0] == (_func_void_png_row_infop_png_bytep_png_const_bytep *)0x0) {
      bVar11 = ppVar13->pixel_depth;
      ppVar13->read_filter[0] =
           (_func_void_png_row_infop_png_bytep_png_const_bytep *)
           (*(int *)(pcVar33 + 0x22c14) + -0x58a0);
      ppVar13->read_filter[1] =
           (_func_void_png_row_infop_png_bytep_png_const_bytep *)
           (*(int *)(pcVar33 + 0x22c14) + -0x5858);
      ppVar13->read_filter[2] =
           (_func_void_png_row_infop_png_bytep_png_const_bytep *)
           (*(int *)(pcVar33 + 0x22c14) + -0x5828);
      if ((int)(bVar11 + 7) >> 3 == 1) {
        ppVar13->read_filter[3] =
             (_func_void_png_row_infop_png_bytep_png_const_bytep *)
             (*(int *)(pcVar33 + 0x22c14) + -0x579c);
      }
      else {
        ppVar13->read_filter[3] =
             (_func_void_png_row_infop_png_bytep_png_const_bytep *)
             (*(int *)(pcVar33 + 0x22c14) + -0x5704);
      }
    }
                    /* WARNING: Could not recover jumptable at 0x00030614. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(code *)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs[(int)(puVar31 + 0x2afc5 + -2)])
              (ppVar17,display,uVar18);
    return;
  }
  return;
}



void FUN_0002fb24(uint *param_1,byte *param_2,byte *param_3)

{
  byte bVar1;
  bool bVar2;
  uint uVar3;
  byte *pbVar4;
  uint *puVar5;
  int iVar6;
  int iVar7;
  byte bVar9;
  uint extraout_v1;
  uint *puVar8;
  uint *puVar10;
  byte *pbVar11;
  undefined4 uVar12;
  uint *puVar13;
  uint uVar14;
  uint uVar15;
  uint in_t2;
  byte *pbVar16;
  uint in_t3;
  int iVar17;
  uint *puVar18;
  byte *unaff_s0;
  uint uVar19;
  byte *pbVar20;
  uint unaff_s1;
  byte bVar22;
  int *piVar21;
  uint unaff_s2;
  uint uVar23;
  uint unaff_s3;
  uint *puVar24;
  int iVar25;
  byte *pbVar26;
  undefined *puVar27;
  code *pcVar28;
  undefined8 uVar29;
  uint *puStack_74;
  uint auStack_64 [2];
  int iStack_5c;
  byte *pbStack_58;
  uint uStack_54;
  uint uStack_50;
  
  uVar14 = param_1[0x6c];
  bVar9 = *(byte *)((int)param_1 + 0x207);
  uVar3 = (uint)bVar9;
  if (uVar3 == 0) {
LAB_00030084:
    (*(code *)PTR_png_error_0005340c)();
    uVar3 = extraout_v1;
    goto LAB_00030094;
  }
  pbVar11 = (byte *)(param_1[0x75] + 1);
  if (param_1[0x78] == 0) {
LAB_0002fb8c:
    uVar15 = uVar3 * uVar14;
    if (uVar14 == 0) {
      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);
      goto LAB_00030084;
    }
    uVar23 = uVar15 & 7;
    bVar22 = 0;
    if (uVar23 == 0) {
      unaff_s0 = (byte *)0x0;
      unaff_s2 = 0;
LAB_0002fc38:
      bVar1 = *(byte *)(param_1 + 0x7f);
    }
    else {
      if (uVar3 < 8) {
        uVar19 = uVar15 + 7 >> 3;
      }
      else {
        uVar19 = (bVar9 >> 3) * uVar14;
      }
      unaff_s0 = param_2 + (uVar19 - 1);
      bVar22 = *unaff_s0;
      if (-1 < (int)(param_1[0x4b] << 0xf)) {
        unaff_s2 = 0xff >> uVar23;
        goto LAB_0002fc38;
      }
      unaff_s2 = 0xff << uVar23;
      bVar1 = *(byte *)(param_1 + 0x7f);
    }
    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {
      bVar1 = *(byte *)((int)param_1 + 0x1fd);
      in_t3 = (uint)bVar1;
      if ((in_t3 < 6) &&
         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {
        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;
        if (uVar14 <= in_t2) {
          return;
        }
        if (uVar3 < 8) {
          if (uVar3 == 0) {
            trap(7);
          }
          iVar7 = 1;
          if ((int)(param_1[0x4b] << 0xf) < 0) {
            if (param_3 == (byte *)0x0) {
              iVar7 = 0;
              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {
                iVar7 = 1;
              }
              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);
            }
            else {
              if (uVar3 == 1) {
                iVar7 = 0;
              }
              else if (uVar3 != 2) {
                iVar7 = 2;
              }
              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);
            }
          }
          else if (param_3 == (byte *)0x0) {
            iVar7 = 0;
            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {
              iVar7 = 1;
            }
            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);
          }
          else {
            if (uVar3 == 1) {
              iVar7 = 0;
            }
            else if (uVar3 != 2) {
              iVar7 = 2;
            }
            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)
            ;
          }
          while( true ) {
            if ((uVar15 & 0xff) != 0) {
              if ((uVar15 & 0xff) == 0xff) {
                *param_2 = *pbVar11;
              }
              else {
                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;
              }
            }
            bVar2 = uVar14 <= 8 / uVar3;
            uVar14 = uVar14 - 8 / uVar3;
            if (bVar2) break;
            param_2 = param_2 + 1;
            pbVar11 = pbVar11 + 1;
            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;
          }
          goto LAB_0002fbfc;
        }
        goto LAB_0002fd9c;
      }
    }
    if (uVar3 < 8) {
      uVar14 = uVar15 + 7 >> 3;
    }
    else {
      uVar14 = (bVar9 >> 3) * uVar14;
    }
    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);
LAB_0002fbfc:
    if (unaff_s0 != (byte *)0x0) {
      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;
    }
    return;
  }
  if (uVar3 < 8) {
    uVar15 = uVar3 * uVar14 + 7 >> 3;
  }
  else {
    uVar15 = (bVar9 >> 3) * uVar14;
  }
  if (param_1[0x78] == uVar15) goto LAB_0002fb8c;
  pbVar11 = PTR_s_nt_0005301c + 0xb58;
  uVar29 = (*(code *)PTR_png_error_0005340c)(param_1);
  uVar3 = (uint)((ulonglong)uVar29 >> 0x20);
  param_1 = (uint *)uVar29;
LAB_0002fd9c:
  uVar15 = uVar3 >> 3;
  if ((uVar3 & 7) == 0) {
    iVar7 = in_t2 * uVar15;
    param_2 = param_2 + iVar7;
    unaff_s3 = uVar14 * uVar15 - iVar7;
    unaff_s0 = pbVar11 + iVar7;
    unaff_s2 = uVar15;
    if ((param_3 != (byte *)0x0) &&
       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {
      unaff_s2 = unaff_s3;
    }
    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);
    if (unaff_s2 == 2) {
      do {
        *param_2 = *unaff_s0;
        param_2[1] = unaff_s0[1];
        if (unaff_s3 <= unaff_s1) {
          return;
        }
        unaff_s3 = unaff_s3 - unaff_s1;
        unaff_s0 = unaff_s0 + unaff_s1;
        param_2 = param_2 + unaff_s1;
      } while (1 < unaff_s3);
      *param_2 = *unaff_s0;
      return;
    }
    if (unaff_s2 == 3) {
      bVar9 = *unaff_s0;
      while( true ) {
        *param_2 = bVar9;
        param_2[1] = unaff_s0[1];
        param_2[2] = unaff_s0[2];
        if (unaff_s3 <= unaff_s1) break;
        unaff_s0 = unaff_s0 + unaff_s1;
        unaff_s3 = unaff_s3 - unaff_s1;
        param_2 = param_2 + unaff_s1;
        bVar9 = *unaff_s0;
      }
      return;
    }
    if (unaff_s2 == 1) {
      *param_2 = *unaff_s0;
      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {
        unaff_s0 = unaff_s0 + unaff_s1;
        param_2 = param_2 + unaff_s1;
        *param_2 = *unaff_s0;
      }
      return;
    }
    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||
       (((unaff_s2 | unaff_s1) & 1) != 0)) {
      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)
      {
        unaff_s3 = unaff_s3 - unaff_s1;
        unaff_s0 = unaff_s0 + unaff_s1;
        if (unaff_s3 < unaff_s2) {
          unaff_s2 = unaff_s3;
        }
        param_2 = (byte *)(iVar7 + unaff_s1);
      }
      return;
    }
    uVar3 = unaff_s1 - unaff_s2;
    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {
      pbVar11 = param_2;
      while( true ) {
        do {
          pbVar20 = unaff_s0 + 2;
          pbVar4 = param_2 + 2;
          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;
          param_2 = pbVar4;
          unaff_s0 = pbVar20;
        } while (pbVar4 + -unaff_s2 != pbVar11);
        bVar2 = unaff_s3 <= unaff_s1;
        unaff_s3 = unaff_s3 - unaff_s1;
        if (bVar2) break;
        param_2 = pbVar4 + (uVar3 & 0xfffffffe);
        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);
        pbVar11 = param_2;
        if (unaff_s3 < unaff_s2) {
          do {
            pbVar4 = pbVar11 + 1;
            *pbVar11 = *unaff_s0;
            pbVar11 = pbVar4;
            unaff_s0 = unaff_s0 + 1;
          } while (param_2 + unaff_s3 != pbVar4);
          return;
        }
      }
      return;
    }
LAB_00030094:
    pbVar11 = param_2;
    while( true ) {
      do {
        pbVar4 = param_2 + 4;
        uVar12 = *(undefined4 *)unaff_s0;
        unaff_s0 = unaff_s0 + 4;
        *(undefined4 *)param_2 = uVar12;
        param_2 = pbVar4;
      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);
      bVar2 = unaff_s3 <= unaff_s1;
      unaff_s3 = unaff_s3 - unaff_s1;
      if (bVar2) break;
      param_2 = pbVar4 + (uVar3 & 0xfffffffc);
      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);
      uVar14 = 0;
      pbVar11 = param_2;
      if (unaff_s3 < unaff_s2) {
        do {
          pbVar4 = unaff_s0 + uVar14;
          pbVar11 = param_2 + uVar14;
          uVar14 = uVar14 + 1;
          *pbVar11 = *pbVar4;
        } while (uVar14 != unaff_s3);
        return;
      }
    }
    return;
  }
  puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98);
  puVar27 = PTR_png_error_0005340c;
  (*(code *)PTR_png_error_0005340c)();
  piVar21 = *(int **)(puVar27 + 0x233b0);
  iStack_5c = *piVar21;
  puVar10 = param_1;
  pbStack_58 = unaff_s0;
  uStack_54 = uVar15;
  uStack_50 = unaff_s2;
  if ((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)) goto LAB_00030268;
  uVar3 = *param_1;
  uVar15 = (uint)*(byte *)((int)param_1 + 0xb);
  uVar23 = uVar3 - 1;
  param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40);
  iVar7 = *(int *)param_3;
  puVar5 = (uint *)(uVar3 * iVar7);
  pbVar11 = (byte *)((int)puVar5 + -1);
  if (uVar15 == 2) {
    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));
    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));
    puVar13 = (uint *)(uVar3 + 3);
    if ((uVar14 & 0x10000) == 0) {
      puVar24 = (uint *)(~(uint)puVar13 << 1);
      uVar23 = ~(uint)((int)puVar5 + 3) << 1;
      iVar17 = 2;
      pbVar20 = &DAT_00000006;
      pbVar11 = (byte *)0x0;
    }
    else {
      puVar13 = (uint *)((int)puVar13 * 2);
      uVar23 = (int)((int)puVar5 + 3) * 2;
      iVar17 = -2;
      pbVar20 = (byte *)0x0;
      pbVar11 = &DAT_00000006;
      puVar24 = puVar13;
    }
    pbVar26 = (byte *)((uint)puVar24 & 6);
    param_3 = (byte *)(uVar23 & 6);
    uVar23 = 0;
    if (uVar3 != 0) {
      do {
        bVar9 = *pbVar4;
        if (0 < iVar7) {
          iVar25 = 0;
          do {
            while( true ) {
              iVar6 = iVar25;
              uVar14 = (uint)*(byte *)puVar10;
              *(byte *)puVar10 =
                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<
                         ((uint)param_3 & 0x1f)) |
                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;
              if (pbVar20 != param_3) break;
              puVar10 = (uint *)((int)puVar10 + -1);
              iVar25 = iVar6 + 1;
              param_3 = pbVar11;
              if (iVar6 + 1 == iVar7) goto LAB_0003051c;
            }
            param_3 = param_3 + iVar17;
            iVar25 = iVar6 + 1;
          } while (iVar6 + 1 != iVar7);
LAB_0003051c:
          puVar13 = (uint *)(iVar6 + 1);
          uVar3 = *param_1;
        }
        if (pbVar20 == pbVar26) {
          pbVar4 = pbVar4 + -1;
          pbVar26 = pbVar11;
        }
        else {
          pbVar26 = pbVar26 + iVar17;
        }
        uVar23 = uVar23 + 1;
      } while (uVar23 < uVar3);
      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);
      goto LAB_0003024c;
    }
LAB_000302a4:
    *param_1 = (uint)puVar5;
  }
  else {
    if (uVar15 == 4) {
      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));
      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));
      if ((uVar14 & 0x10000) == 0) {
        puVar10 = (uint *)(uVar3 + 1 & 1);
        pbVar20 = &DAT_00000004;
        if (puVar10 != (uint *)0x0) {
          pbVar20 = (byte *)0x0;
        }
        if (((uint)((int)puVar5 + 1) & 1) == 0) {
          iVar17 = 4;
          pbVar16 = &DAT_00000004;
          param_3 = &DAT_00000004;
          pbVar26 = (byte *)0x0;
        }
        else {
          pbVar26 = (byte *)0x0;
          iVar17 = 4;
          pbVar16 = &DAT_00000004;
          param_3 = (byte *)0x0;
        }
      }
      else {
        puVar10 = (uint *)((uVar3 + 1) * 4);
        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);
        iVar17 = -4;
        pbVar16 = (byte *)0x0;
        pbVar26 = &DAT_00000004;
        pbVar20 = (byte *)((uint)puVar10 & 4);
      }
      uVar23 = 0;
      puVar13 = puVar5;
      if (uVar3 == 0) goto LAB_000302a4;
      do {
        bVar9 = *pbVar4;
        if (0 < iVar7) {
          iVar25 = 0;
          do {
            while( true ) {
              iVar6 = iVar25;
              uVar14 = (uint)*pbVar11;
              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<
                               ((uint)param_3 & 0x1f)) |
                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;
              if (pbVar16 != param_3) break;
              pbVar11 = pbVar11 + -1;
              iVar25 = iVar6 + 1;
              param_3 = pbVar26;
              if (iVar6 + 1 == iVar7) goto LAB_00030440;
            }
            param_3 = param_3 + iVar17;
            iVar25 = iVar6 + 1;
          } while (iVar6 + 1 != iVar7);
LAB_00030440:
          puVar13 = (uint *)(iVar6 + 1);
          uVar3 = *param_1;
        }
        if (pbVar16 == pbVar20) {
          pbVar4 = pbVar4 + -1;
          pbVar20 = pbVar26;
        }
        else {
          pbVar20 = pbVar20 + iVar17;
        }
        uVar23 = uVar23 + 1;
      } while (uVar23 < uVar3);
      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);
      puVar10 = (uint *)0x0;
    }
    else {
      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);
      if (uVar15 == 1) {
        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));
        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));
        uVar23 = uVar3 + 7;
        pbVar11 = (byte *)((int)puVar5 + 7);
        if ((uVar14 & 0x10000) == 0) {
          uVar23 = ~uVar23;
          pbVar11 = (byte *)~(uint)pbVar11;
          iVar17 = 1;
          puVar8 = (uint *)&DAT_00000007;
          puVar24 = (uint *)0x0;
        }
        else {
          iVar17 = -1;
          puVar8 = (uint *)0x0;
          puVar24 = (uint *)&DAT_00000007;
        }
        puVar18 = (uint *)(uVar23 & 7);
        puVar10 = (uint *)((uint)pbVar11 & 7);
        uVar23 = 0;
        if (uVar3 == 0) goto LAB_000302a4;
        do {
          bVar9 = *pbVar4;
          if (0 < iVar7) {
            iVar25 = 0;
            do {
              while( true ) {
                iVar6 = iVar25;
                uVar14 = (uint)*param_3;
                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<
                                 ((uint)puVar10 & 0x1f)) |
                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;
                if (puVar8 != puVar10) break;
                param_3 = param_3 + -1;
                puVar10 = puVar24;
                iVar25 = iVar6 + 1;
                if (iVar6 + 1 == iVar7) goto LAB_00030364;
              }
              puVar10 = (uint *)((int)puVar10 + iVar17);
              iVar25 = iVar6 + 1;
            } while (iVar6 + 1 != iVar7);
LAB_00030364:
            puVar13 = (uint *)(iVar6 + 1);
            uVar3 = *param_1;
          }
          if (puVar8 == puVar18) {
            pbVar4 = pbVar4 + -1;
            puVar18 = puVar24;
          }
          else {
            puVar18 = (uint *)((int)puVar18 + iVar17);
          }
          uVar23 = uVar23 + 1;
        } while (uVar23 < uVar3);
        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);
      }
      else {
        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);
        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);
        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);
        if (uVar3 != 0) {
          iVar17 = -(int)pbVar4;
          uVar3 = 0;
          do {
            uVar14 = 8;
            puVar10 = auStack_64;
            puVar13 = puVar24;
            param_3 = pbVar4;
            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);
            if (0 < iVar7) {
              iVar25 = 0;
              puVar8 = puStack_74;
              do {
                iVar25 = iVar25 + 1;
                puVar10 = puVar8;
                puVar13 = auStack_64;
                param_3 = pbVar4;
                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);
                puVar8 = (uint *)(iVar6 + iVar17);
              } while (iVar25 != iVar7);
              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);
            }
            uVar3 = uVar3 + 1;
            puVar24 = (uint *)((int)puVar24 + iVar17);
          } while (uVar3 < *param_1);
          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);
        }
      }
    }
LAB_0003024c:
    *param_1 = (uint)puVar5;
    if (7 < uVar15) {
      param_1[1] = (uVar15 >> 3) * (int)puVar5;
      goto LAB_00030268;
    }
  }
  param_1[1] = uVar15 * (int)puVar5 + 7 >> 3;
LAB_00030268:
  if (iStack_5c == *piVar21) {
    return;
  }
  pcVar28 = *(code **)(puVar27 + 0x23378);
  (*pcVar28)();
  if (puVar27 + 0x2aee3 < &DAT_00000004) {
    if (puVar10[0xe2] == 0) {
      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;
      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;
      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;
      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {
        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;
      }
      else {
        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;
      }
    }
                    /* WARNING: Could not recover jumptable at 0x00030614. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);
    return;
  }
  return;
}


lui gp,0x3
addiu gp,gp,-0x4b34
addu gp,gp,t9
addiu sp,sp,-0x30
lw a3,0x1b0(a0)
or t0,a1,zero
lw a1,0x1d4(a0)
sw gp,0x10(sp)
sw ra,0x2c(sp)
sw s3,0x28(sp)
sw s2,0x24(sp)
sw s1,0x20(sp)
sw s0,0x1c(sp)
lbu v0,0x207(a0)
beq v0,zero,0x00030084
_or v1,a0,zero
lw a0,0x1e0(a0)
beq a0,zero,0x0002fb8c
_addiu a1,a1,0x1
sltiu t1,v0,0x8
bne t1,zero,0x0002fd50
_mul t1,v0,a3
srl t1,v0,0x3
mul t1,t1,a3
bne a0,t1,0x0002fd8c
_or a0,v1,zero
beq a3,zero,0x00030070
_mul a0,v0,a3
andi s2,a0,0x7
beq s2,zero,0x0002fc34
_or s1,zero,zero
sltiu t1,v0,0x8
bne t1,zero,0x0002fd68
_addiu s0,a0,0x7
srl s0,v0,0x3
mul s0,s0,a3
addiu s0,s0,-0x1
lw t1,0x12c(v1)
addu s0,t0,s0
ext t1,t1,0x10,0x1
beq t1,zero,0x0002fd5c
_lbu s1,0x0(s0)
li t1,0xff
sllv s2,t1,s2
lbu t1,0x1fc(v1)
bne t1,zero,0x0002fc44
_nop
sltiu v1,v0,0x8
bne v1,zero,0x0002fd44
_srl v0,v0,0x3
mul a2,v0,a3
lw t9,-0x7b2c(gp)
jalr t9
_or a0,t0,zero
beq s0,zero,0x0002fc1c
_lw ra,0x2c(sp)
lbu v1,0x0(s0)
xor v0,v1,s1
and v0,v0,s2
xor v0,v1,v0
sb v0,0x0(s0)
lw ra,0x2c(sp)
lw s3,0x28(sp)
lw s2,0x24(sp)
lw s1,0x20(sp)
lw s0,0x1c(sp)
jr ra
_addiu sp,sp,0x30
or s0,zero,zero
lbu t1,0x1fc(v1)
beq t1,zero,0x0002fbe0
_nop
lw t1,0x12c(v1)
andi t2,t1,0x2
beq t2,zero,0x0002fbe0
_nop
lbu t3,0x1fd(v1)
sltiu t2,t3,0x6
beq t2,zero,0x0002fbe0
_nop
bne a2,zero,0x0002fd74
_li t2,0x1
andi t2,t3,0x1
addiu a0,t3,0x1
srl t4,a0,0x1
li a0,0x3
subu a0,a0,t4
sllv t2,t2,a0
andi t2,t2,0x7
sltu a0,t2,a3
beq a0,zero,0x0002fc1c
_lw ra,0x2c(sp)
sltiu a0,v0,0x8
beq a0,zero,0x0002fd9c
_ext t1,t1,0x10,0x1
li t2,0x8
teq v0,zero
divu t2,v0
li v1,0x1
beq t1,zero,0x0002fea0
_mflo t2
beq a2,zero,0x0002feec
_nop
beq v0,v1,0x0002ffe4
_li a0,0x2
xori v0,v0,0x2
movn v1,a0,v0
sll v0,v1,0x1
srl t3,t3,0x1
addu v0,v0,v1
lw v1,-0x7fd4(gp)
addu v0,v0,t3
addiu v1,v1,0xdec
sll v0,v0,0x2
addu v0,v0,v1
lw v0,0x0(v0)
b 0x0002fd28
_li t1,0xff
lbu v1,0x0(t0)
xor a0,v1,a0
and v0,a0,v0
xor v0,v1,v0
sb v0,0x0(t0)
sltu v0,t2,a3
beq v0,zero,0x0002fbfc
_subu a3,a3,t2
addiu t0,t0,0x1
addiu a1,a1,0x1
or v0,a2,zero
andi v1,v0,0xff
beq v1,zero,0x0002fd10
_rotr a2,v0,0x8
bne v1,t1,0x0002fcfc
_lbu a0,0x0(a1)
b 0x0002fd10
_sb a0,0x0(t0)
addiu v0,a0,0x7
b 0x0002fbf0
_srl a2,v0,0x3
addiu t1,t1,0x7
b 0x0002fb84
_srl t1,t1,0x3
li t1,0xff
b 0x0002fc38
_srav s2,t1,s2
srl s0,s0,0x3
b 0x0002fbb8
_addiu s0,s0,-0x1
bne a2,t2,0x0002fbe0
_andi t2,t3,0x1
beq t2,zero,0x0002fbe0
_nop
b 0x0002fc74
_addiu a0,t3,0x1
lw a1,-0x7fd4(gp)
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,0xb58
andi a0,v0,0x7
bne a0,zero,0x000300f8
_srl s1,v0,0x3
mul t2,t2,s1
mul v0,a3,s1
addu t0,t0,t2
subu s3,v0,t2
beq a2,zero,0x0002fee4
_addu s0,a1,t2
li v0,0x6
subu v0,v0,t3
srl v0,v0,0x1
sllv v0,s1,v0
sltu s2,s3,v0
movn v0,s3,s2
or s2,v0,zero
li v1,0x7
li v0,0x2
subu t3,v1,t3
srl t3,t3,0x1
beq s2,v0,0x0002fe68
_sllv s1,s1,t3
li v0,0x3
beq s2,v0,0x0002ff60
_nop
li v0,0x1
beq s2,v0,0x0002ff2c
_sltiu v0,s2,0x10
beq v0,zero,0x0002fe3c
_or v0,t0,s0
andi v1,v0,0x1
bne v1,zero,0x0002fe40
_or a0,t0,zero
b 0x0002fff4
_or v1,s2,s1
subu s3,s3,s1
addu s0,s0,s1
sltu v0,s3,s2
movn s2,s3,v0
addu t0,t0,s1
or a0,t0,zero
lw t9,-0x7b2c(gp)
or a2,s2,zero
jalr t9
_or a1,s0,zero
or t0,v0,zero
sltu v0,s1,s3
bne v0,zero,0x0002fe28
_lw gp,0x10(sp)
b 0x0002fc1c
_lw ra,0x2c(sp)
lbu v1,0x0(s0)
sltu v0,s1,s3
sb v1,0x0(t0)
lbu v1,0x1(s0)
beq v0,zero,0x0002fc18
_sb v1,0x1(t0)
subu s3,s3,s1
addu s0,s0,s1
sltiu v0,s3,0x2
beq v0,zero,0x0002fe68
_addu t0,t0,s1
lbu v0,0x0(s0)
b 0x0002fc18
_sb v0,0x0(t0)
beq a2,zero,0x0002ffa0
_nop
beq v0,v1,0x0002ffec
_li a0,0x2
xori v0,v0,0x2
movn v1,a0,v0
sll v0,v1,0x1
srl t3,t3,0x1
addu v0,v0,v1
lw v1,-0x7fd4(gp)
addu v0,v0,t3
addiu v1,v1,0xdec
addiu v0,v0,0x9
sll v0,v0,0x2
addu v0,v0,v1
b 0x0002fcf4
_lw v0,0x0(v0)
b 0x0002fddc
_or s2,s1,zero
beq v0,v1,0x0002ff04
_nop
xori a2,v0,0x2
li v0,0x2
movz v0,v1,a2
or a2,v0,zero
sll v0,a2,0x1
lw v1,-0x7fd4(gp)
addu v0,v0,a2
addiu v1,v1,0xd5c
sll v0,v0,0x1
addu v0,v0,t3
sll v0,v0,0x2
addu v0,v0,v1
b 0x0002fcf4
_lw v0,0x0(v0)
lbu v1,0x0(s0)
sltu v0,s1,s3
beq v0,zero,0x0002fc18
_sb v1,0x0(t0)
addu s0,s0,s1
addu t0,t0,s1
subu s3,s3,s1
lbu v1,0x0(s0)
sltu v0,s1,s3
bne v0,zero,0x0002ff3c
_sb v1,0x0(t0)
b 0x0002fc1c
_lw ra,0x2c(sp)
lbu v1,0x0(s0)
b 0x0002ff80
_sltu v0,s1,s3
addu s0,s0,s1
subu s3,s3,s1
addu t0,t0,s1
lbu v1,0x0(s0)
sltu v0,s1,s3
sb v1,0x0(t0)
lbu v1,0x1(s0)
sb v1,0x1(t0)
lbu v1,0x2(s0)
bne v0,zero,0x0002ff6c
_sb v1,0x2(t0)
b 0x0002fc1c
_lw ra,0x2c(sp)
beq v0,v1,0x0002ffb8
_nop
xori a2,v0,0x2
li v0,0x2
movz v0,v1,a2
or a2,v0,zero
sll v0,a2,0x1
lw v1,-0x7fd4(gp)
addu v0,v0,a2
addiu v1,v1,0xd5c
sll v0,v0,0x1
addu v0,v0,t3
addiu v0,v0,0x12
sll v0,v0,0x2
addu v0,v0,v1
b 0x0002fcf4
_lw v0,0x0(v0)
b 0x0002fcd0
_or v1,zero,zero
b 0x0002feb8
_or v1,zero,zero
andi a0,v1,0x1
bne a0,zero,0x0002fe40
_or a0,t0,zero
or v0,v0,v1
andi v0,v0,0x3
beq v0,zero,0x00030094
_subu v1,s1,s2
li a1,-0x2
and a1,v1,a1
or v0,t0,zero
addiu s0,s0,0x2
lhu a0,-0x2(s0)
addiu v0,v0,0x2
subu v1,v0,s2
bne v1,t0,0x0003001c
_sh a0,-0x2(v0)
sltu v1,s1,s3
beq v1,zero,0x0002fc18
_subu s3,s3,s1
addu t0,v0,a1
sltu v0,s3,s2
beq v0,zero,0x00030018
_addu s0,s0,a1
addu v0,t0,s3
addiu s0,s0,0x1
lbu v1,-0x1(s0)
addiu t0,t0,0x1
bne v0,t0,0x00030054
_sb v1,-0x1(t0)
b 0x0002fc1c
_lw ra,0x2c(sp)
lw a1,-0x7fd4(gp)
or a0,v1,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,0xb7c
lw a1,-0x7fd4(gp)
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,0xb3c
li v0,-0x4
and v1,v1,v0
or a0,t0,zero
addiu a0,a0,0x4
lw a1,0x0(s0)
addiu s0,s0,0x4
subu v0,s2,a0
addu v0,t0,v0
bne v0,zero,0x000300a0
_sw a1,-0x4(a0)
sltu a1,s1,s3
beq a1,zero,0x0002fc18
_subu s3,s3,s1
addu t0,a0,v1
sltu a0,s3,s2
beq a0,zero,0x0003009c
_addu s0,s0,v1
addu a0,s0,v0
addu v1,t0,v0
addiu v0,v0,0x1
lbu a0,0x0(a0)
bne v0,s3,0x000300d8
_sb a0,0x0(v1)
b 0x0002fc1c
_lw ra,0x2c(sp)
lw a1,-0x7fd4(gp)
or a0,v1,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,0xb98
(translation_unit "void FUN_0002fb24(uint *param_1,byte *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  byte bVar9;\n  uint extraout_v1;\n  uint *puVar8;\n  uint *puVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  uint uVar14;\n  uint uVar15;\n  uint in_t2;\n  byte *pbVar16;\n  uint in_t3;\n  int iVar17;\n  uint *puVar18;\n  byte *unaff_s0;\n  uint uVar19;\n  byte *pbVar20;\n  uint unaff_s1;\n  byte bVar22;\n  int *piVar21;\n  uint unaff_s2;\n  uint uVar23;\n  uint unaff_s3;\n  uint *puVar24;\n  int iVar25;\n  byte *pbVar26;\n  undefined *puVar27;\n  code *pcVar28;\n  undefined8 uVar29;\n  uint *puStack_74;\n  uint auStack_64 [2];\n  int iStack_5c;\n  byte *pbStack_58;\n  uint uStack_54;\n  uint uStack_50;\n  \n  uVar14 = param_1[0x6c];\n  bVar9 = *(byte *)((int)param_1 + 0x207);\n  uVar3 = (uint)bVar9;\n  if (uVar3 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }\n  pbVar11 = (byte *)(param_1[0x75] + 1);\n  if (param_1[0x78] == 0) {\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }\n  if (uVar3 < 8) {\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }\n  else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }\n  if (param_1[0x78] == uVar15) goto LAB_0002fb8c;\n  pbVar11 = PTR_s_nt_0005301c + 0xb58;\n  uVar29 = (*(code *)PTR_png_error_0005340c)(param_1);\n  uVar3 = (uint)((ulonglong)uVar29 >> 0x20);\n  param_1 = (uint *)uVar29;\nLAB_0002fd9c:\n  uVar15 = uVar3 >> 3;\n  if ((uVar3 & 7) == 0) {\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }\n  puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98);\n  puVar27 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)();\n  piVar21 = *(int **)(puVar27 + 0x233b0);\n  iStack_5c = *piVar21;\n  puVar10 = param_1;\n  pbStack_58 = unaff_s0;\n  uStack_54 = uVar15;\n  uStack_50 = unaff_s2;\n  if ((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)) goto LAB_00030268;\n  uVar3 = *param_1;\n  uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n  uVar23 = uVar3 - 1;\n  param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40);\n  iVar7 = *(int *)param_3;\n  puVar5 = (uint *)(uVar3 * iVar7);\n  pbVar11 = (byte *)((int)puVar5 + -1);\n  if (uVar15 == 2) {\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }\n  else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }\n  param_1[1] = uVar15 * (int)puVar5 + 7 >> 3;\nLAB_00030268:\n  if (iStack_5c == *piVar21) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar27 + 0x23378);\n  (*pcVar28)();\n  if (puVar27 + 0x2aee3 < &DAT_00000004) {\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    /* WARNING: Could not recover jumptable at 0x00030614. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0002fb24(uint *param_1,byte *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  byte bVar9;\n  uint extraout_v1;\n  uint *puVar8;\n  uint *puVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  uint uVar14;\n  uint uVar15;\n  uint in_t2;\n  byte *pbVar16;\n  uint in_t3;\n  int iVar17;\n  uint *puVar18;\n  byte *unaff_s0;\n  uint uVar19;\n  byte *pbVar20;\n  uint unaff_s1;\n  byte bVar22;\n  int *piVar21;\n  uint unaff_s2;\n  uint uVar23;\n  uint unaff_s3;\n  uint *puVar24;\n  int iVar25;\n  byte *pbVar26;\n  undefined *puVar27;\n  code *pcVar28;\n  undefined8 uVar29;\n  uint *puStack_74;\n  uint auStack_64 [2];\n  int iStack_5c;\n  byte *pbStack_58;\n  uint uStack_54;\n  uint uStack_50;\n  \n  uVar14 = param_1[0x6c];\n  bVar9 = *(byte *)((int)param_1 + 0x207);\n  uVar3 = (uint)bVar9;\n  if (uVar3 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }\n  pbVar11 = (byte *)(param_1[0x75] + 1);\n  if (param_1[0x78] == 0) {\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }\n  if (uVar3 < 8) {\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }\n  else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }\n  if (param_1[0x78] == uVar15) goto LAB_0002fb8c;\n  pbVar11 = PTR_s_nt_0005301c + 0xb58;\n  uVar29 = (*(code *)PTR_png_error_0005340c)(param_1);\n  uVar3 = (uint)((ulonglong)uVar29 >> 0x20);\n  param_1 = (uint *)uVar29;\nLAB_0002fd9c:\n  uVar15 = uVar3 >> 3;\n  if ((uVar3 & 7) == 0) {\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }\n  puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98);\n  puVar27 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)();\n  piVar21 = *(int **)(puVar27 + 0x233b0);\n  iStack_5c = *piVar21;\n  puVar10 = param_1;\n  pbStack_58 = unaff_s0;\n  uStack_54 = uVar15;\n  uStack_50 = unaff_s2;\n  if ((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)) goto LAB_00030268;\n  uVar3 = *param_1;\n  uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n  uVar23 = uVar3 - 1;\n  param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40);\n  iVar7 = *(int *)param_3;\n  puVar5 = (uint *)(uVar3 * iVar7);\n  pbVar11 = (byte *)((int)puVar5 + -1);\n  if (uVar15 == 2) {\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }\n  else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }\n  param_1[1] = uVar15 * (int)puVar5 + 7 >> 3;\nLAB_00030268:\n  if (iStack_5c == *piVar21) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar27 + 0x23378);\n  (*pcVar28)();\n  if (puVar27 + 0x2aee3 < &DAT_00000004) {\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    /* WARNING: Could not recover jumptable at 0x00030614. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0002fb24(uint *param_1,byte *param_2,byte *param_3)" identifier (parameter_list "(uint *param_1,byte *param_2,byte *param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  byte bVar9;\n  uint extraout_v1;\n  uint *puVar8;\n  uint *puVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  uint uVar14;\n  uint uVar15;\n  uint in_t2;\n  byte *pbVar16;\n  uint in_t3;\n  int iVar17;\n  uint *puVar18;\n  byte *unaff_s0;\n  uint uVar19;\n  byte *pbVar20;\n  uint unaff_s1;\n  byte bVar22;\n  int *piVar21;\n  uint unaff_s2;\n  uint uVar23;\n  uint unaff_s3;\n  uint *puVar24;\n  int iVar25;\n  byte *pbVar26;\n  undefined *puVar27;\n  code *pcVar28;\n  undefined8 uVar29;\n  uint *puStack_74;\n  uint auStack_64 [2];\n  int iStack_5c;\n  byte *pbStack_58;\n  uint uStack_54;\n  uint uStack_50;\n  \n  uVar14 = param_1[0x6c];\n  bVar9 = *(byte *)((int)param_1 + 0x207);\n  uVar3 = (uint)bVar9;\n  if (uVar3 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }\n  pbVar11 = (byte *)(param_1[0x75] + 1);\n  if (param_1[0x78] == 0) {\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }\n  if (uVar3 < 8) {\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }\n  else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }\n  if (param_1[0x78] == uVar15) goto LAB_0002fb8c;\n  pbVar11 = PTR_s_nt_0005301c + 0xb58;\n  uVar29 = (*(code *)PTR_png_error_0005340c)(param_1);\n  uVar3 = (uint)((ulonglong)uVar29 >> 0x20);\n  param_1 = (uint *)uVar29;\nLAB_0002fd9c:\n  uVar15 = uVar3 >> 3;\n  if ((uVar3 & 7) == 0) {\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }\n  puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98);\n  puVar27 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)();\n  piVar21 = *(int **)(puVar27 + 0x233b0);\n  iStack_5c = *piVar21;\n  puVar10 = param_1;\n  pbStack_58 = unaff_s0;\n  uStack_54 = uVar15;\n  uStack_50 = unaff_s2;\n  if ((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)) goto LAB_00030268;\n  uVar3 = *param_1;\n  uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n  uVar23 = uVar3 - 1;\n  param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40);\n  iVar7 = *(int *)param_3;\n  puVar5 = (uint *)(uVar3 * iVar7);\n  pbVar11 = (byte *)((int)puVar5 + -1);\n  if (uVar15 == 2) {\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }\n  else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }\n  param_1[1] = uVar15 * (int)puVar5 + 7 >> 3;\nLAB_00030268:\n  if (iStack_5c == *piVar21) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar27 + 0x23378);\n  (*pcVar28)();\n  if (puVar27 + 0x2aee3 < &DAT_00000004) {\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    /* WARNING: Could not recover jumptable at 0x00030614. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "uint extraout_v1;" type_identifier identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint in_t2;" type_identifier identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "uint in_t3;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "byte *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "byte *pbVar20;" type_identifier (pointer_declarator "*pbVar20" * identifier) ;) (declaration "uint unaff_s1;" type_identifier identifier ;) (declaration "byte bVar22;" type_identifier identifier ;) (declaration "int *piVar21;" primitive_type (pointer_declarator "*piVar21" * identifier) ;) (declaration "uint unaff_s2;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "uint unaff_s3;" type_identifier identifier ;) (declaration "uint *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "undefined *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "code *pcVar28;" type_identifier (pointer_declarator "*pcVar28" * identifier) ;) (declaration "undefined8 uVar29;" type_identifier identifier ;) (declaration "uint *puStack_74;" type_identifier (pointer_declarator "*puStack_74" * identifier) ;) (declaration "uint auStack_64 [2];" type_identifier (array_declarator "auStack_64 [2]" identifier [ number_literal ]) ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "byte *pbStack_58;" type_identifier (pointer_declarator "*pbStack_58" * identifier) ;) (declaration "uint uStack_54;" type_identifier identifier ;) (declaration "uint uStack_50;" type_identifier identifier ;) (expression_statement "uVar14 = param_1[0x6c];" (assignment_expression "uVar14 = param_1[0x6c]" identifier = (subscript_expression "param_1[0x6c]" identifier [ number_literal ])) ;) (expression_statement "bVar9 = *(byte *)((int)param_1 + 0x207);" (assignment_expression "bVar9 = *(byte *)((int)param_1 + 0x207)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x207)" * (cast_expression "(byte *)((int)param_1 + 0x207)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x207)" ( (binary_expression "(int)param_1 + 0x207" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar3 = (uint)bVar9;" (assignment_expression "uVar3 = (uint)bVar9" identifier = (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar3 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }" { (labeled_statement "LAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();" statement_identifier : (expression_statement "(*(code *)PTR_png_error_0005340c)();" (call_expression "(*(code *)PTR_png_error_0005340c)()" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;)) (expression_statement "uVar3 = extraout_v1;" (assignment_expression "uVar3 = extraout_v1" identifier = identifier) ;) (goto_statement "goto LAB_00030094;" goto statement_identifier ;) })) (expression_statement "pbVar11 = (byte *)(param_1[0x75] + 1);" (assignment_expression "pbVar11 = (byte *)(param_1[0x75] + 1)" identifier = (cast_expression "(byte *)(param_1[0x75] + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0x75] + 1)" ( (binary_expression "param_1[0x75] + 1" (subscript_expression "param_1[0x75]" identifier [ number_literal ]) + number_literal) )))) ;) (if_statement "if (param_1[0x78] == 0) {\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }" if (parenthesized_expression "(param_1[0x78] == 0)" ( (binary_expression "param_1[0x78] == 0" (subscript_expression "param_1[0x78]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }" { (labeled_statement "LAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;" statement_identifier : (expression_statement "uVar15 = uVar3 * uVar14;" (assignment_expression "uVar15 = uVar3 * uVar14" identifier = (binary_expression "uVar3 * uVar14" identifier * identifier)) ;)) (if_statement "if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }" { (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_s_nt_0005301c + 0xb7c)" ( identifier , (binary_expression "PTR_s_nt_0005301c + 0xb7c" identifier + number_literal) ))) ;) (goto_statement "goto LAB_00030084;" goto statement_identifier ;) })) (expression_statement "uVar23 = uVar15 & 7;" (assignment_expression "uVar23 = uVar15 & 7" identifier = (binary_expression "uVar15 & 7" identifier & number_literal)) ;) (expression_statement "bVar22 = 0;" (assignment_expression "bVar22 = 0" identifier = number_literal) ;) (if_statement "if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }" { (expression_statement "unaff_s0 = (byte *)0x0;" (assignment_expression "unaff_s0 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s2 = 0;" (assignment_expression "unaff_s2 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);" statement_identifier : (expression_statement "bVar1 = *(byte *)(param_1 + 0x7f);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x7f)" identifier = (pointer_expression "*(byte *)(param_1 + 0x7f)" * (cast_expression "(byte *)(param_1 + 0x7f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7f)" ( (binary_expression "param_1 + 0x7f" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }" else (compound_statement "{\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }" { (if_statement "if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }" if (parenthesized_expression "(uVar3 < 8)" ( (binary_expression "uVar3 < 8" identifier < number_literal) )) (compound_statement "{\n        uVar19 = uVar15 + 7 >> 3;\n      }" { (expression_statement "uVar19 = uVar15 + 7 >> 3;" (assignment_expression "uVar19 = uVar15 + 7 >> 3" identifier = (binary_expression "uVar15 + 7 >> 3" (binary_expression "uVar15 + 7" identifier + number_literal) >> number_literal)) ;) }) (else_clause "else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }" else (compound_statement "{\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }" { (expression_statement "uVar19 = (bVar9 >> 3) * uVar14;" (assignment_expression "uVar19 = (bVar9 >> 3) * uVar14" identifier = (binary_expression "(bVar9 >> 3) * uVar14" (parenthesized_expression "(bVar9 >> 3)" ( (binary_expression "bVar9 >> 3" identifier >> number_literal) )) * identifier)) ;) }))) (expression_statement "unaff_s0 = param_2 + (uVar19 - 1);" (assignment_expression "unaff_s0 = param_2 + (uVar19 - 1)" identifier = (binary_expression "param_2 + (uVar19 - 1)" identifier + (parenthesized_expression "(uVar19 - 1)" ( (binary_expression "uVar19 - 1" identifier - number_literal) )))) ;) (expression_statement "bVar22 = *unaff_s0;" (assignment_expression "bVar22 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;) (if_statement "if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }" if (parenthesized_expression "(-1 < (int)(param_1[0x4b] << 0xf))" ( (binary_expression "-1 < (int)(param_1[0x4b] << 0xf)" number_literal < (cast_expression "(int)(param_1[0x4b] << 0xf)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_1[0x4b] << 0xf)" ( (binary_expression "param_1[0x4b] << 0xf" (subscript_expression "param_1[0x4b]" identifier [ number_literal ]) << number_literal) )))) )) (compound_statement "{\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }" { (expression_statement "unaff_s2 = 0xff >> uVar23;" (assignment_expression "unaff_s2 = 0xff >> uVar23" identifier = (binary_expression "0xff >> uVar23" number_literal >> identifier)) ;) (goto_statement "goto LAB_0002fc38;" goto statement_identifier ;) })) (expression_statement "unaff_s2 = 0xff << uVar23;" (assignment_expression "unaff_s2 = 0xff << uVar23" identifier = (binary_expression "0xff << uVar23" number_literal << identifier)) ;) (expression_statement "bVar1 = *(byte *)(param_1 + 0x7f);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x7f)" identifier = (pointer_expression "*(byte *)(param_1 + 0x7f)" * (cast_expression "(byte *)(param_1 + 0x7f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7f)" ( (binary_expression "param_1 + 0x7f" identifier + number_literal) ))))) ;) }))) (if_statement "if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }" if (parenthesized_expression "((bVar1 != 0) && ((param_1[0x4b] & 2) != 0))" ( (binary_expression "(bVar1 != 0) && ((param_1[0x4b] & 2) != 0)" (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "((param_1[0x4b] & 2) != 0)" ( (binary_expression "(param_1[0x4b] & 2) != 0" (parenthesized_expression "(param_1[0x4b] & 2)" ( (binary_expression "param_1[0x4b] & 2" (subscript_expression "param_1[0x4b]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }" { (expression_statement "bVar1 = *(byte *)((int)param_1 + 0x1fd);" (assignment_expression "bVar1 = *(byte *)((int)param_1 + 0x1fd)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x1fd)" * (cast_expression "(byte *)((int)param_1 + 0x1fd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x1fd)" ( (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "in_t3 = (uint)bVar1;" (assignment_expression "in_t3 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }" if (parenthesized_expression "((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0))))))" ( (binary_expression "(in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))" (parenthesized_expression "(in_t3 < 6)" ( (binary_expression "in_t3 < 6" identifier < number_literal) )) && (parenthesized_expression "((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))" ( (parenthesized_expression "(param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0))))" ( (binary_expression "param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))" (binary_expression "param_3 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))" ( (parenthesized_expression "(param_3 == (byte *)0x1 && ((bVar1 & 1) != 0))" ( (binary_expression "param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)" (binary_expression "param_3 == (byte *)0x1" identifier == (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "((bVar1 & 1) != 0)" ( (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) != number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }" { (expression_statement "in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;" (assignment_expression "in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7" identifier = (binary_expression "(in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7" (binary_expression "(in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f)" (parenthesized_expression "(in_t3 & 1)" ( (binary_expression "in_t3 & 1" identifier & number_literal) )) << (parenthesized_expression "(3 - (in_t3 + 1 >> 1) & 0x1f)" ( (binary_expression "3 - (in_t3 + 1 >> 1) & 0x1f" (binary_expression "3 - (in_t3 + 1 >> 1)" number_literal - (parenthesized_expression "(in_t3 + 1 >> 1)" ( (binary_expression "in_t3 + 1 >> 1" (binary_expression "in_t3 + 1" identifier + number_literal) >> number_literal) ))) & number_literal) ))) & number_literal)) ;) (if_statement "if (uVar14 <= in_t2) {\n          return;\n        }" if (parenthesized_expression "(uVar14 <= in_t2)" ( (binary_expression "uVar14 <= in_t2" identifier <= identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (if_statement "if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }" if (parenthesized_expression "(uVar3 < 8)" ( (binary_expression "uVar3 < 8" identifier < number_literal) )) (compound_statement "{\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }" { (if_statement "if (uVar3 == 0) {\n            trap(7);\n          }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            trap(7);\n          }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (if_statement "if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" if (parenthesized_expression "((int)(param_1[0x4b] << 0xf) < 0)" ( (binary_expression "(int)(param_1[0x4b] << 0xf) < 0" (cast_expression "(int)(param_1[0x4b] << 0xf)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_1[0x4b] << 0xf)" ( (binary_expression "param_1[0x4b] << 0xf" (subscript_expression "param_1[0x4b]" identifier [ number_literal ]) << number_literal) ))) < number_literal) )) (compound_statement "{\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }" { (if_statement "if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }" if (parenthesized_expression "(param_3 == (byte *)0x0)" ( (binary_expression "param_3 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (if_statement "if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }" if (parenthesized_expression "((uVar3 != 1) && (iVar7 = 2, uVar3 == 2))" ( (binary_expression "(uVar3 != 1) && (iVar7 = 2, uVar3 == 2)" (parenthesized_expression "(uVar3 != 1)" ( (binary_expression "uVar3 != 1" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = 2, uVar3 == 2)" ( (comma_expression "iVar7 = 2, uVar3 == 2" (assignment_expression "iVar7 = 2" identifier = number_literal) , (binary_expression "uVar3 == 2" identifier == number_literal)) ))) )) (compound_statement "{\n                iVar7 = 1;\n              }" { (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) })) (expression_statement "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);" (assignment_expression "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c)" identifier = (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c)" * (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c)" ( (binary_expression "PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c" (binary_expression "PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4" identifier + (binary_expression "(iVar7 * 6 + in_t3) * 4" (parenthesized_expression "(iVar7 * 6 + in_t3)" ( (binary_expression "iVar7 * 6 + in_t3" (binary_expression "iVar7 * 6" identifier * number_literal) + identifier) )) * number_literal)) + number_literal) ))))) ;) }) (else_clause "else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }" else (compound_statement "{\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }" { (if_statement "if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }" if (parenthesized_expression "(uVar3 == 1)" ( (binary_expression "uVar3 == 1" identifier == number_literal) )) (compound_statement "{\n                iVar7 = 0;\n              }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) }) (else_clause "else if (uVar3 != 2) {\n                iVar7 = 2;\n              }" else (if_statement "if (uVar3 != 2) {\n                iVar7 = 2;\n              }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n                iVar7 = 2;\n              }" { (expression_statement "iVar7 = 2;" (assignment_expression "iVar7 = 2" identifier = number_literal) ;) })))) (expression_statement "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);" (assignment_expression "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec)" identifier = (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec)" * (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec)" ( (binary_expression "PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec" (binary_expression "PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4" identifier + (binary_expression "(iVar7 * 3 + (uint)(bVar1 >> 1)) * 4" (parenthesized_expression "(iVar7 * 3 + (uint)(bVar1 >> 1))" ( (binary_expression "iVar7 * 3 + (uint)(bVar1 >> 1)" (binary_expression "iVar7 * 3" identifier * number_literal) + (call_expression "(uint)(bVar1 >> 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> 1)" ( (binary_expression "bVar1 >> 1" identifier >> number_literal) )))) )) * number_literal)) + number_literal) ))))) ;) }))) }) (else_clause "else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" else (if_statement "if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" if (parenthesized_expression "(param_3 == (byte *)0x0)" ( (binary_expression "param_3 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (if_statement "if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }" if (parenthesized_expression "((uVar3 != 1) && (iVar7 = 2, uVar3 == 2))" ( (binary_expression "(uVar3 != 1) && (iVar7 = 2, uVar3 == 2)" (parenthesized_expression "(uVar3 != 1)" ( (binary_expression "uVar3 != 1" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = 2, uVar3 == 2)" ( (comma_expression "iVar7 = 2, uVar3 == 2" (assignment_expression "iVar7 = 2" identifier = number_literal) , (binary_expression "uVar3 == 2" identifier == number_literal)) ))) )) (compound_statement "{\n              iVar7 = 1;\n            }" { (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) })) (expression_statement "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);" (assignment_expression "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" identifier = (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" * (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" ( (binary_expression "PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c" (binary_expression "PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4" identifier + (binary_expression "(iVar7 * 6 + in_t3 + 0x12) * 4" (parenthesized_expression "(iVar7 * 6 + in_t3 + 0x12)" ( (binary_expression "iVar7 * 6 + in_t3 + 0x12" (binary_expression "iVar7 * 6 + in_t3" (binary_expression "iVar7 * 6" identifier * number_literal) + identifier) + number_literal) )) * number_literal)) + number_literal) ))))) ;) }) (else_clause "else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" else (compound_statement "{\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" { (if_statement "if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }" if (parenthesized_expression "(uVar3 == 1)" ( (binary_expression "uVar3 == 1" identifier == number_literal) )) (compound_statement "{\n              iVar7 = 0;\n            }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) }) (else_clause "else if (uVar3 != 2) {\n              iVar7 = 2;\n            }" else (if_statement "if (uVar3 != 2) {\n              iVar7 = 2;\n            }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n              iVar7 = 2;\n            }" { (expression_statement "iVar7 = 2;" (assignment_expression "iVar7 = 2" identifier = number_literal) ;) })))) (expression_statement "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;" (assignment_expression "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)" identifier = (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)" * (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)" ( (binary_expression "PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec" (binary_expression "PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4" identifier + (binary_expression "(iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4" (parenthesized_expression "(iVar7 * 3 + (uint)(bVar1 >> 1) + 9)" ( (binary_expression "iVar7 * 3 + (uint)(bVar1 >> 1) + 9" (binary_expression "iVar7 * 3 + (uint)(bVar1 >> 1)" (binary_expression "iVar7 * 3" identifier * number_literal) + (call_expression "(uint)(bVar1 >> 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> 1)" ( (binary_expression "bVar1 >> 1" identifier >> number_literal) )))) + number_literal) )) * number_literal)) + number_literal) ))))) ;) }))))) (while_statement "while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }" { (if_statement "if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }" if (parenthesized_expression "((uVar15 & 0xff) != 0)" ( (binary_expression "(uVar15 & 0xff) != 0" (parenthesized_expression "(uVar15 & 0xff)" ( (binary_expression "uVar15 & 0xff" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }" { (if_statement "if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }" if (parenthesized_expression "((uVar15 & 0xff) == 0xff)" ( (binary_expression "(uVar15 & 0xff) == 0xff" (parenthesized_expression "(uVar15 & 0xff)" ( (binary_expression "uVar15 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                *param_2 = *pbVar11;\n              }" { (expression_statement "*param_2 = *pbVar11;" (assignment_expression "*param_2 = *pbVar11" (pointer_expression "*param_2" * identifier) = (pointer_expression "*pbVar11" * identifier)) ;) }) (else_clause "else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }" else (compound_statement "{\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }" { (expression_statement "*param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;" (assignment_expression "*param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15" (pointer_expression "*param_2" * identifier) ^ (binary_expression "(*param_2 ^ *pbVar11) & (byte)uVar15" (parenthesized_expression "(*param_2 ^ *pbVar11)" ( (binary_expression "*param_2 ^ *pbVar11" (pointer_expression "*param_2" * identifier) ^ (pointer_expression "*pbVar11" * identifier)) )) & (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)))) ;) }))) })) (expression_statement "bVar2 = uVar14 <= 8 / uVar3;" (assignment_expression "bVar2 = uVar14 <= 8 / uVar3" identifier = (binary_expression "uVar14 <= 8 / uVar3" identifier <= (binary_expression "8 / uVar3" number_literal / identifier))) ;) (expression_statement "uVar14 = uVar14 - 8 / uVar3;" (assignment_expression "uVar14 = uVar14 - 8 / uVar3" identifier = (binary_expression "uVar14 - 8 / uVar3" identifier - (binary_expression "8 / uVar3" number_literal / identifier))) ;) (if_statement "if (bVar2) break;" if (parenthesized_expression "(bVar2)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;" (assignment_expression "uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000" identifier = (binary_expression "(uVar15 >> 8) + uVar15 * 0x1000000" (parenthesized_expression "(uVar15 >> 8)" ( (binary_expression "uVar15 >> 8" identifier >> number_literal) )) + (binary_expression "uVar15 * 0x1000000" identifier * number_literal))) ;) })) (goto_statement "goto LAB_0002fbfc;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002fd9c;" goto statement_identifier ;) })) })) (if_statement "if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }" if (parenthesized_expression "(uVar3 < 8)" ( (binary_expression "uVar3 < 8" identifier < number_literal) )) (compound_statement "{\n      uVar14 = uVar15 + 7 >> 3;\n    }" { (expression_statement "uVar14 = uVar15 + 7 >> 3;" (assignment_expression "uVar14 = uVar15 + 7 >> 3" identifier = (binary_expression "uVar15 + 7 >> 3" (binary_expression "uVar15 + 7" identifier + number_literal) >> number_literal)) ;) }) (else_clause "else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }" else (compound_statement "{\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }" { (expression_statement "uVar14 = (bVar9 >> 3) * uVar14;" (assignment_expression "uVar14 = (bVar9 >> 3) * uVar14" identifier = (binary_expression "(bVar9 >> 3) * uVar14" (parenthesized_expression "(bVar9 >> 3)" ( (binary_expression "bVar9 >> 3" identifier >> number_literal) )) * identifier)) ;) }))) (expression_statement "(*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);" (call_expression "(*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14)" (parenthesized_expression "(*(code *)PTR_memcpy_000534c4)" ( (pointer_expression "*(code *)PTR_memcpy_000534c4" * (cast_expression "(code *)PTR_memcpy_000534c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,pbVar11,uVar14)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }" statement_identifier : (if_statement "if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }" if (parenthesized_expression "(unaff_s0 != (byte *)0x0)" ( (binary_expression "unaff_s0 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }" { (expression_statement "*unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;" (assignment_expression "*unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2" (pointer_expression "*unaff_s0" * identifier) = (binary_expression "*unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2" (pointer_expression "*unaff_s0" * identifier) ^ (binary_expression "(*unaff_s0 ^ bVar22) & (byte)unaff_s2" (parenthesized_expression "(*unaff_s0 ^ bVar22)" ( (binary_expression "*unaff_s0 ^ bVar22" (pointer_expression "*unaff_s0" * identifier) ^ identifier) )) & (cast_expression "(byte)unaff_s2" ( (type_descriptor "byte" type_identifier) ) identifier)))) ;) }))) (return_statement "return;" return ;) })) (if_statement "if (uVar3 < 8) {\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }\n  else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }" if (parenthesized_expression "(uVar3 < 8)" ( (binary_expression "uVar3 < 8" identifier < number_literal) )) (compound_statement "{\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }" { (expression_statement "uVar15 = uVar3 * uVar14 + 7 >> 3;" (assignment_expression "uVar15 = uVar3 * uVar14 + 7 >> 3" identifier = (binary_expression "uVar3 * uVar14 + 7 >> 3" (binary_expression "uVar3 * uVar14 + 7" (binary_expression "uVar3 * uVar14" identifier * identifier) + number_literal) >> number_literal)) ;) }) (else_clause "else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }" else (compound_statement "{\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }" { (expression_statement "uVar15 = (bVar9 >> 3) * uVar14;" (assignment_expression "uVar15 = (bVar9 >> 3) * uVar14" identifier = (binary_expression "(bVar9 >> 3) * uVar14" (parenthesized_expression "(bVar9 >> 3)" ( (binary_expression "bVar9 >> 3" identifier >> number_literal) )) * identifier)) ;) }))) (if_statement "if (param_1[0x78] == uVar15) goto LAB_0002fb8c;" if (parenthesized_expression "(param_1[0x78] == uVar15)" ( (binary_expression "param_1[0x78] == uVar15" (subscript_expression "param_1[0x78]" identifier [ number_literal ]) == identifier) )) (goto_statement "goto LAB_0002fb8c;" goto statement_identifier ;)) (expression_statement "pbVar11 = PTR_s_nt_0005301c + 0xb58;" (assignment_expression "pbVar11 = PTR_s_nt_0005301c + 0xb58" identifier = (binary_expression "PTR_s_nt_0005301c + 0xb58" identifier + number_literal)) ;) (expression_statement "uVar29 = (*(code *)PTR_png_error_0005340c)(param_1);" (assignment_expression "uVar29 = (*(code *)PTR_png_error_0005340c)(param_1)" identifier = (call_expression "(*(code *)PTR_png_error_0005340c)(param_1)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar3 = (uint)((ulonglong)uVar29 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)uVar29 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar29 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar29 >> 0x20)" ( (binary_expression "(ulonglong)uVar29 >> 0x20" (cast_expression "(ulonglong)uVar29" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "param_1 = (uint *)uVar29;" (assignment_expression "param_1 = (uint *)uVar29" identifier = (cast_expression "(uint *)uVar29" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "LAB_0002fd9c:\n  uVar15 = uVar3 >> 3;" statement_identifier : (expression_statement "uVar15 = uVar3 >> 3;" (assignment_expression "uVar15 = uVar3 >> 3" identifier = (binary_expression "uVar3 >> 3" identifier >> number_literal)) ;)) (if_statement "if ((uVar3 & 7) == 0) {\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }" if (parenthesized_expression "((uVar3 & 7) == 0)" ( (binary_expression "(uVar3 & 7) == 0" (parenthesized_expression "(uVar3 & 7)" ( (binary_expression "uVar3 & 7" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }" { (expression_statement "iVar7 = in_t2 * uVar15;" (assignment_expression "iVar7 = in_t2 * uVar15" identifier = (binary_expression "in_t2 * uVar15" identifier * identifier)) ;) (expression_statement "param_2 = param_2 + iVar7;" (assignment_expression "param_2 = param_2 + iVar7" identifier = (binary_expression "param_2 + iVar7" identifier + identifier)) ;) (expression_statement "unaff_s3 = uVar14 * uVar15 - iVar7;" (assignment_expression "unaff_s3 = uVar14 * uVar15 - iVar7" identifier = (binary_expression "uVar14 * uVar15 - iVar7" (binary_expression "uVar14 * uVar15" identifier * identifier) - identifier)) ;) (expression_statement "unaff_s0 = pbVar11 + iVar7;" (assignment_expression "unaff_s0 = pbVar11 + iVar7" identifier = (binary_expression "pbVar11 + iVar7" identifier + identifier)) ;) (expression_statement "unaff_s2 = uVar15;" (assignment_expression "unaff_s2 = uVar15" identifier = identifier) ;) (if_statement "if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }" if (parenthesized_expression "((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2))" ( (binary_expression "(param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)" (parenthesized_expression "(param_3 != (byte *)0x0)" ( (binary_expression "param_3 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)" ( (comma_expression "unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2" (assignment_expression "unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f)" identifier = (binary_expression "uVar15 << (6 - in_t3 >> 1 & 0x1f)" identifier << (parenthesized_expression "(6 - in_t3 >> 1 & 0x1f)" ( (binary_expression "6 - in_t3 >> 1 & 0x1f" (binary_expression "6 - in_t3 >> 1" (binary_expression "6 - in_t3" number_literal - identifier) >> number_literal) & number_literal) )))) , (binary_expression "unaff_s3 < unaff_s2" identifier < identifier)) ))) )) (compound_statement "{\n      unaff_s2 = unaff_s3;\n    }" { (expression_statement "unaff_s2 = unaff_s3;" (assignment_expression "unaff_s2 = unaff_s3" identifier = identifier) ;) })) (expression_statement "unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);" (assignment_expression "unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f)" identifier = (binary_expression "uVar15 << (7 - in_t3 >> 1 & 0x1f)" identifier << (parenthesized_expression "(7 - in_t3 >> 1 & 0x1f)" ( (binary_expression "7 - in_t3 >> 1 & 0x1f" (binary_expression "7 - in_t3 >> 1" (binary_expression "7 - in_t3" number_literal - identifier) >> number_literal) & number_literal) )))) ;) (if_statement "if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }" if (parenthesized_expression "(unaff_s2 == 2)" ( (binary_expression "unaff_s2 == 2" identifier == number_literal) )) (compound_statement "{\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }" { (do_statement "do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);" do (compound_statement "{\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      }" { (expression_statement "*param_2 = *unaff_s0;" (assignment_expression "*param_2 = *unaff_s0" (pointer_expression "*param_2" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) (expression_statement "param_2[1] = unaff_s0[1];" (assignment_expression "param_2[1] = unaff_s0[1]" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[1]" identifier [ number_literal ])) ;) (if_statement "if (unaff_s3 <= unaff_s1) {\n          return;\n        }" if (parenthesized_expression "(unaff_s3 <= unaff_s1)" ( (binary_expression "unaff_s3 <= unaff_s1" identifier <= identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" identifier = (binary_expression "unaff_s0 + unaff_s1" identifier + identifier)) ;) (expression_statement "param_2 = param_2 + unaff_s1;" (assignment_expression "param_2 = param_2 + unaff_s1" identifier = (binary_expression "param_2 + unaff_s1" identifier + identifier)) ;) }) while (parenthesized_expression "(1 < unaff_s3)" ( (binary_expression "1 < unaff_s3" number_literal < identifier) )) ;) (expression_statement "*param_2 = *unaff_s0;" (assignment_expression "*param_2 = *unaff_s0" (pointer_expression "*param_2" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) (return_statement "return;" return ;) })) (if_statement "if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }" if (parenthesized_expression "(unaff_s2 == 3)" ( (binary_expression "unaff_s2 == 3" identifier == number_literal) )) (compound_statement "{\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }" { (expression_statement "bVar9 = *unaff_s0;" (assignment_expression "bVar9 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;) (while_statement "while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }" { (expression_statement "*param_2 = bVar9;" (assignment_expression "*param_2 = bVar9" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2[1] = unaff_s0[1];" (assignment_expression "param_2[1] = unaff_s0[1]" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[1]" identifier [ number_literal ])) ;) (expression_statement "param_2[2] = unaff_s0[2];" (assignment_expression "param_2[2] = unaff_s0[2]" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[2]" identifier [ number_literal ])) ;) (if_statement "if (unaff_s3 <= unaff_s1) break;" if (parenthesized_expression "(unaff_s3 <= unaff_s1)" ( (binary_expression "unaff_s3 <= unaff_s1" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" identifier = (binary_expression "unaff_s0 + unaff_s1" identifier + identifier)) ;) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (expression_statement "param_2 = param_2 + unaff_s1;" (assignment_expression "param_2 = param_2 + unaff_s1" identifier = (binary_expression "param_2 + unaff_s1" identifier + identifier)) ;) (expression_statement "bVar9 = *unaff_s0;" (assignment_expression "bVar9 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;) })) (return_statement "return;" return ;) })) (if_statement "if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }" if (parenthesized_expression "(unaff_s2 == 1)" ( (binary_expression "unaff_s2 == 1" identifier == number_literal) )) (compound_statement "{\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }" { (expression_statement "*param_2 = *unaff_s0;" (assignment_expression "*param_2 = *unaff_s0" (pointer_expression "*param_2" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) (for_statement "for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }" for ( ; (binary_expression "unaff_s1 < unaff_s3" identifier < identifier) ; (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ) (compound_statement "{\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }" { (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" identifier = (binary_expression "unaff_s0 + unaff_s1" identifier + identifier)) ;) (expression_statement "param_2 = param_2 + unaff_s1;" (assignment_expression "param_2 = param_2 + unaff_s1" identifier = (binary_expression "param_2 + unaff_s1" identifier + identifier)) ;) (expression_statement "*param_2 = *unaff_s0;" (assignment_expression "*param_2 = *unaff_s0" (pointer_expression "*param_2" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) })) (return_statement "return;" return ;) })) (if_statement "if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }" if (parenthesized_expression "(((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0))" ( (binary_expression "((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)" (parenthesized_expression "((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0))" ( (binary_expression "(0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)" (parenthesized_expression "(0xf < unaff_s2)" ( (binary_expression "0xf < unaff_s2" number_literal < identifier) )) || (parenthesized_expression "((((uint)param_2 | (uint)unaff_s0) & 1) != 0)" ( (binary_expression "(((uint)param_2 | (uint)unaff_s0) & 1) != 0" (parenthesized_expression "(((uint)param_2 | (uint)unaff_s0) & 1)" ( (binary_expression "((uint)param_2 | (uint)unaff_s0) & 1" (parenthesized_expression "((uint)param_2 | (uint)unaff_s0)" ( (binary_expression "(uint)param_2 | (uint)unaff_s0" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) | (cast_expression "(uint)unaff_s0" ( (type_descriptor "uint" type_identifier) ) identifier)) )) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(((unaff_s2 | unaff_s1) & 1) != 0)" ( (binary_expression "((unaff_s2 | unaff_s1) & 1) != 0" (parenthesized_expression "((unaff_s2 | unaff_s1) & 1)" ( (binary_expression "(unaff_s2 | unaff_s1) & 1" (parenthesized_expression "(unaff_s2 | unaff_s1)" ( (binary_expression "unaff_s2 | unaff_s1" identifier | identifier) )) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }" { (while_statement "while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }" while (parenthesized_expression "(iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)" ( (comma_expression "iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3" (assignment_expression "iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2)" identifier = (call_expression "(*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2)" (parenthesized_expression "(*(code *)PTR_memcpy_000534c4)" ( (pointer_expression "*(code *)PTR_memcpy_000534c4" * (cast_expression "(code *)PTR_memcpy_000534c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,unaff_s0,unaff_s2)" ( identifier , identifier , identifier )))) , (binary_expression "unaff_s1 < unaff_s3" identifier < identifier)) )) (compound_statement "{\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }" { (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" identifier = (binary_expression "unaff_s0 + unaff_s1" identifier + identifier)) ;) (if_statement "if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }" if (parenthesized_expression "(unaff_s3 < unaff_s2)" ( (binary_expression "unaff_s3 < unaff_s2" identifier < identifier) )) (compound_statement "{\n          unaff_s2 = unaff_s3;\n        }" { (expression_statement "unaff_s2 = unaff_s3;" (assignment_expression "unaff_s2 = unaff_s3" identifier = identifier) ;) })) (expression_statement "param_2 = (byte *)(iVar7 + unaff_s1);" (assignment_expression "param_2 = (byte *)(iVar7 + unaff_s1)" identifier = (cast_expression "(byte *)(iVar7 + unaff_s1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + unaff_s1)" ( (binary_expression "iVar7 + unaff_s1" identifier + identifier) )))) ;) })) (return_statement "return;" return ;) })) (expression_statement "uVar3 = unaff_s1 - unaff_s2;" (assignment_expression "uVar3 = unaff_s1 - unaff_s2" identifier = (binary_expression "unaff_s1 - unaff_s2" identifier - identifier)) ;) (if_statement "if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }" if (parenthesized_expression "((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0)" ( (binary_expression "(((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0" (parenthesized_expression "(((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3)" ( (binary_expression "((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3" (parenthesized_expression "((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1)" ( (binary_expression "(uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1" (binary_expression "(uint)param_2 | (uint)unaff_s0 | unaff_s2" (binary_expression "(uint)param_2 | (uint)unaff_s0" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) | (cast_expression "(uint)unaff_s0" ( (type_descriptor "uint" type_identifier) ) identifier)) | identifier) | identifier) )) & number_literal) )) != number_literal) )) (compound_statement "{\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }" { (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (while_statement "while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }" { (do_statement "do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);" do (compound_statement "{\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        }" { (expression_statement "pbVar20 = unaff_s0 + 2;" (assignment_expression "pbVar20 = unaff_s0 + 2" identifier = (binary_expression "unaff_s0 + 2" identifier + number_literal)) ;) (expression_statement "pbVar4 = param_2 + 2;" (assignment_expression "pbVar4 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)param_2 = *(undefined2 *)unaff_s0;" (assignment_expression "*(undefined2 *)param_2 = *(undefined2 *)unaff_s0" (pointer_expression "*(undefined2 *)param_2" * (cast_expression "(undefined2 *)param_2" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined2 *)unaff_s0" * (cast_expression "(undefined2 *)unaff_s0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "param_2 = pbVar4;" (assignment_expression "param_2 = pbVar4" identifier = identifier) ;) (expression_statement "unaff_s0 = pbVar20;" (assignment_expression "unaff_s0 = pbVar20" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar4 + -unaff_s2 != pbVar11)" ( (binary_expression "pbVar4 + -unaff_s2 != pbVar11" (binary_expression "pbVar4 + -unaff_s2" identifier + (unary_expression "-unaff_s2" - identifier)) != identifier) )) ;) (expression_statement "bVar2 = unaff_s3 <= unaff_s1;" (assignment_expression "bVar2 = unaff_s3 <= unaff_s1" identifier = (binary_expression "unaff_s3 <= unaff_s1" identifier <= identifier)) ;) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (if_statement "if (bVar2) break;" if (parenthesized_expression "(bVar2)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "param_2 = pbVar4 + (uVar3 & 0xfffffffe);" (assignment_expression "param_2 = pbVar4 + (uVar3 & 0xfffffffe)" identifier = (binary_expression "pbVar4 + (uVar3 & 0xfffffffe)" identifier + (parenthesized_expression "(uVar3 & 0xfffffffe)" ( (binary_expression "uVar3 & 0xfffffffe" identifier & number_literal) )))) ;) (expression_statement "unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);" (assignment_expression "unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe)" identifier = (binary_expression "pbVar20 + (uVar3 & 0xfffffffe)" identifier + (parenthesized_expression "(uVar3 & 0xfffffffe)" ( (binary_expression "uVar3 & 0xfffffffe" identifier & number_literal) )))) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (if_statement "if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }" if (parenthesized_expression "(unaff_s3 < unaff_s2)" ( (binary_expression "unaff_s3 < unaff_s2" identifier < identifier) )) (compound_statement "{\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }" { (do_statement "do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);" do (compound_statement "{\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          }" { (expression_statement "pbVar4 = pbVar11 + 1;" (assignment_expression "pbVar4 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar11 = *unaff_s0;" (assignment_expression "*pbVar11 = *unaff_s0" (pointer_expression "*pbVar11" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" identifier = identifier) ;) (expression_statement "unaff_s0 = unaff_s0 + 1;" (assignment_expression "unaff_s0 = unaff_s0 + 1" identifier = (binary_expression "unaff_s0 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 + unaff_s3 != pbVar4)" ( (binary_expression "param_2 + unaff_s3 != pbVar4" (binary_expression "param_2 + unaff_s3" identifier + identifier) != identifier) )) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })) (labeled_statement "LAB_00030094:\n    pbVar11 = param_2;" statement_identifier : (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;)) (while_statement "while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }" { (do_statement "do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);" do (compound_statement "{\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      }" { (expression_statement "pbVar4 = param_2 + 4;" (assignment_expression "pbVar4 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "uVar12 = *(undefined4 *)unaff_s0;" (assignment_expression "uVar12 = *(undefined4 *)unaff_s0" identifier = (pointer_expression "*(undefined4 *)unaff_s0" * (cast_expression "(undefined4 *)unaff_s0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "unaff_s0 = unaff_s0 + 4;" (assignment_expression "unaff_s0 = unaff_s0 + 4" identifier = (binary_expression "unaff_s0 + 4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)param_2 = uVar12;" (assignment_expression "*(undefined4 *)param_2 = uVar12" (pointer_expression "*(undefined4 *)param_2" * (cast_expression "(undefined4 *)param_2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "param_2 = pbVar4;" (assignment_expression "param_2 = pbVar4" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0)" ( (binary_expression "pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0" (binary_expression "pbVar11 + (unaff_s2 - (int)pbVar4)" identifier + (parenthesized_expression "(unaff_s2 - (int)pbVar4)" ( (binary_expression "unaff_s2 - (int)pbVar4" identifier - (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "bVar2 = unaff_s3 <= unaff_s1;" (assignment_expression "bVar2 = unaff_s3 <= unaff_s1" identifier = (binary_expression "unaff_s3 <= unaff_s1" identifier <= identifier)) ;) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (if_statement "if (bVar2) break;" if (parenthesized_expression "(bVar2)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "param_2 = pbVar4 + (uVar3 & 0xfffffffc);" (assignment_expression "param_2 = pbVar4 + (uVar3 & 0xfffffffc)" identifier = (binary_expression "pbVar4 + (uVar3 & 0xfffffffc)" identifier + (parenthesized_expression "(uVar3 & 0xfffffffc)" ( (binary_expression "uVar3 & 0xfffffffc" identifier & number_literal) )))) ;) (expression_statement "unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);" (assignment_expression "unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc)" identifier = (binary_expression "unaff_s0 + (uVar3 & 0xfffffffc)" identifier + (parenthesized_expression "(uVar3 & 0xfffffffc)" ( (binary_expression "uVar3 & 0xfffffffc" identifier & number_literal) )))) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (if_statement "if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }" if (parenthesized_expression "(unaff_s3 < unaff_s2)" ( (binary_expression "unaff_s3 < unaff_s2" identifier < identifier) )) (compound_statement "{\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }" { (do_statement "do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);" do (compound_statement "{\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        }" { (expression_statement "pbVar4 = unaff_s0 + uVar14;" (assignment_expression "pbVar4 = unaff_s0 + uVar14" identifier = (binary_expression "unaff_s0 + uVar14" identifier + identifier)) ;) (expression_statement "pbVar11 = param_2 + uVar14;" (assignment_expression "pbVar11 = param_2 + uVar14" identifier = (binary_expression "param_2 + uVar14" identifier + identifier)) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar11 = *pbVar4;" (assignment_expression "*pbVar11 = *pbVar4" (pointer_expression "*pbVar11" * identifier) = (pointer_expression "*pbVar4" * identifier)) ;) }) while (parenthesized_expression "(uVar14 != unaff_s3)" ( (binary_expression "uVar14 != unaff_s3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })) (expression_statement "puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98);" (assignment_expression "puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98)" identifier = (cast_expression "(uint *)(PTR_s_nt_0005301c + 0xb98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + 0xb98)" ( (binary_expression "PTR_s_nt_0005301c + 0xb98" identifier + number_literal) )))) ;) (expression_statement "puVar27 = PTR_png_error_0005340c;" (assignment_expression "puVar27 = PTR_png_error_0005340c" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_error_0005340c)();" (call_expression "(*(code *)PTR_png_error_0005340c)()" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar21 = *(int **)(puVar27 + 0x233b0);" (assignment_expression "piVar21 = *(int **)(puVar27 + 0x233b0)" identifier = (pointer_expression "*(int **)(puVar27 + 0x233b0)" * (cast_expression "(int **)(puVar27 + 0x233b0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + 0x233b0)" ( (binary_expression "puVar27 + 0x233b0" identifier + number_literal) ))))) ;) (expression_statement "iStack_5c = *piVar21;" (assignment_expression "iStack_5c = *piVar21" identifier = (pointer_expression "*piVar21" * identifier)) ;) (expression_statement "puVar10 = param_1;" (assignment_expression "puVar10 = param_1" identifier = identifier) ;) (expression_statement "pbStack_58 = unaff_s0;" (assignment_expression "pbStack_58 = unaff_s0" identifier = identifier) ;) (expression_statement "uStack_54 = uVar15;" (assignment_expression "uStack_54 = uVar15" identifier = identifier) ;) (expression_statement "uStack_50 = unaff_s2;" (assignment_expression "uStack_50 = unaff_s2" identifier = identifier) ;) (if_statement "if ((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)) goto LAB_00030268;" if (parenthesized_expression "((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0))" ( (binary_expression "(puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)" (parenthesized_expression "(puVar13 == (uint *)0x0)" ( (binary_expression "puVar13 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(param_1 == (uint *)0x0)" ( (binary_expression "param_1 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_00030268;" goto statement_identifier ;)) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" identifier = (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xb)" ( (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar23 = uVar3 - 1;" (assignment_expression "uVar23 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40);" (assignment_expression "param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40)" identifier = (cast_expression "(byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40)" ( (binary_expression "(int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40" (binary_expression "(int)param_3 * 4 + *(int *)(puVar27 + 0x22f10)" (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + (pointer_expression "*(int *)(puVar27 + 0x22f10)" * (cast_expression "(int *)(puVar27 + 0x22f10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + 0x22f10)" ( (binary_expression "puVar27 + 0x22f10" identifier + number_literal) ))))) + number_literal) )))) ;) (expression_statement "iVar7 = *(int *)param_3;" (assignment_expression "iVar7 = *(int *)param_3" identifier = (pointer_expression "*(int *)param_3" * (cast_expression "(int *)param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar5 = (uint *)(uVar3 * iVar7);" (assignment_expression "puVar5 = (uint *)(uVar3 * iVar7)" identifier = (cast_expression "(uint *)(uVar3 * iVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 * iVar7)" ( (binary_expression "uVar3 * iVar7" identifier * identifier) )))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar5 + -1);" (assignment_expression "pbVar11 = (byte *)((int)puVar5 + -1)" identifier = (cast_expression "(byte *)((int)puVar5 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -1)" ( (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (uVar15 == 2) {\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }\n  else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }" if (parenthesized_expression "(uVar15 == 2)" ( (binary_expression "uVar15 == 2" identifier == number_literal) )) (compound_statement "{\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }" { (expression_statement "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));" (assignment_expression "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2))" identifier = (cast_expression "(byte *)((int)puVar13 + (uVar23 >> 2))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + (uVar23 >> 2))" ( (binary_expression "(int)puVar13 + (uVar23 >> 2)" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar23 >> 2)" ( (binary_expression "uVar23 >> 2" identifier >> number_literal) ))) )))) ;) (expression_statement "puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));" (assignment_expression "puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2))" identifier = (cast_expression "(uint *)((int)puVar13 + ((uint)pbVar11 >> 2))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + ((uint)pbVar11 >> 2))" ( (binary_expression "(int)puVar13 + ((uint)pbVar11 >> 2)" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((uint)pbVar11 >> 2)" ( (binary_expression "(uint)pbVar11 >> 2" (cast_expression "(uint)pbVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (expression_statement "puVar13 = (uint *)(uVar3 + 3);" (assignment_expression "puVar13 = (uint *)(uVar3 + 3)" identifier = (cast_expression "(uint *)(uVar3 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 3)" ( (binary_expression "uVar3 + 3" identifier + number_literal) )))) ;) (if_statement "if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }" if (parenthesized_expression "((uVar14 & 0x10000) == 0)" ( (binary_expression "(uVar14 & 0x10000) == 0" (parenthesized_expression "(uVar14 & 0x10000)" ( (binary_expression "uVar14 & 0x10000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }" { (expression_statement "puVar24 = (uint *)(~(uint)puVar13 << 1);" (assignment_expression "puVar24 = (uint *)(~(uint)puVar13 << 1)" identifier = (cast_expression "(uint *)(~(uint)puVar13 << 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(~(uint)puVar13 << 1)" ( (binary_expression "~(uint)puVar13 << 1" (unary_expression "~(uint)puVar13" ~ (cast_expression "(uint)puVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) << number_literal) )))) ;) (expression_statement "uVar23 = ~(uint)((int)puVar5 + 3) << 1;" (assignment_expression "uVar23 = ~(uint)((int)puVar5 + 3) << 1" identifier = (binary_expression "~(uint)((int)puVar5 + 3) << 1" (unary_expression "~(uint)((int)puVar5 + 3)" ~ (call_expression "(uint)((int)puVar5 + 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar5 + 3)" ( (binary_expression "(int)puVar5 + 3" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) ;) (expression_statement "iVar17 = 2;" (assignment_expression "iVar17 = 2" identifier = number_literal) ;) (expression_statement "pbVar20 = &DAT_00000006;" (assignment_expression "pbVar20 = &DAT_00000006" identifier = (pointer_expression "&DAT_00000006" & identifier)) ;) (expression_statement "pbVar11 = (byte *)0x0;" (assignment_expression "pbVar11 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }" else (compound_statement "{\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }" { (expression_statement "puVar13 = (uint *)((int)puVar13 * 2);" (assignment_expression "puVar13 = (uint *)((int)puVar13 * 2)" identifier = (cast_expression "(uint *)((int)puVar13 * 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 * 2)" ( (binary_expression "(int)puVar13 * 2" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "uVar23 = (int)((int)puVar5 + 3) * 2;" (assignment_expression "uVar23 = (int)((int)puVar5 + 3) * 2" identifier = (binary_expression "(int)((int)puVar5 + 3) * 2" (cast_expression "(int)((int)puVar5 + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar5 + 3)" ( (binary_expression "(int)puVar5 + 3" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) * number_literal)) ;) (expression_statement "iVar17 = -2;" (assignment_expression "iVar17 = -2" identifier = number_literal) ;) (expression_statement "pbVar20 = (byte *)0x0;" (assignment_expression "pbVar20 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar11 = &DAT_00000006;" (assignment_expression "pbVar11 = &DAT_00000006" identifier = (pointer_expression "&DAT_00000006" & identifier)) ;) (expression_statement "puVar24 = puVar13;" (assignment_expression "puVar24 = puVar13" identifier = identifier) ;) }))) (expression_statement "pbVar26 = (byte *)((uint)puVar24 & 6);" (assignment_expression "pbVar26 = (byte *)((uint)puVar24 & 6)" identifier = (cast_expression "(byte *)((uint)puVar24 & 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar24 & 6)" ( (binary_expression "(uint)puVar24 & 6" (cast_expression "(uint)puVar24" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "param_3 = (byte *)(uVar23 & 6);" (assignment_expression "param_3 = (byte *)(uVar23 & 6)" identifier = (cast_expression "(byte *)(uVar23 & 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar23 & 6)" ( (binary_expression "uVar23 & 6" identifier & number_literal) )))) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (if_statement "if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }" { (do_statement "do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);" do (compound_statement "{\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      }" { (expression_statement "bVar9 = *pbVar4;" (assignment_expression "bVar9 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (if_statement "if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }" { (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);" do (compound_statement "{\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          }" { (while_statement "while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }" { (expression_statement "iVar6 = iVar25;" (assignment_expression "iVar6 = iVar25" identifier = identifier) ;) (expression_statement "uVar14 = (uint)*(byte *)puVar10;" (assignment_expression "uVar14 = (uint)*(byte *)puVar10" identifier = (binary_expression "(uint)*(byte *)puVar10" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)puVar10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;" (assignment_expression "*(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10" (pointer_expression "*(byte *)puVar10" * (cast_expression "(byte *)puVar10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10" (call_expression "(byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f))" ( (binary_expression "((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)" (parenthesized_expression "((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U)" ( (binary_expression "(int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U" (binary_expression "(int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f)" (cast_expression "(int)(uint)bVar9" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) >> (parenthesized_expression "((uint)pbVar26 & 0x1f)" ( (binary_expression "(uint)pbVar26 & 0x1f" (cast_expression "(uint)pbVar26" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) << (parenthesized_expression "((uint)param_3 & 0x1f)" ( (binary_expression "(uint)param_3 & 0x1f" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) ))) | (binary_expression "(byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10" (call_expression "(byte)(0x3f3f >> (6U - (int)param_3 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0x3f3f >> (6U - (int)param_3 & 0x1f))" ( (binary_expression "0x3f3f >> (6U - (int)param_3 & 0x1f)" number_literal >> (parenthesized_expression "(6U - (int)param_3 & 0x1f)" ( (binary_expression "6U - (int)param_3 & 0x1f" (binary_expression "6U - (int)param_3" number_literal - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) ))) ))) & (pointer_expression "*(byte *)puVar10" * (cast_expression "(byte *)puVar10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))))) ;) (if_statement "if (pbVar20 != param_3) break;" if (parenthesized_expression "(pbVar20 != param_3)" ( (binary_expression "pbVar20 != param_3" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "puVar10 = (uint *)((int)puVar10 + -1);" (assignment_expression "puVar10 = (uint *)((int)puVar10 + -1)" identifier = (cast_expression "(uint *)((int)puVar10 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + -1)" ( (binary_expression "(int)puVar10 + -1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = pbVar11;" (assignment_expression "param_3 = pbVar11" identifier = identifier) ;) (if_statement "if (iVar6 + 1 == iVar7) goto LAB_0003051c;" if (parenthesized_expression "(iVar6 + 1 == iVar7)" ( (binary_expression "iVar6 + 1 == iVar7" (binary_expression "iVar6 + 1" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_0003051c;" goto statement_identifier ;)) })) (expression_statement "param_3 = param_3 + iVar17;" (assignment_expression "param_3 = param_3 + iVar17" identifier = (binary_expression "param_3 + iVar17" identifier + identifier)) ;) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 + 1 != iVar7)" ( (binary_expression "iVar6 + 1 != iVar7" (binary_expression "iVar6 + 1" identifier + number_literal) != identifier) )) ;) (labeled_statement "LAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);" statement_identifier : (expression_statement "puVar13 = (uint *)(iVar6 + 1);" (assignment_expression "puVar13 = (uint *)(iVar6 + 1)" identifier = (cast_expression "(uint *)(iVar6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 1)" ( (binary_expression "iVar6 + 1" identifier + number_literal) )))) ;)) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (if_statement "if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }" if (parenthesized_expression "(pbVar20 == pbVar26)" ( (binary_expression "pbVar20 == pbVar26" identifier == identifier) )) (compound_statement "{\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }" { (expression_statement "pbVar4 = pbVar4 + -1;" (assignment_expression "pbVar4 = pbVar4 + -1" identifier = (binary_expression "pbVar4 + -1" identifier + number_literal)) ;) (expression_statement "pbVar26 = pbVar11;" (assignment_expression "pbVar26 = pbVar11" identifier = identifier) ;) }) (else_clause "else {\n          pbVar26 = pbVar26 + iVar17;\n        }" else (compound_statement "{\n          pbVar26 = pbVar26 + iVar17;\n        }" { (expression_statement "pbVar26 = pbVar26 + iVar17;" (assignment_expression "pbVar26 = pbVar26 + iVar17" identifier = (binary_expression "pbVar26 + iVar17" identifier + identifier)) ;) }))) (expression_statement "uVar23 = uVar23 + 1;" (assignment_expression "uVar23 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar23 < uVar3)" ( (binary_expression "uVar23 < uVar3" identifier < identifier) )) ;) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" identifier = (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xb)" ( (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (goto_statement "goto LAB_0003024c;" goto statement_identifier ;) })) (labeled_statement "LAB_000302a4:\n    *param_1 = (uint)puVar5;" statement_identifier : (expression_statement "*param_1 = (uint)puVar5;" (assignment_expression "*param_1 = (uint)puVar5" (pointer_expression "*param_1" * identifier) = (cast_expression "(uint)puVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) }) (else_clause "else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }" else (compound_statement "{\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }" { (if_statement "if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }" if (parenthesized_expression "(uVar15 == 4)" ( (binary_expression "uVar15 == 4" identifier == number_literal) )) (compound_statement "{\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }" { (expression_statement "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));" (assignment_expression "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1))" identifier = (cast_expression "(byte *)((int)puVar13 + (uVar23 >> 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + (uVar23 >> 1))" ( (binary_expression "(int)puVar13 + (uVar23 >> 1)" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar23 >> 1)" ( (binary_expression "uVar23 >> 1" identifier >> number_literal) ))) )))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));" (assignment_expression "pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1))" identifier = (cast_expression "(byte *)((int)puVar13 + ((uint)pbVar11 >> 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + ((uint)pbVar11 >> 1))" ( (binary_expression "(int)puVar13 + ((uint)pbVar11 >> 1)" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((uint)pbVar11 >> 1)" ( (binary_expression "(uint)pbVar11 >> 1" (cast_expression "(uint)pbVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (if_statement "if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }" if (parenthesized_expression "((uVar14 & 0x10000) == 0)" ( (binary_expression "(uVar14 & 0x10000) == 0" (parenthesized_expression "(uVar14 & 0x10000)" ( (binary_expression "uVar14 & 0x10000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }" { (expression_statement "puVar10 = (uint *)(uVar3 + 1 & 1);" (assignment_expression "puVar10 = (uint *)(uVar3 + 1 & 1)" identifier = (cast_expression "(uint *)(uVar3 + 1 & 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 1 & 1)" ( (binary_expression "uVar3 + 1 & 1" (binary_expression "uVar3 + 1" identifier + number_literal) & number_literal) )))) ;) (expression_statement "pbVar20 = &DAT_00000004;" (assignment_expression "pbVar20 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (if_statement "if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }" if (parenthesized_expression "(puVar10 != (uint *)0x0)" ( (binary_expression "puVar10 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pbVar20 = (byte *)0x0;\n        }" { (expression_statement "pbVar20 = (byte *)0x0;" (assignment_expression "pbVar20 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }" if (parenthesized_expression "(((uint)((int)puVar5 + 1) & 1) == 0)" ( (binary_expression "((uint)((int)puVar5 + 1) & 1) == 0" (parenthesized_expression "((uint)((int)puVar5 + 1) & 1)" ( (binary_expression "(uint)((int)puVar5 + 1) & 1" (call_expression "(uint)((int)puVar5 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }" { (expression_statement "iVar17 = 4;" (assignment_expression "iVar17 = 4" identifier = number_literal) ;) (expression_statement "pbVar16 = &DAT_00000004;" (assignment_expression "pbVar16 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (expression_statement "param_3 = &DAT_00000004;" (assignment_expression "param_3 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (expression_statement "pbVar26 = (byte *)0x0;" (assignment_expression "pbVar26 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }" else (compound_statement "{\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }" { (expression_statement "pbVar26 = (byte *)0x0;" (assignment_expression "pbVar26 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar17 = 4;" (assignment_expression "iVar17 = 4" identifier = number_literal) ;) (expression_statement "pbVar16 = &DAT_00000004;" (assignment_expression "pbVar16 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (expression_statement "param_3 = (byte *)0x0;" (assignment_expression "param_3 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }" else (compound_statement "{\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }" { (expression_statement "puVar10 = (uint *)((uVar3 + 1) * 4);" (assignment_expression "puVar10 = (uint *)((uVar3 + 1) * 4)" identifier = (cast_expression "(uint *)((uVar3 + 1) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar3 + 1) * 4)" ( (binary_expression "(uVar3 + 1) * 4" (parenthesized_expression "(uVar3 + 1)" ( (binary_expression "uVar3 + 1" identifier + number_literal) )) * number_literal) )))) ;) (expression_statement "param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);" (assignment_expression "param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4)" identifier = (cast_expression "(byte *)((int)((int)puVar5 + 1) * 4 & 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)((int)puVar5 + 1) * 4 & 4)" ( (binary_expression "(int)((int)puVar5 + 1) * 4 & 4" (binary_expression "(int)((int)puVar5 + 1) * 4" (cast_expression "(int)((int)puVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) * number_literal) & number_literal) )))) ;) (expression_statement "iVar17 = -4;" (assignment_expression "iVar17 = -4" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)0x0;" (assignment_expression "pbVar16 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar26 = &DAT_00000004;" (assignment_expression "pbVar26 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (expression_statement "pbVar20 = (byte *)((uint)puVar10 & 4);" (assignment_expression "pbVar20 = (byte *)((uint)puVar10 & 4)" identifier = (cast_expression "(byte *)((uint)puVar10 & 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar10 & 4)" ( (binary_expression "(uint)puVar10 & 4" (cast_expression "(uint)puVar10" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) }))) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (expression_statement "puVar13 = puVar5;" (assignment_expression "puVar13 = puVar5" identifier = identifier) ;) (if_statement "if (uVar3 == 0) goto LAB_000302a4;" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000302a4;" goto statement_identifier ;)) (do_statement "do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);" do (compound_statement "{\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      }" { (expression_statement "bVar9 = *pbVar4;" (assignment_expression "bVar9 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (if_statement "if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }" { (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);" do (compound_statement "{\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          }" { (while_statement "while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }" { (expression_statement "iVar6 = iVar25;" (assignment_expression "iVar6 = iVar25" identifier = identifier) ;) (expression_statement "uVar14 = (uint)*pbVar11;" (assignment_expression "uVar14 = (uint)*pbVar11" identifier = (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "*pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;" (assignment_expression "*pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11" (pointer_expression "*pbVar11" * identifier) = (binary_expression "(byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11" (call_expression "(byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f))" ( (binary_expression "((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)" (parenthesized_expression "((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU)" ( (binary_expression "(int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU" (binary_expression "(int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f)" (cast_expression "(int)(uint)bVar9" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) >> (parenthesized_expression "((uint)pbVar20 & 0x1f)" ( (binary_expression "(uint)pbVar20 & 0x1f" (cast_expression "(uint)pbVar20" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) << (parenthesized_expression "((uint)param_3 & 0x1f)" ( (binary_expression "(uint)param_3 & 0x1f" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) ))) | (binary_expression "(byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11" (call_expression "(byte)(0xf0f >> (4U - (int)param_3 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0xf0f >> (4U - (int)param_3 & 0x1f))" ( (binary_expression "0xf0f >> (4U - (int)param_3 & 0x1f)" number_literal >> (parenthesized_expression "(4U - (int)param_3 & 0x1f)" ( (binary_expression "4U - (int)param_3 & 0x1f" (binary_expression "4U - (int)param_3" number_literal - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) ))) ))) & (pointer_expression "*pbVar11" * identifier)))) ;) (if_statement "if (pbVar16 != param_3) break;" if (parenthesized_expression "(pbVar16 != param_3)" ( (binary_expression "pbVar16 != param_3" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" identifier = (binary_expression "pbVar11 + -1" identifier + number_literal)) ;) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = pbVar26;" (assignment_expression "param_3 = pbVar26" identifier = identifier) ;) (if_statement "if (iVar6 + 1 == iVar7) goto LAB_00030440;" if (parenthesized_expression "(iVar6 + 1 == iVar7)" ( (binary_expression "iVar6 + 1 == iVar7" (binary_expression "iVar6 + 1" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_00030440;" goto statement_identifier ;)) })) (expression_statement "param_3 = param_3 + iVar17;" (assignment_expression "param_3 = param_3 + iVar17" identifier = (binary_expression "param_3 + iVar17" identifier + identifier)) ;) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 + 1 != iVar7)" ( (binary_expression "iVar6 + 1 != iVar7" (binary_expression "iVar6 + 1" identifier + number_literal) != identifier) )) ;) (labeled_statement "LAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);" statement_identifier : (expression_statement "puVar13 = (uint *)(iVar6 + 1);" (assignment_expression "puVar13 = (uint *)(iVar6 + 1)" identifier = (cast_expression "(uint *)(iVar6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 1)" ( (binary_expression "iVar6 + 1" identifier + number_literal) )))) ;)) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (if_statement "if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }" if (parenthesized_expression "(pbVar16 == pbVar20)" ( (binary_expression "pbVar16 == pbVar20" identifier == identifier) )) (compound_statement "{\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }" { (expression_statement "pbVar4 = pbVar4 + -1;" (assignment_expression "pbVar4 = pbVar4 + -1" identifier = (binary_expression "pbVar4 + -1" identifier + number_literal)) ;) (expression_statement "pbVar20 = pbVar26;" (assignment_expression "pbVar20 = pbVar26" identifier = identifier) ;) }) (else_clause "else {\n          pbVar20 = pbVar20 + iVar17;\n        }" else (compound_statement "{\n          pbVar20 = pbVar20 + iVar17;\n        }" { (expression_statement "pbVar20 = pbVar20 + iVar17;" (assignment_expression "pbVar20 = pbVar20 + iVar17" identifier = (binary_expression "pbVar20 + iVar17" identifier + identifier)) ;) }))) (expression_statement "uVar23 = uVar23 + 1;" (assignment_expression "uVar23 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar23 < uVar3)" ( (binary_expression "uVar23 < uVar3" identifier < identifier) )) ;) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" identifier = (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xb)" ( (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar10 = (uint *)0x0;" (assignment_expression "puVar10 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }" else (compound_statement "{\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }" { (expression_statement "pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);" (assignment_expression "pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3)" identifier = (cast_expression "(byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(*(byte *)((int)param_1 + 0xb) >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)((int)param_1 + 0xb) >> 3)" ( (binary_expression "*(byte *)((int)param_1 + 0xb) >> 3" (pointer_expression "*(byte *)((int)param_1 + 0xb)" * (cast_expression "(byte *)((int)param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xb)" ( (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) ))))) ;) (if_statement "if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }" if (parenthesized_expression "(uVar15 == 1)" ( (binary_expression "uVar15 == 1" identifier == number_literal) )) (compound_statement "{\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }" { (expression_statement "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));" (assignment_expression "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3))" identifier = (cast_expression "(byte *)((int)puVar13 + (uVar23 >> 3))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + (uVar23 >> 3))" ( (binary_expression "(int)puVar13 + (uVar23 >> 3)" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar23 >> 3)" ( (binary_expression "uVar23 >> 3" identifier >> number_literal) ))) )))) ;) (expression_statement "param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));" (assignment_expression "param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3))" identifier = (cast_expression "(byte *)((int)puVar13 + ((uint)pbVar11 >> 3))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + ((uint)pbVar11 >> 3))" ( (binary_expression "(int)puVar13 + ((uint)pbVar11 >> 3)" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((uint)pbVar11 >> 3)" ( (binary_expression "(uint)pbVar11 >> 3" (cast_expression "(uint)pbVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (expression_statement "uVar23 = uVar3 + 7;" (assignment_expression "uVar23 = uVar3 + 7" identifier = (binary_expression "uVar3 + 7" identifier + number_literal)) ;) (expression_statement "pbVar11 = (byte *)((int)puVar5 + 7);" (assignment_expression "pbVar11 = (byte *)((int)puVar5 + 7)" identifier = (cast_expression "(byte *)((int)puVar5 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 7)" ( (binary_expression "(int)puVar5 + 7" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }" if (parenthesized_expression "((uVar14 & 0x10000) == 0)" ( (binary_expression "(uVar14 & 0x10000) == 0" (parenthesized_expression "(uVar14 & 0x10000)" ( (binary_expression "uVar14 & 0x10000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }" { (expression_statement "uVar23 = ~uVar23;" (assignment_expression "uVar23 = ~uVar23" identifier = (unary_expression "~uVar23" ~ identifier)) ;) (expression_statement "pbVar11 = (byte *)~(uint)pbVar11;" (assignment_expression "pbVar11 = (byte *)~(uint)pbVar11" identifier = (cast_expression "(byte *)~(uint)pbVar11" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "~(uint)pbVar11" ~ (cast_expression "(uint)pbVar11" ( (type_descriptor "uint" type_identifier) ) identifier)))) ;) (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" identifier = number_literal) ;) (expression_statement "puVar8 = (uint *)&DAT_00000007;" (assignment_expression "puVar8 = (uint *)&DAT_00000007" identifier = (cast_expression "(uint *)&DAT_00000007" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000007" & identifier))) ;) (expression_statement "puVar24 = (uint *)0x0;" (assignment_expression "puVar24 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }" else (compound_statement "{\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }" { (expression_statement "iVar17 = -1;" (assignment_expression "iVar17 = -1" identifier = number_literal) ;) (expression_statement "puVar8 = (uint *)0x0;" (assignment_expression "puVar8 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar24 = (uint *)&DAT_00000007;" (assignment_expression "puVar24 = (uint *)&DAT_00000007" identifier = (cast_expression "(uint *)&DAT_00000007" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000007" & identifier))) ;) }))) (expression_statement "puVar18 = (uint *)(uVar23 & 7);" (assignment_expression "puVar18 = (uint *)(uVar23 & 7)" identifier = (cast_expression "(uint *)(uVar23 & 7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar23 & 7)" ( (binary_expression "uVar23 & 7" identifier & number_literal) )))) ;) (expression_statement "puVar10 = (uint *)((uint)pbVar11 & 7);" (assignment_expression "puVar10 = (uint *)((uint)pbVar11 & 7)" identifier = (cast_expression "(uint *)((uint)pbVar11 & 7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)pbVar11 & 7)" ( (binary_expression "(uint)pbVar11 & 7" (cast_expression "(uint)pbVar11" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (if_statement "if (uVar3 == 0) goto LAB_000302a4;" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000302a4;" goto statement_identifier ;)) (do_statement "do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);" do (compound_statement "{\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        }" { (expression_statement "bVar9 = *pbVar4;" (assignment_expression "bVar9 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (if_statement "if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }" { (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);" do (compound_statement "{\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            }" { (while_statement "while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }" { (expression_statement "iVar6 = iVar25;" (assignment_expression "iVar6 = iVar25" identifier = identifier) ;) (expression_statement "uVar14 = (uint)*param_3;" (assignment_expression "uVar14 = (uint)*param_3" identifier = (binary_expression "(uint)*param_3" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "*param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;" (assignment_expression "*param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3" (pointer_expression "*param_3" * identifier) = (binary_expression "(byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3" (call_expression "(byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f))" ( (binary_expression "((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)" (parenthesized_expression "((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U)" ( (binary_expression "(int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U" (binary_expression "(int)(uint)bVar9 >> ((uint)puVar18 & 0x1f)" (cast_expression "(int)(uint)bVar9" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) >> (parenthesized_expression "((uint)puVar18 & 0x1f)" ( (binary_expression "(uint)puVar18 & 0x1f" (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) << (parenthesized_expression "((uint)puVar10 & 0x1f)" ( (binary_expression "(uint)puVar10 & 0x1f" (cast_expression "(uint)puVar10" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) ))) | (binary_expression "(byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3" (call_expression "(byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0x7f7f >> (7U - (int)puVar10 & 0x1f))" ( (binary_expression "0x7f7f >> (7U - (int)puVar10 & 0x1f)" number_literal >> (parenthesized_expression "(7U - (int)puVar10 & 0x1f)" ( (binary_expression "7U - (int)puVar10 & 0x1f" (binary_expression "7U - (int)puVar10" number_literal - (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) ))) ))) & (pointer_expression "*param_3" * identifier)))) ;) (if_statement "if (puVar8 != puVar10) break;" if (parenthesized_expression "(puVar8 != puVar10)" ( (binary_expression "puVar8 != puVar10" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "param_3 = param_3 + -1;" (assignment_expression "param_3 = param_3 + -1" identifier = (binary_expression "param_3 + -1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar24;" (assignment_expression "puVar10 = puVar24" identifier = identifier) ;) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 + 1 == iVar7) goto LAB_00030364;" if (parenthesized_expression "(iVar6 + 1 == iVar7)" ( (binary_expression "iVar6 + 1 == iVar7" (binary_expression "iVar6 + 1" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_00030364;" goto statement_identifier ;)) })) (expression_statement "puVar10 = (uint *)((int)puVar10 + iVar17);" (assignment_expression "puVar10 = (uint *)((int)puVar10 + iVar17)" identifier = (cast_expression "(uint *)((int)puVar10 + iVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + iVar17)" ( (binary_expression "(int)puVar10 + iVar17" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 + 1 != iVar7)" ( (binary_expression "iVar6 + 1 != iVar7" (binary_expression "iVar6 + 1" identifier + number_literal) != identifier) )) ;) (labeled_statement "LAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);" statement_identifier : (expression_statement "puVar13 = (uint *)(iVar6 + 1);" (assignment_expression "puVar13 = (uint *)(iVar6 + 1)" identifier = (cast_expression "(uint *)(iVar6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 1)" ( (binary_expression "iVar6 + 1" identifier + number_literal) )))) ;)) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (if_statement "if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }" if (parenthesized_expression "(puVar8 == puVar18)" ( (binary_expression "puVar8 == puVar18" identifier == identifier) )) (compound_statement "{\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }" { (expression_statement "pbVar4 = pbVar4 + -1;" (assignment_expression "pbVar4 = pbVar4 + -1" identifier = (binary_expression "pbVar4 + -1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar24;" (assignment_expression "puVar18 = puVar24" identifier = identifier) ;) }) (else_clause "else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }" else (compound_statement "{\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }" { (expression_statement "puVar18 = (uint *)((int)puVar18 + iVar17);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + iVar17)" identifier = (cast_expression "(uint *)((int)puVar18 + iVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + iVar17)" ( (binary_expression "(int)puVar18 + iVar17" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }))) (expression_statement "uVar23 = uVar23 + 1;" (assignment_expression "uVar23 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar23 < uVar3)" ( (binary_expression "uVar23 < uVar3" identifier < identifier) )) ;) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" identifier = (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xb)" ( (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }" else (compound_statement "{\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }" { (expression_statement "puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);" (assignment_expression "puVar10 = (uint *)((int)pbVar4 * (int)pbVar11)" identifier = (cast_expression "(uint *)((int)pbVar4 * (int)pbVar11)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar4 * (int)pbVar11)" ( (binary_expression "(int)pbVar4 * (int)pbVar11" (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier) * (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);" (assignment_expression "puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13)" identifier = (cast_expression "(uint *)((int)pbVar4 * uVar23 + (int)puVar13)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar4 * uVar23 + (int)puVar13)" ( (binary_expression "(int)pbVar4 * uVar23 + (int)puVar13" (binary_expression "(int)pbVar4 * uVar23" (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier) * identifier) + (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puStack_74 = (uint *)((int)puVar10 + (int)puVar13);" (assignment_expression "puStack_74 = (uint *)((int)puVar10 + (int)puVar13)" identifier = (cast_expression "(uint *)((int)puVar10 + (int)puVar13)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + (int)puVar13)" ( (binary_expression "(int)puVar10 + (int)puVar13" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }" { (expression_statement "iVar17 = -(int)pbVar4;" (assignment_expression "iVar17 = -(int)pbVar4" identifier = (unary_expression "-(int)pbVar4" - (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);" do (compound_statement "{\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          }" { (expression_statement "uVar14 = 8;" (assignment_expression "uVar14 = 8" identifier = number_literal) ;) (expression_statement "puVar10 = auStack_64;" (assignment_expression "puVar10 = auStack_64" identifier = identifier) ;) (expression_statement "puVar13 = puVar24;" (assignment_expression "puVar13 = puVar24" identifier = identifier) ;) (expression_statement "param_3 = pbVar4;" (assignment_expression "param_3 = pbVar4" identifier = identifier) ;) (expression_statement "(**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);" (call_expression "(**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8)" (parenthesized_expression "(**(code **)(puVar27 + 0x232f4))" ( (pointer_expression "**(code **)(puVar27 + 0x232f4)" * (pointer_expression "*(code **)(puVar27 + 0x232f4)" * (cast_expression "(code **)(puVar27 + 0x232f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + 0x232f4)" ( (binary_expression "puVar27 + 0x232f4" identifier + number_literal) ))))) )) (argument_list "(auStack_64,puVar24,pbVar4,8)" ( identifier , identifier , identifier , number_literal ))) ;) (if_statement "if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }" { (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (expression_statement "puVar8 = puStack_74;" (assignment_expression "puVar8 = puStack_74" identifier = identifier) ;) (do_statement "do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);" do (compound_statement "{\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              }" { (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" identifier = (binary_expression "iVar25 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" identifier = identifier) ;) (expression_statement "puVar13 = auStack_64;" (assignment_expression "puVar13 = auStack_64" identifier = identifier) ;) (expression_statement "param_3 = pbVar4;" (assignment_expression "param_3 = pbVar4" identifier = identifier) ;) (expression_statement "iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);" (assignment_expression "iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4)" identifier = (call_expression "(**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4)" (parenthesized_expression "(**(code **)(puVar27 + 0x233b8))" ( (pointer_expression "**(code **)(puVar27 + 0x233b8)" * (pointer_expression "*(code **)(puVar27 + 0x233b8)" * (cast_expression "(code **)(puVar27 + 0x233b8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + 0x233b8)" ( (binary_expression "puVar27 + 0x233b8" identifier + number_literal) ))))) )) (argument_list "(puVar8,auStack_64,pbVar4)" ( identifier , identifier , identifier )))) ;) (expression_statement "puVar8 = (uint *)(iVar6 + iVar17);" (assignment_expression "puVar8 = (uint *)(iVar6 + iVar17)" identifier = (cast_expression "(uint *)(iVar6 + iVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar17)" ( (binary_expression "iVar6 + iVar17" identifier + identifier) )))) ;) }) while (parenthesized_expression "(iVar25 != iVar7)" ( (binary_expression "iVar25 != iVar7" identifier != identifier) )) ;) (expression_statement "puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);" (assignment_expression "puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17)" identifier = (cast_expression "(uint *)((int)puStack_74 + iVar7 * iVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puStack_74 + iVar7 * iVar17)" ( (binary_expression "(int)puStack_74 + iVar7 * iVar17" (cast_expression "(int)puStack_74" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar7 * iVar17" identifier * identifier)) )))) ;) })) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar24 = (uint *)((int)puVar24 + iVar17);" (assignment_expression "puVar24 = (uint *)((int)puVar24 + iVar17)" identifier = (cast_expression "(uint *)((int)puVar24 + iVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar24 + iVar17)" ( (binary_expression "(int)puVar24 + iVar17" (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(uVar3 < *param_1)" ( (binary_expression "uVar3 < *param_1" identifier < (pointer_expression "*param_1" * identifier)) )) ;) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" identifier = (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xb)" ( (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) }))) }))) (labeled_statement "LAB_0003024c:\n    *param_1 = (uint)puVar5;" statement_identifier : (expression_statement "*param_1 = (uint)puVar5;" (assignment_expression "*param_1 = (uint)puVar5" (pointer_expression "*param_1" * identifier) = (cast_expression "(uint)puVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) (if_statement "if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }" if (parenthesized_expression "(7 < uVar15)" ( (binary_expression "7 < uVar15" number_literal < identifier) )) (compound_statement "{\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }" { (expression_statement "param_1[1] = (uVar15 >> 3) * (int)puVar5;" (assignment_expression "param_1[1] = (uVar15 >> 3) * (int)puVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "(uVar15 >> 3) * (int)puVar5" (parenthesized_expression "(uVar15 >> 3)" ( (binary_expression "uVar15 >> 3" identifier >> number_literal) )) * (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_00030268;" goto statement_identifier ;) })) }))) (expression_statement "param_1[1] = uVar15 * (int)puVar5 + 7 >> 3;" (assignment_expression "param_1[1] = uVar15 * (int)puVar5 + 7 >> 3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "uVar15 * (int)puVar5 + 7 >> 3" (binary_expression "uVar15 * (int)puVar5 + 7" (binary_expression "uVar15 * (int)puVar5" identifier * (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) >> number_literal)) ;) (labeled_statement "LAB_00030268:\n  if (iStack_5c == *piVar21) {\n    return;\n  }" statement_identifier : (if_statement "if (iStack_5c == *piVar21) {\n    return;\n  }" if (parenthesized_expression "(iStack_5c == *piVar21)" ( (binary_expression "iStack_5c == *piVar21" identifier == (pointer_expression "*piVar21" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "pcVar28 = *(code **)(puVar27 + 0x23378);" (assignment_expression "pcVar28 = *(code **)(puVar27 + 0x23378)" identifier = (pointer_expression "*(code **)(puVar27 + 0x23378)" * (cast_expression "(code **)(puVar27 + 0x23378)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + 0x23378)" ( (binary_expression "puVar27 + 0x23378" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar28)();" (call_expression "(*pcVar28)()" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (puVar27 + 0x2aee3 < &DAT_00000004) {\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    /* WARNING: Could not recover jumptable at 0x00030614. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }" if (parenthesized_expression "(puVar27 + 0x2aee3 < &DAT_00000004)" ( (binary_expression "puVar27 + 0x2aee3 < &DAT_00000004" (binary_expression "puVar27 + 0x2aee3" identifier + number_literal) < (pointer_expression "&DAT_00000004" & identifier)) )) (compound_statement "{\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    /* WARNING: Could not recover jumptable at 0x00030614. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }" { (if_statement "if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }" if (parenthesized_expression "(puVar10[0xe2] == 0)" ( (binary_expression "puVar10[0xe2] == 0" (subscript_expression "puVar10[0xe2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }" { (expression_statement "puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;" (assignment_expression "puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0" (subscript_expression "puVar10[0xe2]" identifier [ number_literal ]) = (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x58a0" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" * (cast_expression "(int *)(pcVar28 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar28 + 0x22c14)" ( (binary_expression "pcVar28 + 0x22c14" identifier + number_literal) )))) - number_literal)) ;) (expression_statement "puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;" (assignment_expression "puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858" (subscript_expression "puVar10[0xe3]" identifier [ number_literal ]) = (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x5858" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" * (cast_expression "(int *)(pcVar28 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar28 + 0x22c14)" ( (binary_expression "pcVar28 + 0x22c14" identifier + number_literal) )))) - number_literal)) ;) (expression_statement "puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;" (assignment_expression "puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828" (subscript_expression "puVar10[0xe4]" identifier [ number_literal ]) = (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x5828" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" * (cast_expression "(int *)(pcVar28 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar28 + 0x22c14)" ( (binary_expression "pcVar28 + 0x22c14" identifier + number_literal) )))) - number_literal)) ;) (if_statement "if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }" if (parenthesized_expression "((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1)" ( (binary_expression "(int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1" (binary_expression "(int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3" (cast_expression "(int)(*(byte *)((int)puVar10 + 0x202) + 7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(*(byte *)((int)puVar10 + 0x202) + 7)" ( (binary_expression "*(byte *)((int)puVar10 + 0x202) + 7" (pointer_expression "*(byte *)((int)puVar10 + 0x202)" * (cast_expression "(byte *)((int)puVar10 + 0x202)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x202)" ( (binary_expression "(int)puVar10 + 0x202" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))) >> number_literal) == number_literal) )) (compound_statement "{\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }" { (expression_statement "puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;" (assignment_expression "puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c" (subscript_expression "puVar10[0xe5]" identifier [ number_literal ]) = (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x579c" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" * (cast_expression "(int *)(pcVar28 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar28 + 0x22c14)" ( (binary_expression "pcVar28 + 0x22c14" identifier + number_literal) )))) - number_literal)) ;) }) (else_clause "else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }" else (compound_statement "{\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }" { (expression_statement "puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;" (assignment_expression "puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704" (subscript_expression "puVar10[0xe5]" identifier [ number_literal ]) = (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x5704" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" * (cast_expression "(int *)(pcVar28 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar28 + 0x22c14)" ( (binary_expression "pcVar28 + 0x22c14" identifier + number_literal) )))) - number_literal)) ;) }))) })) comment comment (expression_statement "(*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);" (call_expression "(*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14)" (parenthesized_expression "(*(code *)puVar10[(int)(puVar27 + 0x2afc5)])" ( (pointer_expression "*(code *)puVar10[(int)(puVar27 + 0x2afc5)]" * (cast_expression "(code *)puVar10[(int)(puVar27 + 0x2afc5)]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[(int)(puVar27 + 0x2afc5)]" identifier [ (cast_expression "(int)(puVar27 + 0x2afc5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar27 + 0x2afc5)" ( (binary_expression "puVar27 + 0x2afc5" identifier + number_literal) ))) ]))) )) (argument_list "(puVar13,param_3,uVar14)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nvoid png_combine_row(png_const_structrp png_ptr,png_bytep dp,int display)\n\n{\n  png_byte pVar1;\n  byte bVar2;\n  bool bVar3;\n  uint uVar4;\n  byte *pbVar5;\n  png_const_structrp ppVar6;\n  int iVar7;\n  int iVar8;\n  byte bVar11;\n  uint extraout_v1;\n  void *pvVar9;\n  png_const_structrp ppVar10;\n  uint uVar12;\n  png_const_structrp ppVar13;\n  undefined1 *puVar14;\n  byte *pbVar15;\n  undefined4 uVar16;\n  png_const_structrp ppVar17;\n  uint uVar18;\n  size_t sVar19;\n  uint in_t2;\n  byte *pbVar20;\n  uint in_t3;\n  int iVar21;\n  png_const_structrp ppVar22;\n  byte *unaff_s0;\n  uint uVar23;\n  byte *pbVar24;\n  uint unaff_s1;\n  byte bVar26;\n  int *piVar25;\n  uint unaff_s2;\n  uint uVar27;\n  uint unaff_s3;\n  png_const_structrp ppVar28;\n  int iVar29;\n  byte *pbVar30;\n  undefined *puVar31;\n  void *pvVar32;\n  code *pcVar33;\n  undefined8 uVar34;\n  png_const_structrp ppStack_74;\n  int iStack_5c;\n  byte *pbStack_58;\n  uint uStack_54;\n  uint uStack_50;\n  \n  uVar18 = png_ptr->width;\n  bVar11 = png_ptr->transformed_pixel_depth;\n  uVar4 = (uint)bVar11;\n  if (uVar4 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar4 = extraout_v1;\n    goto LAB_00030094;\n  }\n  pbVar15 = png_ptr->row_buf + 1;\n  if (png_ptr->info_rowbytes == 0) {\nLAB_0002fb8c:\n    uVar12 = uVar4 * uVar18;\n    if (uVar18 == 0) {\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar27 = uVar12 & 7;\n    bVar26 = 0;\n    if (uVar27 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      pVar1 = png_ptr->interlaced;\n    }\n    else {\n      if (uVar4 < 8) {\n        uVar23 = uVar12 + 7 >> 3;\n      }\n      else {\n        uVar23 = (bVar11 >> 3) * uVar18;\n      }\n      unaff_s0 = dp + (uVar23 - 1);\n      bVar26 = *unaff_s0;\n      if (-1 < (int)(png_ptr->transformations << 0xf)) {\n        unaff_s2 = 0xff >> uVar27;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar27;\n      pVar1 = png_ptr->interlaced;\n    }\n    if ((pVar1 != '\0') && ((png_ptr->transformations & 2) != 0)) {\n      bVar2 = png_ptr->pass;\n      in_t3 = (uint)bVar2;\n      if ((in_t3 < 6) && ((display == 0 || ((display == 1 && ((bVar2 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar18 <= in_t2) {\n          return;\n        }\n        if (uVar4 < 8) {\n          if (uVar4 == 0) {\n            trap(7);\n          }\n          iVar8 = 1;\n          if ((int)(png_ptr->transformations << 0xf) < 0) {\n            if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }\n            bVar3 = uVar18 <= 8 / uVar4;\n            uVar18 = uVar18 - 8 / uVar4;\n            if (bVar3) break;\n            dp = dp + 1;\n            pbVar15 = pbVar15 + 1;\n            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar4 < 8) {\n      uVar18 = uVar12 + 7 >> 3;\n    }\n    else {\n      uVar18 = (bVar11 >> 3) * uVar18;\n    }\n    (*(code *)PTR_memcpy_000534c4)(dp,pbVar15,uVar18);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar26) & (byte)unaff_s2;\n    }\n    return;\n  }\n  if (uVar4 < 8) {\n    sVar19 = uVar4 * uVar18 + 7 >> 3;\n  }\n  else {\n    sVar19 = (bVar11 >> 3) * uVar18;\n  }\n  if (png_ptr->info_rowbytes == sVar19) goto LAB_0002fb8c;\n  pbVar15 = PTR_s_nt_0005301c + 0xb58;\n  uVar34 = (*(code *)PTR_png_error_0005340c)(png_ptr);\n  uVar4 = (uint)((ulonglong)uVar34 >> 0x20);\n  png_ptr = (png_const_structrp)uVar34;\nLAB_0002fd9c:\n  uVar12 = uVar4 >> 3;\n  if ((uVar4 & 7) == 0) {\n    iVar8 = in_t2 * uVar12;\n    dp = dp + iVar8;\n    unaff_s3 = uVar18 * uVar12 - iVar8;\n    unaff_s0 = pbVar15 + iVar8;\n    unaff_s2 = uVar12;\n    if (((byte *)display != (byte *)0x0) &&\n       (unaff_s2 = uVar12 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar12 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *dp = *unaff_s0;\n        dp[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n      } while (1 < unaff_s3);\n      *dp = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar11 = *unaff_s0;\n      while( true ) {\n        *dp = bVar11;\n        dp[1] = unaff_s0[1];\n        dp[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        dp = dp + unaff_s1;\n        bVar11 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *dp = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n        *dp = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)dp | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar8 = (*(code *)PTR_memcpy_000534c4)(dp,unaff_s0,unaff_s2), unaff_s1 < unaff_s3) {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        dp = (png_bytep)(iVar8 + unaff_s1);\n      }\n      return;\n    }\n    uVar4 = unaff_s1 - unaff_s2;\n    if ((((uint)dp | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar15 = dp;\n      while( true ) {\n        do {\n          pbVar24 = unaff_s0 + 2;\n          pbVar5 = dp + 2;\n          *(undefined2 *)dp = *(undefined2 *)unaff_s0;\n          dp = pbVar5;\n          unaff_s0 = pbVar24;\n        } while (pbVar5 + -unaff_s2 != pbVar15);\n        bVar3 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar3) break;\n        dp = pbVar5 + (uVar4 & 0xfffffffe);\n        unaff_s0 = pbVar24 + (uVar4 & 0xfffffffe);\n        pbVar15 = dp;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar5 = pbVar15 + 1;\n            *pbVar15 = *unaff_s0;\n            pbVar15 = pbVar5;\n            unaff_s0 = unaff_s0 + 1;\n          } while (dp + unaff_s3 != pbVar5);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar15 = dp;\n    while( true ) {\n      do {\n        pbVar5 = dp + 4;\n        uVar16 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)dp = uVar16;\n        dp = pbVar5;\n      } while (pbVar15 + (unaff_s2 - (int)pbVar5) != (byte *)0x0);\n      bVar3 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar3) break;\n      dp = pbVar5 + (uVar4 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar4 & 0xfffffffc);\n      uVar18 = 0;\n      pbVar15 = dp;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar5 = unaff_s0 + uVar18;\n          pbVar15 = dp + uVar18;\n          uVar18 = uVar18 + 1;\n          *pbVar15 = *pbVar5;\n        } while (uVar18 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }\n  ppVar17 = (png_const_structrp)(PTR_s_nt_0005301c + 0xb98);\n  puVar31 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)();\n  piVar25 = *(int **)(puVar31 + 0x233b0);\n  iStack_5c = *piVar25;\n  ppVar13 = png_ptr;\n  pbStack_58 = unaff_s0;\n  uStack_54 = uVar12;\n  uStack_50 = unaff_s2;\n  if ((ppVar17 == (png_const_structrp)0x0) || (png_ptr == (png_const_structrp)0x0))\n  goto LAB_00030268;\n  pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n  bVar11 = (byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n  uVar4 = (uint)bVar11;\n  uVar12 = (int)pvVar9 - 1;\n  display = display * 4 + *(int *)(puVar31 + 0x22f10) + 0xd40;\n  iVar8 = *(int *)display;\n  ppVar6 = (png_const_structrp)((int)pvVar9 * iVar8);\n  puVar14 = &ppVar6[-1].field_0x3e7;\n  if (uVar4 == 2) {\n    pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 2) - 8));\n    ppVar13 = (png_const_structrp)\n              ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 2) - 8));\n    puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 3);\n    ppVar17 = (png_const_structrp)((int)pvVar9 + 3);\n    if ((uVar18 & 0x10000) == 0) {\n      ppVar28 = (png_const_structrp)(~(uint)ppVar17 << 1);\n      uVar12 = ~(uint)puVar14 << 1;\n      iVar21 = 2;\n      pbVar24 = &DAT_00000006;\n      pbVar5 = (byte *)0x0;\n    }\n    else {\n      ppVar17 = (png_const_structrp)((int)ppVar17 * 2);\n      uVar12 = (int)puVar14 * 2;\n      iVar21 = -2;\n      pbVar24 = (byte *)0x0;\n      pbVar5 = &DAT_00000006;\n      ppVar28 = ppVar17;\n    }\n    pbVar30 = (byte *)((uint)ppVar28 & 6);\n    display = uVar12 & 6;\n    pvVar32 = (void *)0x0;\n    if (pvVar9 != (void *)0x0) {\n      do {\n        bVar11 = *pbVar15;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_0003051c:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar24 == pbVar30) {\n          pbVar15 = pbVar15 + -1;\n          pbVar30 = pbVar5;\n        }\n        else {\n          pbVar30 = pbVar30 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;\n  }\n  else {\n    if (uVar4 == 4) {\n      pbVar5 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8));\n      pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                        (((uint)puVar14 >> 1) - 8));\n      puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1);\n      if ((uVar18 & 0x10000) == 0) {\n        ppVar13 = (png_const_structrp)((int)pvVar9 + 1U & 1);\n        pbVar24 = &DAT_00000004;\n        if (ppVar13 != (png_const_structrp)0x0) {\n          pbVar24 = (byte *)0x0;\n        }\n        if (((uint)puVar14 & 1) == 0) {\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = (int)&DAT_00000004;\n          pbVar30 = (byte *)0x0;\n        }\n        else {\n          pbVar30 = (byte *)0x0;\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = 0;\n        }\n      }\n      else {\n        ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4);\n        display = (int)puVar14 * 4 & 4;\n        iVar21 = -4;\n        pbVar20 = (byte *)0x0;\n        pbVar30 = &DAT_00000004;\n        pbVar24 = (byte *)((uint)ppVar13 & 4);\n      }\n      pvVar32 = (void *)0x0;\n      ppVar17 = ppVar6;\n      if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n      do {\n        bVar11 = *pbVar5;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_00030440:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar20 == pbVar24) {\n          pbVar5 = pbVar5 + -1;\n          pbVar24 = pbVar30;\n        }\n        else {\n          pbVar24 = pbVar24 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      ppVar13 = (png_const_structrp)0x0;\n    }\n    else {\n      pbVar15 = (byte *)(uint)(bVar11 >> 3);\n      if (uVar4 == 1) {\n        pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8));\n        display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8);\n        uVar12 = (int)pvVar9 + 7;\n        puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3);\n        if ((uVar18 & 0x10000) == 0) {\n          uVar12 = ~uVar12;\n          puVar14 = (undefined1 *)~(uint)puVar14;\n          iVar21 = 1;\n          ppVar10 = (png_const_structrp)&DAT_00000007;\n          ppVar28 = (png_const_structrp)0x0;\n        }\n        else {\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }\n        ppVar22 = (png_const_structrp)(uVar12 & 7);\n        ppVar13 = (png_const_structrp)((uint)puVar14 & 7);\n        pvVar32 = (void *)0x0;\n        if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n        do {\n          bVar11 = *pbVar15;\n          if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }\n          if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }\n          pvVar32 = (void *)((int)pvVar32 + 1);\n        } while (pvVar32 < pvVar9);\n        uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      }\n      else {\n        ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);\n        ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);\n        ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));\n        if (pvVar9 != (void *)0x0) {\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }\n      }\n    }\nLAB_0003024c:\n    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;\n    if (7 < uVar4) {\n      png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)((uVar4 >> 3) * (int)ppVar6);\n      goto LAB_00030268;\n    }\n  }\n  png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)(uVar4 * (int)ppVar6 + 7 >> 3);\nLAB_00030268:\n  if (iStack_5c == *piVar25) {\n    return;\n  }\n  pcVar33 = *(code **)(puVar31 + 0x23378);\n  (*pcVar33)();\n  if (puVar31 + 0x2aee3 < &DAT_00000004) {\n    if (ppVar13->read_filter[0] == (_func_void_png_row_infop_png_bytep_png_const_bytep *)0x0) {\n      bVar11 = ppVar13->pixel_depth;\n      ppVar13->read_filter[0] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x58a0);\n      ppVar13->read_filter[1] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5858);\n      ppVar13->read_filter[2] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5828);\n      if ((int)(bVar11 + 7) >> 3 == 1) {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x579c);\n      }\n      else {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x5704);\n      }\n    }\n                    /* WARNING: Could not recover jumptable at 0x00030614. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs[(int)(puVar31 + 0x2afc5 + -2)])\n              (ppVar17,display,uVar18);\n    return;\n  }\n  return;\n}\n\n" comment (function_definition "void png_combine_row(png_const_structrp png_ptr,png_bytep dp,int display)\n\n{\n  png_byte pVar1;\n  byte bVar2;\n  bool bVar3;\n  uint uVar4;\n  byte *pbVar5;\n  png_const_structrp ppVar6;\n  int iVar7;\n  int iVar8;\n  byte bVar11;\n  uint extraout_v1;\n  void *pvVar9;\n  png_const_structrp ppVar10;\n  uint uVar12;\n  png_const_structrp ppVar13;\n  undefined1 *puVar14;\n  byte *pbVar15;\n  undefined4 uVar16;\n  png_const_structrp ppVar17;\n  uint uVar18;\n  size_t sVar19;\n  uint in_t2;\n  byte *pbVar20;\n  uint in_t3;\n  int iVar21;\n  png_const_structrp ppVar22;\n  byte *unaff_s0;\n  uint uVar23;\n  byte *pbVar24;\n  uint unaff_s1;\n  byte bVar26;\n  int *piVar25;\n  uint unaff_s2;\n  uint uVar27;\n  uint unaff_s3;\n  png_const_structrp ppVar28;\n  int iVar29;\n  byte *pbVar30;\n  undefined *puVar31;\n  void *pvVar32;\n  code *pcVar33;\n  undefined8 uVar34;\n  png_const_structrp ppStack_74;\n  int iStack_5c;\n  byte *pbStack_58;\n  uint uStack_54;\n  uint uStack_50;\n  \n  uVar18 = png_ptr->width;\n  bVar11 = png_ptr->transformed_pixel_depth;\n  uVar4 = (uint)bVar11;\n  if (uVar4 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar4 = extraout_v1;\n    goto LAB_00030094;\n  }\n  pbVar15 = png_ptr->row_buf + 1;\n  if (png_ptr->info_rowbytes == 0) {\nLAB_0002fb8c:\n    uVar12 = uVar4 * uVar18;\n    if (uVar18 == 0) {\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar27 = uVar12 & 7;\n    bVar26 = 0;\n    if (uVar27 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      pVar1 = png_ptr->interlaced;\n    }\n    else {\n      if (uVar4 < 8) {\n        uVar23 = uVar12 + 7 >> 3;\n      }\n      else {\n        uVar23 = (bVar11 >> 3) * uVar18;\n      }\n      unaff_s0 = dp + (uVar23 - 1);\n      bVar26 = *unaff_s0;\n      if (-1 < (int)(png_ptr->transformations << 0xf)) {\n        unaff_s2 = 0xff >> uVar27;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar27;\n      pVar1 = png_ptr->interlaced;\n    }\n    if ((pVar1 != '\0') && ((png_ptr->transformations & 2) != 0)) {\n      bVar2 = png_ptr->pass;\n      in_t3 = (uint)bVar2;\n      if ((in_t3 < 6) && ((display == 0 || ((display == 1 && ((bVar2 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar18 <= in_t2) {\n          return;\n        }\n        if (uVar4 < 8) {\n          if (uVar4 == 0) {\n            trap(7);\n          }\n          iVar8 = 1;\n          if ((int)(png_ptr->transformations << 0xf) < 0) {\n            if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }\n            bVar3 = uVar18 <= 8 / uVar4;\n            uVar18 = uVar18 - 8 / uVar4;\n            if (bVar3) break;\n            dp = dp + 1;\n            pbVar15 = pbVar15 + 1;\n            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar4 < 8) {\n      uVar18 = uVar12 + 7 >> 3;\n    }\n    else {\n      uVar18 = (bVar11 >> 3) * uVar18;\n    }\n    (*(code *)PTR_memcpy_000534c4)(dp,pbVar15,uVar18);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar26) & (byte)unaff_s2;\n    }\n    return;\n  }\n  if (uVar4 < 8) {\n    sVar19 = uVar4 * uVar18 + 7 >> 3;\n  }\n  else {\n    sVar19 = (bVar11 >> 3) * uVar18;\n  }\n  if (png_ptr->info_rowbytes == sVar19) goto LAB_0002fb8c;\n  pbVar15 = PTR_s_nt_0005301c + 0xb58;\n  uVar34 = (*(code *)PTR_png_error_0005340c)(png_ptr);\n  uVar4 = (uint)((ulonglong)uVar34 >> 0x20);\n  png_ptr = (png_const_structrp)uVar34;\nLAB_0002fd9c:\n  uVar12 = uVar4 >> 3;\n  if ((uVar4 & 7) == 0) {\n    iVar8 = in_t2 * uVar12;\n    dp = dp + iVar8;\n    unaff_s3 = uVar18 * uVar12 - iVar8;\n    unaff_s0 = pbVar15 + iVar8;\n    unaff_s2 = uVar12;\n    if (((byte *)display != (byte *)0x0) &&\n       (unaff_s2 = uVar12 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar12 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *dp = *unaff_s0;\n        dp[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n      } while (1 < unaff_s3);\n      *dp = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar11 = *unaff_s0;\n      while( true ) {\n        *dp = bVar11;\n        dp[1] = unaff_s0[1];\n        dp[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        dp = dp + unaff_s1;\n        bVar11 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *dp = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n        *dp = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)dp | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar8 = (*(code *)PTR_memcpy_000534c4)(dp,unaff_s0,unaff_s2), unaff_s1 < unaff_s3) {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        dp = (png_bytep)(iVar8 + unaff_s1);\n      }\n      return;\n    }\n    uVar4 = unaff_s1 - unaff_s2;\n    if ((((uint)dp | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar15 = dp;\n      while( true ) {\n        do {\n          pbVar24 = unaff_s0 + 2;\n          pbVar5 = dp + 2;\n          *(undefined2 *)dp = *(undefined2 *)unaff_s0;\n          dp = pbVar5;\n          unaff_s0 = pbVar24;\n        } while (pbVar5 + -unaff_s2 != pbVar15);\n        bVar3 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar3) break;\n        dp = pbVar5 + (uVar4 & 0xfffffffe);\n        unaff_s0 = pbVar24 + (uVar4 & 0xfffffffe);\n        pbVar15 = dp;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar5 = pbVar15 + 1;\n            *pbVar15 = *unaff_s0;\n            pbVar15 = pbVar5;\n            unaff_s0 = unaff_s0 + 1;\n          } while (dp + unaff_s3 != pbVar5);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar15 = dp;\n    while( true ) {\n      do {\n        pbVar5 = dp + 4;\n        uVar16 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)dp = uVar16;\n        dp = pbVar5;\n      } while (pbVar15 + (unaff_s2 - (int)pbVar5) != (byte *)0x0);\n      bVar3 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar3) break;\n      dp = pbVar5 + (uVar4 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar4 & 0xfffffffc);\n      uVar18 = 0;\n      pbVar15 = dp;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar5 = unaff_s0 + uVar18;\n          pbVar15 = dp + uVar18;\n          uVar18 = uVar18 + 1;\n          *pbVar15 = *pbVar5;\n        } while (uVar18 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }\n  ppVar17 = (png_const_structrp)(PTR_s_nt_0005301c + 0xb98);\n  puVar31 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)();\n  piVar25 = *(int **)(puVar31 + 0x233b0);\n  iStack_5c = *piVar25;\n  ppVar13 = png_ptr;\n  pbStack_58 = unaff_s0;\n  uStack_54 = uVar12;\n  uStack_50 = unaff_s2;\n  if ((ppVar17 == (png_const_structrp)0x0) || (png_ptr == (png_const_structrp)0x0))\n  goto LAB_00030268;\n  pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n  bVar11 = (byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n  uVar4 = (uint)bVar11;\n  uVar12 = (int)pvVar9 - 1;\n  display = display * 4 + *(int *)(puVar31 + 0x22f10) + 0xd40;\n  iVar8 = *(int *)display;\n  ppVar6 = (png_const_structrp)((int)pvVar9 * iVar8);\n  puVar14 = &ppVar6[-1].field_0x3e7;\n  if (uVar4 == 2) {\n    pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 2) - 8));\n    ppVar13 = (png_const_structrp)\n              ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 2) - 8));\n    puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 3);\n    ppVar17 = (png_const_structrp)((int)pvVar9 + 3);\n    if ((uVar18 & 0x10000) == 0) {\n      ppVar28 = (png_const_structrp)(~(uint)ppVar17 << 1);\n      uVar12 = ~(uint)puVar14 << 1;\n      iVar21 = 2;\n      pbVar24 = &DAT_00000006;\n      pbVar5 = (byte *)0x0;\n    }\n    else {\n      ppVar17 = (png_const_structrp)((int)ppVar17 * 2);\n      uVar12 = (int)puVar14 * 2;\n      iVar21 = -2;\n      pbVar24 = (byte *)0x0;\n      pbVar5 = &DAT_00000006;\n      ppVar28 = ppVar17;\n    }\n    pbVar30 = (byte *)((uint)ppVar28 & 6);\n    display = uVar12 & 6;\n    pvVar32 = (void *)0x0;\n    if (pvVar9 != (void *)0x0) {\n      do {\n        bVar11 = *pbVar15;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_0003051c:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar24 == pbVar30) {\n          pbVar15 = pbVar15 + -1;\n          pbVar30 = pbVar5;\n        }\n        else {\n          pbVar30 = pbVar30 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;\n  }\n  else {\n    if (uVar4 == 4) {\n      pbVar5 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8));\n      pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                        (((uint)puVar14 >> 1) - 8));\n      puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1);\n      if ((uVar18 & 0x10000) == 0) {\n        ppVar13 = (png_const_structrp)((int)pvVar9 + 1U & 1);\n        pbVar24 = &DAT_00000004;\n        if (ppVar13 != (png_const_structrp)0x0) {\n          pbVar24 = (byte *)0x0;\n        }\n        if (((uint)puVar14 & 1) == 0) {\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = (int)&DAT_00000004;\n          pbVar30 = (byte *)0x0;\n        }\n        else {\n          pbVar30 = (byte *)0x0;\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = 0;\n        }\n      }\n      else {\n        ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4);\n        display = (int)puVar14 * 4 & 4;\n        iVar21 = -4;\n        pbVar20 = (byte *)0x0;\n        pbVar30 = &DAT_00000004;\n        pbVar24 = (byte *)((uint)ppVar13 & 4);\n      }\n      pvVar32 = (void *)0x0;\n      ppVar17 = ppVar6;\n      if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n      do {\n        bVar11 = *pbVar5;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_00030440:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar20 == pbVar24) {\n          pbVar5 = pbVar5 + -1;\n          pbVar24 = pbVar30;\n        }\n        else {\n          pbVar24 = pbVar24 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      ppVar13 = (png_const_structrp)0x0;\n    }\n    else {\n      pbVar15 = (byte *)(uint)(bVar11 >> 3);\n      if (uVar4 == 1) {\n        pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8));\n        display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8);\n        uVar12 = (int)pvVar9 + 7;\n        puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3);\n        if ((uVar18 & 0x10000) == 0) {\n          uVar12 = ~uVar12;\n          puVar14 = (undefined1 *)~(uint)puVar14;\n          iVar21 = 1;\n          ppVar10 = (png_const_structrp)&DAT_00000007;\n          ppVar28 = (png_const_structrp)0x0;\n        }\n        else {\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }\n        ppVar22 = (png_const_structrp)(uVar12 & 7);\n        ppVar13 = (png_const_structrp)((uint)puVar14 & 7);\n        pvVar32 = (void *)0x0;\n        if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n        do {\n          bVar11 = *pbVar15;\n          if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }\n          if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }\n          pvVar32 = (void *)((int)pvVar32 + 1);\n        } while (pvVar32 < pvVar9);\n        uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      }\n      else {\n        ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);\n        ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);\n        ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));\n        if (pvVar9 != (void *)0x0) {\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }\n      }\n    }\nLAB_0003024c:\n    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;\n    if (7 < uVar4) {\n      png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)((uVar4 >> 3) * (int)ppVar6);\n      goto LAB_00030268;\n    }\n  }\n  png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)(uVar4 * (int)ppVar6 + 7 >> 3);\nLAB_00030268:\n  if (iStack_5c == *piVar25) {\n    return;\n  }\n  pcVar33 = *(code **)(puVar31 + 0x23378);\n  (*pcVar33)();\n  if (puVar31 + 0x2aee3 < &DAT_00000004) {\n    if (ppVar13->read_filter[0] == (_func_void_png_row_infop_png_bytep_png_const_bytep *)0x0) {\n      bVar11 = ppVar13->pixel_depth;\n      ppVar13->read_filter[0] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x58a0);\n      ppVar13->read_filter[1] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5858);\n      ppVar13->read_filter[2] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5828);\n      if ((int)(bVar11 + 7) >> 3 == 1) {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x579c);\n      }\n      else {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x5704);\n      }\n    }\n                    /* WARNING: Could not recover jumptable at 0x00030614. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs[(int)(puVar31 + 0x2afc5 + -2)])\n              (ppVar17,display,uVar18);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "png_combine_row(png_const_structrp png_ptr,png_bytep dp,int display)" identifier (parameter_list "(png_const_structrp png_ptr,png_bytep dp,int display)" ( (parameter_declaration "png_const_structrp png_ptr" type_identifier identifier) , (parameter_declaration "png_bytep dp" type_identifier identifier) , (parameter_declaration "int display" primitive_type identifier) ))) (compound_statement "{\n  png_byte pVar1;\n  byte bVar2;\n  bool bVar3;\n  uint uVar4;\n  byte *pbVar5;\n  png_const_structrp ppVar6;\n  int iVar7;\n  int iVar8;\n  byte bVar11;\n  uint extraout_v1;\n  void *pvVar9;\n  png_const_structrp ppVar10;\n  uint uVar12;\n  png_const_structrp ppVar13;\n  undefined1 *puVar14;\n  byte *pbVar15;\n  undefined4 uVar16;\n  png_const_structrp ppVar17;\n  uint uVar18;\n  size_t sVar19;\n  uint in_t2;\n  byte *pbVar20;\n  uint in_t3;\n  int iVar21;\n  png_const_structrp ppVar22;\n  byte *unaff_s0;\n  uint uVar23;\n  byte *pbVar24;\n  uint unaff_s1;\n  byte bVar26;\n  int *piVar25;\n  uint unaff_s2;\n  uint uVar27;\n  uint unaff_s3;\n  png_const_structrp ppVar28;\n  int iVar29;\n  byte *pbVar30;\n  undefined *puVar31;\n  void *pvVar32;\n  code *pcVar33;\n  undefined8 uVar34;\n  png_const_structrp ppStack_74;\n  int iStack_5c;\n  byte *pbStack_58;\n  uint uStack_54;\n  uint uStack_50;\n  \n  uVar18 = png_ptr->width;\n  bVar11 = png_ptr->transformed_pixel_depth;\n  uVar4 = (uint)bVar11;\n  if (uVar4 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar4 = extraout_v1;\n    goto LAB_00030094;\n  }\n  pbVar15 = png_ptr->row_buf + 1;\n  if (png_ptr->info_rowbytes == 0) {\nLAB_0002fb8c:\n    uVar12 = uVar4 * uVar18;\n    if (uVar18 == 0) {\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar27 = uVar12 & 7;\n    bVar26 = 0;\n    if (uVar27 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      pVar1 = png_ptr->interlaced;\n    }\n    else {\n      if (uVar4 < 8) {\n        uVar23 = uVar12 + 7 >> 3;\n      }\n      else {\n        uVar23 = (bVar11 >> 3) * uVar18;\n      }\n      unaff_s0 = dp + (uVar23 - 1);\n      bVar26 = *unaff_s0;\n      if (-1 < (int)(png_ptr->transformations << 0xf)) {\n        unaff_s2 = 0xff >> uVar27;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar27;\n      pVar1 = png_ptr->interlaced;\n    }\n    if ((pVar1 != '\0') && ((png_ptr->transformations & 2) != 0)) {\n      bVar2 = png_ptr->pass;\n      in_t3 = (uint)bVar2;\n      if ((in_t3 < 6) && ((display == 0 || ((display == 1 && ((bVar2 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar18 <= in_t2) {\n          return;\n        }\n        if (uVar4 < 8) {\n          if (uVar4 == 0) {\n            trap(7);\n          }\n          iVar8 = 1;\n          if ((int)(png_ptr->transformations << 0xf) < 0) {\n            if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }\n            bVar3 = uVar18 <= 8 / uVar4;\n            uVar18 = uVar18 - 8 / uVar4;\n            if (bVar3) break;\n            dp = dp + 1;\n            pbVar15 = pbVar15 + 1;\n            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar4 < 8) {\n      uVar18 = uVar12 + 7 >> 3;\n    }\n    else {\n      uVar18 = (bVar11 >> 3) * uVar18;\n    }\n    (*(code *)PTR_memcpy_000534c4)(dp,pbVar15,uVar18);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar26) & (byte)unaff_s2;\n    }\n    return;\n  }\n  if (uVar4 < 8) {\n    sVar19 = uVar4 * uVar18 + 7 >> 3;\n  }\n  else {\n    sVar19 = (bVar11 >> 3) * uVar18;\n  }\n  if (png_ptr->info_rowbytes == sVar19) goto LAB_0002fb8c;\n  pbVar15 = PTR_s_nt_0005301c + 0xb58;\n  uVar34 = (*(code *)PTR_png_error_0005340c)(png_ptr);\n  uVar4 = (uint)((ulonglong)uVar34 >> 0x20);\n  png_ptr = (png_const_structrp)uVar34;\nLAB_0002fd9c:\n  uVar12 = uVar4 >> 3;\n  if ((uVar4 & 7) == 0) {\n    iVar8 = in_t2 * uVar12;\n    dp = dp + iVar8;\n    unaff_s3 = uVar18 * uVar12 - iVar8;\n    unaff_s0 = pbVar15 + iVar8;\n    unaff_s2 = uVar12;\n    if (((byte *)display != (byte *)0x0) &&\n       (unaff_s2 = uVar12 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar12 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *dp = *unaff_s0;\n        dp[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n      } while (1 < unaff_s3);\n      *dp = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar11 = *unaff_s0;\n      while( true ) {\n        *dp = bVar11;\n        dp[1] = unaff_s0[1];\n        dp[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        dp = dp + unaff_s1;\n        bVar11 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *dp = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n        *dp = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)dp | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar8 = (*(code *)PTR_memcpy_000534c4)(dp,unaff_s0,unaff_s2), unaff_s1 < unaff_s3) {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        dp = (png_bytep)(iVar8 + unaff_s1);\n      }\n      return;\n    }\n    uVar4 = unaff_s1 - unaff_s2;\n    if ((((uint)dp | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar15 = dp;\n      while( true ) {\n        do {\n          pbVar24 = unaff_s0 + 2;\n          pbVar5 = dp + 2;\n          *(undefined2 *)dp = *(undefined2 *)unaff_s0;\n          dp = pbVar5;\n          unaff_s0 = pbVar24;\n        } while (pbVar5 + -unaff_s2 != pbVar15);\n        bVar3 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar3) break;\n        dp = pbVar5 + (uVar4 & 0xfffffffe);\n        unaff_s0 = pbVar24 + (uVar4 & 0xfffffffe);\n        pbVar15 = dp;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar5 = pbVar15 + 1;\n            *pbVar15 = *unaff_s0;\n            pbVar15 = pbVar5;\n            unaff_s0 = unaff_s0 + 1;\n          } while (dp + unaff_s3 != pbVar5);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar15 = dp;\n    while( true ) {\n      do {\n        pbVar5 = dp + 4;\n        uVar16 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)dp = uVar16;\n        dp = pbVar5;\n      } while (pbVar15 + (unaff_s2 - (int)pbVar5) != (byte *)0x0);\n      bVar3 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar3) break;\n      dp = pbVar5 + (uVar4 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar4 & 0xfffffffc);\n      uVar18 = 0;\n      pbVar15 = dp;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar5 = unaff_s0 + uVar18;\n          pbVar15 = dp + uVar18;\n          uVar18 = uVar18 + 1;\n          *pbVar15 = *pbVar5;\n        } while (uVar18 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }\n  ppVar17 = (png_const_structrp)(PTR_s_nt_0005301c + 0xb98);\n  puVar31 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)();\n  piVar25 = *(int **)(puVar31 + 0x233b0);\n  iStack_5c = *piVar25;\n  ppVar13 = png_ptr;\n  pbStack_58 = unaff_s0;\n  uStack_54 = uVar12;\n  uStack_50 = unaff_s2;\n  if ((ppVar17 == (png_const_structrp)0x0) || (png_ptr == (png_const_structrp)0x0))\n  goto LAB_00030268;\n  pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n  bVar11 = (byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n  uVar4 = (uint)bVar11;\n  uVar12 = (int)pvVar9 - 1;\n  display = display * 4 + *(int *)(puVar31 + 0x22f10) + 0xd40;\n  iVar8 = *(int *)display;\n  ppVar6 = (png_const_structrp)((int)pvVar9 * iVar8);\n  puVar14 = &ppVar6[-1].field_0x3e7;\n  if (uVar4 == 2) {\n    pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 2) - 8));\n    ppVar13 = (png_const_structrp)\n              ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 2) - 8));\n    puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 3);\n    ppVar17 = (png_const_structrp)((int)pvVar9 + 3);\n    if ((uVar18 & 0x10000) == 0) {\n      ppVar28 = (png_const_structrp)(~(uint)ppVar17 << 1);\n      uVar12 = ~(uint)puVar14 << 1;\n      iVar21 = 2;\n      pbVar24 = &DAT_00000006;\n      pbVar5 = (byte *)0x0;\n    }\n    else {\n      ppVar17 = (png_const_structrp)((int)ppVar17 * 2);\n      uVar12 = (int)puVar14 * 2;\n      iVar21 = -2;\n      pbVar24 = (byte *)0x0;\n      pbVar5 = &DAT_00000006;\n      ppVar28 = ppVar17;\n    }\n    pbVar30 = (byte *)((uint)ppVar28 & 6);\n    display = uVar12 & 6;\n    pvVar32 = (void *)0x0;\n    if (pvVar9 != (void *)0x0) {\n      do {\n        bVar11 = *pbVar15;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_0003051c:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar24 == pbVar30) {\n          pbVar15 = pbVar15 + -1;\n          pbVar30 = pbVar5;\n        }\n        else {\n          pbVar30 = pbVar30 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;\n  }\n  else {\n    if (uVar4 == 4) {\n      pbVar5 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8));\n      pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                        (((uint)puVar14 >> 1) - 8));\n      puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1);\n      if ((uVar18 & 0x10000) == 0) {\n        ppVar13 = (png_const_structrp)((int)pvVar9 + 1U & 1);\n        pbVar24 = &DAT_00000004;\n        if (ppVar13 != (png_const_structrp)0x0) {\n          pbVar24 = (byte *)0x0;\n        }\n        if (((uint)puVar14 & 1) == 0) {\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = (int)&DAT_00000004;\n          pbVar30 = (byte *)0x0;\n        }\n        else {\n          pbVar30 = (byte *)0x0;\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = 0;\n        }\n      }\n      else {\n        ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4);\n        display = (int)puVar14 * 4 & 4;\n        iVar21 = -4;\n        pbVar20 = (byte *)0x0;\n        pbVar30 = &DAT_00000004;\n        pbVar24 = (byte *)((uint)ppVar13 & 4);\n      }\n      pvVar32 = (void *)0x0;\n      ppVar17 = ppVar6;\n      if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n      do {\n        bVar11 = *pbVar5;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_00030440:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar20 == pbVar24) {\n          pbVar5 = pbVar5 + -1;\n          pbVar24 = pbVar30;\n        }\n        else {\n          pbVar24 = pbVar24 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      ppVar13 = (png_const_structrp)0x0;\n    }\n    else {\n      pbVar15 = (byte *)(uint)(bVar11 >> 3);\n      if (uVar4 == 1) {\n        pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8));\n        display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8);\n        uVar12 = (int)pvVar9 + 7;\n        puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3);\n        if ((uVar18 & 0x10000) == 0) {\n          uVar12 = ~uVar12;\n          puVar14 = (undefined1 *)~(uint)puVar14;\n          iVar21 = 1;\n          ppVar10 = (png_const_structrp)&DAT_00000007;\n          ppVar28 = (png_const_structrp)0x0;\n        }\n        else {\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }\n        ppVar22 = (png_const_structrp)(uVar12 & 7);\n        ppVar13 = (png_const_structrp)((uint)puVar14 & 7);\n        pvVar32 = (void *)0x0;\n        if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n        do {\n          bVar11 = *pbVar15;\n          if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }\n          if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }\n          pvVar32 = (void *)((int)pvVar32 + 1);\n        } while (pvVar32 < pvVar9);\n        uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      }\n      else {\n        ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);\n        ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);\n        ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));\n        if (pvVar9 != (void *)0x0) {\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }\n      }\n    }\nLAB_0003024c:\n    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;\n    if (7 < uVar4) {\n      png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)((uVar4 >> 3) * (int)ppVar6);\n      goto LAB_00030268;\n    }\n  }\n  png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)(uVar4 * (int)ppVar6 + 7 >> 3);\nLAB_00030268:\n  if (iStack_5c == *piVar25) {\n    return;\n  }\n  pcVar33 = *(code **)(puVar31 + 0x23378);\n  (*pcVar33)();\n  if (puVar31 + 0x2aee3 < &DAT_00000004) {\n    if (ppVar13->read_filter[0] == (_func_void_png_row_infop_png_bytep_png_const_bytep *)0x0) {\n      bVar11 = ppVar13->pixel_depth;\n      ppVar13->read_filter[0] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x58a0);\n      ppVar13->read_filter[1] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5858);\n      ppVar13->read_filter[2] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5828);\n      if ((int)(bVar11 + 7) >> 3 == 1) {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x579c);\n      }\n      else {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x5704);\n      }\n    }\n                    /* WARNING: Could not recover jumptable at 0x00030614. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs[(int)(puVar31 + 0x2afc5 + -2)])\n              (ppVar17,display,uVar18);\n    return;\n  }\n  return;\n}" { (declaration "png_byte pVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "png_const_structrp ppVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "uint extraout_v1;" type_identifier identifier ;) (declaration "void *pvVar9;" primitive_type (pointer_declarator "*pvVar9" * identifier) ;) (declaration "png_const_structrp ppVar10;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "png_const_structrp ppVar13;" type_identifier identifier ;) (declaration "undefined1 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "png_const_structrp ppVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "size_t sVar19;" primitive_type identifier ;) (declaration "uint in_t2;" type_identifier identifier ;) (declaration "byte *pbVar20;" type_identifier (pointer_declarator "*pbVar20" * identifier) ;) (declaration "uint in_t3;" type_identifier identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "png_const_structrp ppVar22;" type_identifier identifier ;) (declaration "byte *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "byte *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (declaration "uint unaff_s1;" type_identifier identifier ;) (declaration "byte bVar26;" type_identifier identifier ;) (declaration "int *piVar25;" primitive_type (pointer_declarator "*piVar25" * identifier) ;) (declaration "uint unaff_s2;" type_identifier identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "uint unaff_s3;" type_identifier identifier ;) (declaration "png_const_structrp ppVar28;" type_identifier identifier ;) (declaration "int iVar29;" primitive_type identifier ;) (declaration "byte *pbVar30;" type_identifier (pointer_declarator "*pbVar30" * identifier) ;) (declaration "undefined *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "void *pvVar32;" primitive_type (pointer_declarator "*pvVar32" * identifier) ;) (declaration "code *pcVar33;" type_identifier (pointer_declarator "*pcVar33" * identifier) ;) (declaration "undefined8 uVar34;" type_identifier identifier ;) (declaration "png_const_structrp ppStack_74;" type_identifier identifier ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "byte *pbStack_58;" type_identifier (pointer_declarator "*pbStack_58" * identifier) ;) (declaration "uint uStack_54;" type_identifier identifier ;) (declaration "uint uStack_50;" type_identifier identifier ;) (expression_statement "uVar18 = png_ptr->width;" (assignment_expression "uVar18 = png_ptr->width" identifier = (field_expression "png_ptr->width" identifier -> field_identifier)) ;) (expression_statement "bVar11 = png_ptr->transformed_pixel_depth;" (assignment_expression "bVar11 = png_ptr->transformed_pixel_depth" identifier = (field_expression "png_ptr->transformed_pixel_depth" identifier -> field_identifier)) ;) (expression_statement "uVar4 = (uint)bVar11;" (assignment_expression "uVar4 = (uint)bVar11" identifier = (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar4 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar4 = extraout_v1;\n    goto LAB_00030094;\n  }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar4 = extraout_v1;\n    goto LAB_00030094;\n  }" { (labeled_statement "LAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();" statement_identifier : (expression_statement "(*(code *)PTR_png_error_0005340c)();" (call_expression "(*(code *)PTR_png_error_0005340c)()" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;)) (expression_statement "uVar4 = extraout_v1;" (assignment_expression "uVar4 = extraout_v1" identifier = identifier) ;) (goto_statement "goto LAB_00030094;" goto statement_identifier ;) })) (expression_statement "pbVar15 = png_ptr->row_buf + 1;" (assignment_expression "pbVar15 = png_ptr->row_buf + 1" identifier = (binary_expression "png_ptr->row_buf + 1" (field_expression "png_ptr->row_buf" identifier -> field_identifier) + number_literal)) ;) (if_statement "if (png_ptr->info_rowbytes == 0) {\nLAB_0002fb8c:\n    uVar12 = uVar4 * uVar18;\n    if (uVar18 == 0) {\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar27 = uVar12 & 7;\n    bVar26 = 0;\n    if (uVar27 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      pVar1 = png_ptr->interlaced;\n    }\n    else {\n      if (uVar4 < 8) {\n        uVar23 = uVar12 + 7 >> 3;\n      }\n      else {\n        uVar23 = (bVar11 >> 3) * uVar18;\n      }\n      unaff_s0 = dp + (uVar23 - 1);\n      bVar26 = *unaff_s0;\n      if (-1 < (int)(png_ptr->transformations << 0xf)) {\n        unaff_s2 = 0xff >> uVar27;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar27;\n      pVar1 = png_ptr->interlaced;\n    }\n    if ((pVar1 != '\0') && ((png_ptr->transformations & 2) != 0)) {\n      bVar2 = png_ptr->pass;\n      in_t3 = (uint)bVar2;\n      if ((in_t3 < 6) && ((display == 0 || ((display == 1 && ((bVar2 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar18 <= in_t2) {\n          return;\n        }\n        if (uVar4 < 8) {\n          if (uVar4 == 0) {\n            trap(7);\n          }\n          iVar8 = 1;\n          if ((int)(png_ptr->transformations << 0xf) < 0) {\n            if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }\n            bVar3 = uVar18 <= 8 / uVar4;\n            uVar18 = uVar18 - 8 / uVar4;\n            if (bVar3) break;\n            dp = dp + 1;\n            pbVar15 = pbVar15 + 1;\n            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar4 < 8) {\n      uVar18 = uVar12 + 7 >> 3;\n    }\n    else {\n      uVar18 = (bVar11 >> 3) * uVar18;\n    }\n    (*(code *)PTR_memcpy_000534c4)(dp,pbVar15,uVar18);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar26) & (byte)unaff_s2;\n    }\n    return;\n  }" if (parenthesized_expression "(png_ptr->info_rowbytes == 0)" ( (binary_expression "png_ptr->info_rowbytes == 0" (field_expression "png_ptr->info_rowbytes" identifier -> field_identifier) == number_literal) )) (compound_statement "{\nLAB_0002fb8c:\n    uVar12 = uVar4 * uVar18;\n    if (uVar18 == 0) {\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar27 = uVar12 & 7;\n    bVar26 = 0;\n    if (uVar27 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      pVar1 = png_ptr->interlaced;\n    }\n    else {\n      if (uVar4 < 8) {\n        uVar23 = uVar12 + 7 >> 3;\n      }\n      else {\n        uVar23 = (bVar11 >> 3) * uVar18;\n      }\n      unaff_s0 = dp + (uVar23 - 1);\n      bVar26 = *unaff_s0;\n      if (-1 < (int)(png_ptr->transformations << 0xf)) {\n        unaff_s2 = 0xff >> uVar27;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar27;\n      pVar1 = png_ptr->interlaced;\n    }\n    if ((pVar1 != '\0') && ((png_ptr->transformations & 2) != 0)) {\n      bVar2 = png_ptr->pass;\n      in_t3 = (uint)bVar2;\n      if ((in_t3 < 6) && ((display == 0 || ((display == 1 && ((bVar2 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar18 <= in_t2) {\n          return;\n        }\n        if (uVar4 < 8) {\n          if (uVar4 == 0) {\n            trap(7);\n          }\n          iVar8 = 1;\n          if ((int)(png_ptr->transformations << 0xf) < 0) {\n            if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }\n            bVar3 = uVar18 <= 8 / uVar4;\n            uVar18 = uVar18 - 8 / uVar4;\n            if (bVar3) break;\n            dp = dp + 1;\n            pbVar15 = pbVar15 + 1;\n            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar4 < 8) {\n      uVar18 = uVar12 + 7 >> 3;\n    }\n    else {\n      uVar18 = (bVar11 >> 3) * uVar18;\n    }\n    (*(code *)PTR_memcpy_000534c4)(dp,pbVar15,uVar18);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar26) & (byte)unaff_s2;\n    }\n    return;\n  }" { (labeled_statement "LAB_0002fb8c:\n    uVar12 = uVar4 * uVar18;" statement_identifier : (expression_statement "uVar12 = uVar4 * uVar18;" (assignment_expression "uVar12 = uVar4 * uVar18" identifier = (binary_expression "uVar4 * uVar18" identifier * identifier)) ;)) (if_statement "if (uVar18 == 0) {\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }" if (parenthesized_expression "(uVar18 == 0)" ( (binary_expression "uVar18 == 0" identifier == number_literal) )) (compound_statement "{\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }" { (expression_statement "(*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xb7c);" (call_expression "(*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + 0xb7c)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,PTR_s_nt_0005301c + 0xb7c)" ( identifier , (binary_expression "PTR_s_nt_0005301c + 0xb7c" identifier + number_literal) ))) ;) (goto_statement "goto LAB_00030084;" goto statement_identifier ;) })) (expression_statement "uVar27 = uVar12 & 7;" (assignment_expression "uVar27 = uVar12 & 7" identifier = (binary_expression "uVar12 & 7" identifier & number_literal)) ;) (expression_statement "bVar26 = 0;" (assignment_expression "bVar26 = 0" identifier = number_literal) ;) (if_statement "if (uVar27 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      pVar1 = png_ptr->interlaced;\n    }\n    else {\n      if (uVar4 < 8) {\n        uVar23 = uVar12 + 7 >> 3;\n      }\n      else {\n        uVar23 = (bVar11 >> 3) * uVar18;\n      }\n      unaff_s0 = dp + (uVar23 - 1);\n      bVar26 = *unaff_s0;\n      if (-1 < (int)(png_ptr->transformations << 0xf)) {\n        unaff_s2 = 0xff >> uVar27;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar27;\n      pVar1 = png_ptr->interlaced;\n    }" if (parenthesized_expression "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) )) (compound_statement "{\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      pVar1 = png_ptr->interlaced;\n    }" { (expression_statement "unaff_s0 = (byte *)0x0;" (assignment_expression "unaff_s0 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s2 = 0;" (assignment_expression "unaff_s2 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0002fc38:\n      pVar1 = png_ptr->interlaced;" statement_identifier : (expression_statement "pVar1 = png_ptr->interlaced;" (assignment_expression "pVar1 = png_ptr->interlaced" identifier = (field_expression "png_ptr->interlaced" identifier -> field_identifier)) ;)) }) (else_clause "else {\n      if (uVar4 < 8) {\n        uVar23 = uVar12 + 7 >> 3;\n      }\n      else {\n        uVar23 = (bVar11 >> 3) * uVar18;\n      }\n      unaff_s0 = dp + (uVar23 - 1);\n      bVar26 = *unaff_s0;\n      if (-1 < (int)(png_ptr->transformations << 0xf)) {\n        unaff_s2 = 0xff >> uVar27;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar27;\n      pVar1 = png_ptr->interlaced;\n    }" else (compound_statement "{\n      if (uVar4 < 8) {\n        uVar23 = uVar12 + 7 >> 3;\n      }\n      else {\n        uVar23 = (bVar11 >> 3) * uVar18;\n      }\n      unaff_s0 = dp + (uVar23 - 1);\n      bVar26 = *unaff_s0;\n      if (-1 < (int)(png_ptr->transformations << 0xf)) {\n        unaff_s2 = 0xff >> uVar27;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar27;\n      pVar1 = png_ptr->interlaced;\n    }" { (if_statement "if (uVar4 < 8) {\n        uVar23 = uVar12 + 7 >> 3;\n      }\n      else {\n        uVar23 = (bVar11 >> 3) * uVar18;\n      }" if (parenthesized_expression "(uVar4 < 8)" ( (binary_expression "uVar4 < 8" identifier < number_literal) )) (compound_statement "{\n        uVar23 = uVar12 + 7 >> 3;\n      }" { (expression_statement "uVar23 = uVar12 + 7 >> 3;" (assignment_expression "uVar23 = uVar12 + 7 >> 3" identifier = (binary_expression "uVar12 + 7 >> 3" (binary_expression "uVar12 + 7" identifier + number_literal) >> number_literal)) ;) }) (else_clause "else {\n        uVar23 = (bVar11 >> 3) * uVar18;\n      }" else (compound_statement "{\n        uVar23 = (bVar11 >> 3) * uVar18;\n      }" { (expression_statement "uVar23 = (bVar11 >> 3) * uVar18;" (assignment_expression "uVar23 = (bVar11 >> 3) * uVar18" identifier = (binary_expression "(bVar11 >> 3) * uVar18" (parenthesized_expression "(bVar11 >> 3)" ( (binary_expression "bVar11 >> 3" identifier >> number_literal) )) * identifier)) ;) }))) (expression_statement "unaff_s0 = dp + (uVar23 - 1);" (assignment_expression "unaff_s0 = dp + (uVar23 - 1)" identifier = (binary_expression "dp + (uVar23 - 1)" identifier + (parenthesized_expression "(uVar23 - 1)" ( (binary_expression "uVar23 - 1" identifier - number_literal) )))) ;) (expression_statement "bVar26 = *unaff_s0;" (assignment_expression "bVar26 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;) (if_statement "if (-1 < (int)(png_ptr->transformations << 0xf)) {\n        unaff_s2 = 0xff >> uVar27;\n        goto LAB_0002fc38;\n      }" if (parenthesized_expression "(-1 < (int)(png_ptr->transformations << 0xf))" ( (binary_expression "-1 < (int)(png_ptr->transformations << 0xf)" number_literal < (cast_expression "(int)(png_ptr->transformations << 0xf)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(png_ptr->transformations << 0xf)" ( (binary_expression "png_ptr->transformations << 0xf" (field_expression "png_ptr->transformations" identifier -> field_identifier) << number_literal) )))) )) (compound_statement "{\n        unaff_s2 = 0xff >> uVar27;\n        goto LAB_0002fc38;\n      }" { (expression_statement "unaff_s2 = 0xff >> uVar27;" (assignment_expression "unaff_s2 = 0xff >> uVar27" identifier = (binary_expression "0xff >> uVar27" number_literal >> identifier)) ;) (goto_statement "goto LAB_0002fc38;" goto statement_identifier ;) })) (expression_statement "unaff_s2 = 0xff << uVar27;" (assignment_expression "unaff_s2 = 0xff << uVar27" identifier = (binary_expression "0xff << uVar27" number_literal << identifier)) ;) (expression_statement "pVar1 = png_ptr->interlaced;" (assignment_expression "pVar1 = png_ptr->interlaced" identifier = (field_expression "png_ptr->interlaced" identifier -> field_identifier)) ;) }))) (if_statement "if ((pVar1 != '\0') && ((png_ptr->transformations & 2) != 0)) {\n      bVar2 = png_ptr->pass;\n      in_t3 = (uint)bVar2;\n      if ((in_t3 < 6) && ((display == 0 || ((display == 1 && ((bVar2 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar18 <= in_t2) {\n          return;\n        }\n        if (uVar4 < 8) {\n          if (uVar4 == 0) {\n            trap(7);\n          }\n          iVar8 = 1;\n          if ((int)(png_ptr->transformations << 0xf) < 0) {\n            if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }\n            bVar3 = uVar18 <= 8 / uVar4;\n            uVar18 = uVar18 - 8 / uVar4;\n            if (bVar3) break;\n            dp = dp + 1;\n            pbVar15 = pbVar15 + 1;\n            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }" if (parenthesized_expression "((pVar1 != '\0') && ((png_ptr->transformations & 2) != 0))" ( (binary_expression "(pVar1 != '\0') && ((png_ptr->transformations & 2) != 0)" (parenthesized_expression "(pVar1 != '\0')" ( (binary_expression "pVar1 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((png_ptr->transformations & 2) != 0)" ( (binary_expression "(png_ptr->transformations & 2) != 0" (parenthesized_expression "(png_ptr->transformations & 2)" ( (binary_expression "png_ptr->transformations & 2" (field_expression "png_ptr->transformations" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      bVar2 = png_ptr->pass;\n      in_t3 = (uint)bVar2;\n      if ((in_t3 < 6) && ((display == 0 || ((display == 1 && ((bVar2 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar18 <= in_t2) {\n          return;\n        }\n        if (uVar4 < 8) {\n          if (uVar4 == 0) {\n            trap(7);\n          }\n          iVar8 = 1;\n          if ((int)(png_ptr->transformations << 0xf) < 0) {\n            if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }\n            bVar3 = uVar18 <= 8 / uVar4;\n            uVar18 = uVar18 - 8 / uVar4;\n            if (bVar3) break;\n            dp = dp + 1;\n            pbVar15 = pbVar15 + 1;\n            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }" { (expression_statement "bVar2 = png_ptr->pass;" (assignment_expression "bVar2 = png_ptr->pass" identifier = (field_expression "png_ptr->pass" identifier -> field_identifier)) ;) (expression_statement "in_t3 = (uint)bVar2;" (assignment_expression "in_t3 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((in_t3 < 6) && ((display == 0 || ((display == 1 && ((bVar2 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar18 <= in_t2) {\n          return;\n        }\n        if (uVar4 < 8) {\n          if (uVar4 == 0) {\n            trap(7);\n          }\n          iVar8 = 1;\n          if ((int)(png_ptr->transformations << 0xf) < 0) {\n            if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }\n            bVar3 = uVar18 <= 8 / uVar4;\n            uVar18 = uVar18 - 8 / uVar4;\n            if (bVar3) break;\n            dp = dp + 1;\n            pbVar15 = pbVar15 + 1;\n            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }" if (parenthesized_expression "((in_t3 < 6) && ((display == 0 || ((display == 1 && ((bVar2 & 1) != 0))))))" ( (binary_expression "(in_t3 < 6) && ((display == 0 || ((display == 1 && ((bVar2 & 1) != 0)))))" (parenthesized_expression "(in_t3 < 6)" ( (binary_expression "in_t3 < 6" identifier < number_literal) )) && (parenthesized_expression "((display == 0 || ((display == 1 && ((bVar2 & 1) != 0)))))" ( (parenthesized_expression "(display == 0 || ((display == 1 && ((bVar2 & 1) != 0))))" ( (binary_expression "display == 0 || ((display == 1 && ((bVar2 & 1) != 0)))" (binary_expression "display == 0" identifier == number_literal) || (parenthesized_expression "((display == 1 && ((bVar2 & 1) != 0)))" ( (parenthesized_expression "(display == 1 && ((bVar2 & 1) != 0))" ( (binary_expression "display == 1 && ((bVar2 & 1) != 0)" (binary_expression "display == 1" identifier == number_literal) && (parenthesized_expression "((bVar2 & 1) != 0)" ( (binary_expression "(bVar2 & 1) != 0" (parenthesized_expression "(bVar2 & 1)" ( (binary_expression "bVar2 & 1" identifier & number_literal) )) != number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar18 <= in_t2) {\n          return;\n        }\n        if (uVar4 < 8) {\n          if (uVar4 == 0) {\n            trap(7);\n          }\n          iVar8 = 1;\n          if ((int)(png_ptr->transformations << 0xf) < 0) {\n            if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }\n            bVar3 = uVar18 <= 8 / uVar4;\n            uVar18 = uVar18 - 8 / uVar4;\n            if (bVar3) break;\n            dp = dp + 1;\n            pbVar15 = pbVar15 + 1;\n            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }" { (expression_statement "in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;" (assignment_expression "in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7" identifier = (binary_expression "(in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7" (binary_expression "(in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f)" (parenthesized_expression "(in_t3 & 1)" ( (binary_expression "in_t3 & 1" identifier & number_literal) )) << (parenthesized_expression "(3 - (in_t3 + 1 >> 1) & 0x1f)" ( (binary_expression "3 - (in_t3 + 1 >> 1) & 0x1f" (binary_expression "3 - (in_t3 + 1 >> 1)" number_literal - (parenthesized_expression "(in_t3 + 1 >> 1)" ( (binary_expression "in_t3 + 1 >> 1" (binary_expression "in_t3 + 1" identifier + number_literal) >> number_literal) ))) & number_literal) ))) & number_literal)) ;) (if_statement "if (uVar18 <= in_t2) {\n          return;\n        }" if (parenthesized_expression "(uVar18 <= in_t2)" ( (binary_expression "uVar18 <= in_t2" identifier <= identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (if_statement "if (uVar4 < 8) {\n          if (uVar4 == 0) {\n            trap(7);\n          }\n          iVar8 = 1;\n          if ((int)(png_ptr->transformations << 0xf) < 0) {\n            if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }\n            bVar3 = uVar18 <= 8 / uVar4;\n            uVar18 = uVar18 - 8 / uVar4;\n            if (bVar3) break;\n            dp = dp + 1;\n            pbVar15 = pbVar15 + 1;\n            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }" if (parenthesized_expression "(uVar4 < 8)" ( (binary_expression "uVar4 < 8" identifier < number_literal) )) (compound_statement "{\n          if (uVar4 == 0) {\n            trap(7);\n          }\n          iVar8 = 1;\n          if ((int)(png_ptr->transformations << 0xf) < 0) {\n            if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }\n            bVar3 = uVar18 <= 8 / uVar4;\n            uVar18 = uVar18 - 8 / uVar4;\n            if (bVar3) break;\n            dp = dp + 1;\n            pbVar15 = pbVar15 + 1;\n            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }" { (if_statement "if (uVar4 == 0) {\n            trap(7);\n          }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            trap(7);\n          }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (if_statement "if ((int)(png_ptr->transformations << 0xf) < 0) {\n            if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" if (parenthesized_expression "((int)(png_ptr->transformations << 0xf) < 0)" ( (binary_expression "(int)(png_ptr->transformations << 0xf) < 0" (cast_expression "(int)(png_ptr->transformations << 0xf)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(png_ptr->transformations << 0xf)" ( (binary_expression "png_ptr->transformations << 0xf" (field_expression "png_ptr->transformations" identifier -> field_identifier) << number_literal) ))) < number_literal) )) (compound_statement "{\n            if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }\n          }" { (if_statement "if (display == 0) {\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }" if (parenthesized_expression "(display == 0)" ( (binary_expression "display == 0" identifier == number_literal) )) (compound_statement "{\n              iVar8 = 0;\n              if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);\n            }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (if_statement "if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n                iVar8 = 1;\n              }" if (parenthesized_expression "((uVar4 != 1) && (iVar8 = 2, uVar4 == 2))" ( (binary_expression "(uVar4 != 1) && (iVar8 = 2, uVar4 == 2)" (parenthesized_expression "(uVar4 != 1)" ( (binary_expression "uVar4 != 1" identifier != number_literal) )) && (parenthesized_expression "(iVar8 = 2, uVar4 == 2)" ( (comma_expression "iVar8 = 2, uVar4 == 2" (assignment_expression "iVar8 = 2" identifier = number_literal) , (binary_expression "uVar4 == 2" identifier == number_literal)) ))) )) (compound_statement "{\n                iVar8 = 1;\n              }" { (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) })) (expression_statement "uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c);" (assignment_expression "uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c)" identifier = (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c)" * (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c)" ( (binary_expression "PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4 + 0xd5c" (binary_expression "PTR_s_nt_0005301c + (iVar8 * 6 + in_t3) * 4" identifier + (binary_expression "(iVar8 * 6 + in_t3) * 4" (parenthesized_expression "(iVar8 * 6 + in_t3)" ( (binary_expression "iVar8 * 6 + in_t3" (binary_expression "iVar8 * 6" identifier * number_literal) + identifier) )) * number_literal)) + number_literal) ))))) ;) }) (else_clause "else {\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }" else (compound_statement "{\n              if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }\n              uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);\n            }" { (if_statement "if (uVar4 == 1) {\n                iVar8 = 0;\n              }\n              else if (uVar4 != 2) {\n                iVar8 = 2;\n              }" if (parenthesized_expression "(uVar4 == 1)" ( (binary_expression "uVar4 == 1" identifier == number_literal) )) (compound_statement "{\n                iVar8 = 0;\n              }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) }) (else_clause "else if (uVar4 != 2) {\n                iVar8 = 2;\n              }" else (if_statement "if (uVar4 != 2) {\n                iVar8 = 2;\n              }" if (parenthesized_expression "(uVar4 != 2)" ( (binary_expression "uVar4 != 2" identifier != number_literal) )) (compound_statement "{\n                iVar8 = 2;\n              }" { (expression_statement "iVar8 = 2;" (assignment_expression "iVar8 = 2" identifier = number_literal) ;) })))) (expression_statement "uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec);" (assignment_expression "uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec)" identifier = (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec)" * (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec)" ( (binary_expression "PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4 + 0xdec" (binary_expression "PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1)) * 4" identifier + (binary_expression "(iVar8 * 3 + (uint)(bVar2 >> 1)) * 4" (parenthesized_expression "(iVar8 * 3 + (uint)(bVar2 >> 1))" ( (binary_expression "iVar8 * 3 + (uint)(bVar2 >> 1)" (binary_expression "iVar8 * 3" identifier * number_literal) + (call_expression "(uint)(bVar2 >> 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar2 >> 1)" ( (binary_expression "bVar2 >> 1" identifier >> number_literal) )))) )) * number_literal)) + number_literal) ))))) ;) }))) }) (else_clause "else if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" else (if_statement "if (display == 0) {\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" if (parenthesized_expression "(display == 0)" ( (binary_expression "display == 0" identifier == number_literal) )) (compound_statement "{\n            iVar8 = 0;\n            if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (if_statement "if ((uVar4 != 1) && (iVar8 = 2, uVar4 == 2)) {\n              iVar8 = 1;\n            }" if (parenthesized_expression "((uVar4 != 1) && (iVar8 = 2, uVar4 == 2))" ( (binary_expression "(uVar4 != 1) && (iVar8 = 2, uVar4 == 2)" (parenthesized_expression "(uVar4 != 1)" ( (binary_expression "uVar4 != 1" identifier != number_literal) )) && (parenthesized_expression "(iVar8 = 2, uVar4 == 2)" ( (comma_expression "iVar8 = 2, uVar4 == 2" (assignment_expression "iVar8 = 2" identifier = number_literal) , (binary_expression "uVar4 == 2" identifier == number_literal)) ))) )) (compound_statement "{\n              iVar8 = 1;\n            }" { (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) })) (expression_statement "uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c);" (assignment_expression "uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" identifier = (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" * (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" ( (binary_expression "PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4 + 0xd5c" (binary_expression "PTR_s_nt_0005301c + (iVar8 * 6 + in_t3 + 0x12) * 4" identifier + (binary_expression "(iVar8 * 6 + in_t3 + 0x12) * 4" (parenthesized_expression "(iVar8 * 6 + in_t3 + 0x12)" ( (binary_expression "iVar8 * 6 + in_t3 + 0x12" (binary_expression "iVar8 * 6 + in_t3" (binary_expression "iVar8 * 6" identifier * number_literal) + identifier) + number_literal) )) * number_literal)) + number_literal) ))))) ;) }) (else_clause "else {\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" else (compound_statement "{\n            if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }\n            uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" { (if_statement "if (uVar4 == 1) {\n              iVar8 = 0;\n            }\n            else if (uVar4 != 2) {\n              iVar8 = 2;\n            }" if (parenthesized_expression "(uVar4 == 1)" ( (binary_expression "uVar4 == 1" identifier == number_literal) )) (compound_statement "{\n              iVar8 = 0;\n            }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) }) (else_clause "else if (uVar4 != 2) {\n              iVar8 = 2;\n            }" else (if_statement "if (uVar4 != 2) {\n              iVar8 = 2;\n            }" if (parenthesized_expression "(uVar4 != 2)" ( (binary_expression "uVar4 != 2" identifier != number_literal) )) (compound_statement "{\n              iVar8 = 2;\n            }" { (expression_statement "iVar8 = 2;" (assignment_expression "iVar8 = 2" identifier = number_literal) ;) })))) (expression_statement "uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)\n            ;" (assignment_expression "uVar12 = *(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)" identifier = (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)" * (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec)" ( (binary_expression "PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4 + 0xdec" (binary_expression "PTR_s_nt_0005301c + (iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4" identifier + (binary_expression "(iVar8 * 3 + (uint)(bVar2 >> 1) + 9) * 4" (parenthesized_expression "(iVar8 * 3 + (uint)(bVar2 >> 1) + 9)" ( (binary_expression "iVar8 * 3 + (uint)(bVar2 >> 1) + 9" (binary_expression "iVar8 * 3 + (uint)(bVar2 >> 1)" (binary_expression "iVar8 * 3" identifier * number_literal) + (call_expression "(uint)(bVar2 >> 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar2 >> 1)" ( (binary_expression "bVar2 >> 1" identifier >> number_literal) )))) + number_literal) )) * number_literal)) + number_literal) ))))) ;) }))))) (while_statement "while( true ) {\n            if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }\n            bVar3 = uVar18 <= 8 / uVar4;\n            uVar18 = uVar18 - 8 / uVar4;\n            if (bVar3) break;\n            dp = dp + 1;\n            pbVar15 = pbVar15 + 1;\n            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }\n            bVar3 = uVar18 <= 8 / uVar4;\n            uVar18 = uVar18 - 8 / uVar4;\n            if (bVar3) break;\n            dp = dp + 1;\n            pbVar15 = pbVar15 + 1;\n            uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;\n          }" { (if_statement "if ((uVar12 & 0xff) != 0) {\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }" if (parenthesized_expression "((uVar12 & 0xff) != 0)" ( (binary_expression "(uVar12 & 0xff) != 0" (parenthesized_expression "(uVar12 & 0xff)" ( (binary_expression "uVar12 & 0xff" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }\n            }" { (if_statement "if ((uVar12 & 0xff) == 0xff) {\n                *dp = *pbVar15;\n              }\n              else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }" if (parenthesized_expression "((uVar12 & 0xff) == 0xff)" ( (binary_expression "(uVar12 & 0xff) == 0xff" (parenthesized_expression "(uVar12 & 0xff)" ( (binary_expression "uVar12 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                *dp = *pbVar15;\n              }" { (expression_statement "*dp = *pbVar15;" (assignment_expression "*dp = *pbVar15" (pointer_expression "*dp" * identifier) = (pointer_expression "*pbVar15" * identifier)) ;) }) (else_clause "else {\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }" else (compound_statement "{\n                *dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;\n              }" { (expression_statement "*dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12;" (assignment_expression "*dp = *dp ^ (*dp ^ *pbVar15) & (byte)uVar12" (pointer_expression "*dp" * identifier) = (binary_expression "*dp ^ (*dp ^ *pbVar15) & (byte)uVar12" (pointer_expression "*dp" * identifier) ^ (binary_expression "(*dp ^ *pbVar15) & (byte)uVar12" (parenthesized_expression "(*dp ^ *pbVar15)" ( (binary_expression "*dp ^ *pbVar15" (pointer_expression "*dp" * identifier) ^ (pointer_expression "*pbVar15" * identifier)) )) & (cast_expression "(byte)uVar12" ( (type_descriptor "byte" type_identifier) ) identifier)))) ;) }))) })) (expression_statement "bVar3 = uVar18 <= 8 / uVar4;" (assignment_expression "bVar3 = uVar18 <= 8 / uVar4" identifier = (binary_expression "uVar18 <= 8 / uVar4" identifier <= (binary_expression "8 / uVar4" number_literal / identifier))) ;) (expression_statement "uVar18 = uVar18 - 8 / uVar4;" (assignment_expression "uVar18 = uVar18 - 8 / uVar4" identifier = (binary_expression "uVar18 - 8 / uVar4" identifier - (binary_expression "8 / uVar4" number_literal / identifier))) ;) (if_statement "if (bVar3) break;" if (parenthesized_expression "(bVar3)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "dp = dp + 1;" (assignment_expression "dp = dp + 1" identifier = (binary_expression "dp + 1" identifier + number_literal)) ;) (expression_statement "pbVar15 = pbVar15 + 1;" (assignment_expression "pbVar15 = pbVar15 + 1" identifier = (binary_expression "pbVar15 + 1" identifier + number_literal)) ;) (expression_statement "uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000;" (assignment_expression "uVar12 = (uVar12 >> 8) + uVar12 * 0x1000000" identifier = (binary_expression "(uVar12 >> 8) + uVar12 * 0x1000000" (parenthesized_expression "(uVar12 >> 8)" ( (binary_expression "uVar12 >> 8" identifier >> number_literal) )) + (binary_expression "uVar12 * 0x1000000" identifier * number_literal))) ;) })) (goto_statement "goto LAB_0002fbfc;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002fd9c;" goto statement_identifier ;) })) })) (if_statement "if (uVar4 < 8) {\n      uVar18 = uVar12 + 7 >> 3;\n    }\n    else {\n      uVar18 = (bVar11 >> 3) * uVar18;\n    }" if (parenthesized_expression "(uVar4 < 8)" ( (binary_expression "uVar4 < 8" identifier < number_literal) )) (compound_statement "{\n      uVar18 = uVar12 + 7 >> 3;\n    }" { (expression_statement "uVar18 = uVar12 + 7 >> 3;" (assignment_expression "uVar18 = uVar12 + 7 >> 3" identifier = (binary_expression "uVar12 + 7 >> 3" (binary_expression "uVar12 + 7" identifier + number_literal) >> number_literal)) ;) }) (else_clause "else {\n      uVar18 = (bVar11 >> 3) * uVar18;\n    }" else (compound_statement "{\n      uVar18 = (bVar11 >> 3) * uVar18;\n    }" { (expression_statement "uVar18 = (bVar11 >> 3) * uVar18;" (assignment_expression "uVar18 = (bVar11 >> 3) * uVar18" identifier = (binary_expression "(bVar11 >> 3) * uVar18" (parenthesized_expression "(bVar11 >> 3)" ( (binary_expression "bVar11 >> 3" identifier >> number_literal) )) * identifier)) ;) }))) (expression_statement "(*(code *)PTR_memcpy_000534c4)(dp,pbVar15,uVar18);" (call_expression "(*(code *)PTR_memcpy_000534c4)(dp,pbVar15,uVar18)" (parenthesized_expression "(*(code *)PTR_memcpy_000534c4)" ( (pointer_expression "*(code *)PTR_memcpy_000534c4" * (cast_expression "(code *)PTR_memcpy_000534c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dp,pbVar15,uVar18)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar26) & (byte)unaff_s2;\n    }" statement_identifier : (if_statement "if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar26) & (byte)unaff_s2;\n    }" if (parenthesized_expression "(unaff_s0 != (byte *)0x0)" ( (binary_expression "unaff_s0 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar26) & (byte)unaff_s2;\n    }" { (expression_statement "*unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar26) & (byte)unaff_s2;" (assignment_expression "*unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar26) & (byte)unaff_s2" (pointer_expression "*unaff_s0" * identifier) = (binary_expression "*unaff_s0 ^ (*unaff_s0 ^ bVar26) & (byte)unaff_s2" (pointer_expression "*unaff_s0" * identifier) ^ (binary_expression "(*unaff_s0 ^ bVar26) & (byte)unaff_s2" (parenthesized_expression "(*unaff_s0 ^ bVar26)" ( (binary_expression "*unaff_s0 ^ bVar26" (pointer_expression "*unaff_s0" * identifier) ^ identifier) )) & (cast_expression "(byte)unaff_s2" ( (type_descriptor "byte" type_identifier) ) identifier)))) ;) }))) (return_statement "return;" return ;) })) (if_statement "if (uVar4 < 8) {\n    sVar19 = uVar4 * uVar18 + 7 >> 3;\n  }\n  else {\n    sVar19 = (bVar11 >> 3) * uVar18;\n  }" if (parenthesized_expression "(uVar4 < 8)" ( (binary_expression "uVar4 < 8" identifier < number_literal) )) (compound_statement "{\n    sVar19 = uVar4 * uVar18 + 7 >> 3;\n  }" { (expression_statement "sVar19 = uVar4 * uVar18 + 7 >> 3;" (assignment_expression "sVar19 = uVar4 * uVar18 + 7 >> 3" identifier = (binary_expression "uVar4 * uVar18 + 7 >> 3" (binary_expression "uVar4 * uVar18 + 7" (binary_expression "uVar4 * uVar18" identifier * identifier) + number_literal) >> number_literal)) ;) }) (else_clause "else {\n    sVar19 = (bVar11 >> 3) * uVar18;\n  }" else (compound_statement "{\n    sVar19 = (bVar11 >> 3) * uVar18;\n  }" { (expression_statement "sVar19 = (bVar11 >> 3) * uVar18;" (assignment_expression "sVar19 = (bVar11 >> 3) * uVar18" identifier = (binary_expression "(bVar11 >> 3) * uVar18" (parenthesized_expression "(bVar11 >> 3)" ( (binary_expression "bVar11 >> 3" identifier >> number_literal) )) * identifier)) ;) }))) (if_statement "if (png_ptr->info_rowbytes == sVar19) goto LAB_0002fb8c;" if (parenthesized_expression "(png_ptr->info_rowbytes == sVar19)" ( (binary_expression "png_ptr->info_rowbytes == sVar19" (field_expression "png_ptr->info_rowbytes" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_0002fb8c;" goto statement_identifier ;)) (expression_statement "pbVar15 = PTR_s_nt_0005301c + 0xb58;" (assignment_expression "pbVar15 = PTR_s_nt_0005301c + 0xb58" identifier = (binary_expression "PTR_s_nt_0005301c + 0xb58" identifier + number_literal)) ;) (expression_statement "uVar34 = (*(code *)PTR_png_error_0005340c)(png_ptr);" (assignment_expression "uVar34 = (*(code *)PTR_png_error_0005340c)(png_ptr)" identifier = (call_expression "(*(code *)PTR_png_error_0005340c)(png_ptr)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr)" ( identifier )))) ;) (expression_statement "uVar4 = (uint)((ulonglong)uVar34 >> 0x20);" (assignment_expression "uVar4 = (uint)((ulonglong)uVar34 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar34 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar34 >> 0x20)" ( (binary_expression "(ulonglong)uVar34 >> 0x20" (cast_expression "(ulonglong)uVar34" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "png_ptr = (png_const_structrp)uVar34;" (assignment_expression "png_ptr = (png_const_structrp)uVar34" identifier = (cast_expression "(png_const_structrp)uVar34" ( (type_descriptor "png_const_structrp" type_identifier) ) identifier)) ;) (labeled_statement "LAB_0002fd9c:\n  uVar12 = uVar4 >> 3;" statement_identifier : (expression_statement "uVar12 = uVar4 >> 3;" (assignment_expression "uVar12 = uVar4 >> 3" identifier = (binary_expression "uVar4 >> 3" identifier >> number_literal)) ;)) (if_statement "if ((uVar4 & 7) == 0) {\n    iVar8 = in_t2 * uVar12;\n    dp = dp + iVar8;\n    unaff_s3 = uVar18 * uVar12 - iVar8;\n    unaff_s0 = pbVar15 + iVar8;\n    unaff_s2 = uVar12;\n    if (((byte *)display != (byte *)0x0) &&\n       (unaff_s2 = uVar12 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar12 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *dp = *unaff_s0;\n        dp[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n      } while (1 < unaff_s3);\n      *dp = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar11 = *unaff_s0;\n      while( true ) {\n        *dp = bVar11;\n        dp[1] = unaff_s0[1];\n        dp[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        dp = dp + unaff_s1;\n        bVar11 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *dp = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n        *dp = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)dp | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar8 = (*(code *)PTR_memcpy_000534c4)(dp,unaff_s0,unaff_s2), unaff_s1 < unaff_s3) {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        dp = (png_bytep)(iVar8 + unaff_s1);\n      }\n      return;\n    }\n    uVar4 = unaff_s1 - unaff_s2;\n    if ((((uint)dp | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar15 = dp;\n      while( true ) {\n        do {\n          pbVar24 = unaff_s0 + 2;\n          pbVar5 = dp + 2;\n          *(undefined2 *)dp = *(undefined2 *)unaff_s0;\n          dp = pbVar5;\n          unaff_s0 = pbVar24;\n        } while (pbVar5 + -unaff_s2 != pbVar15);\n        bVar3 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar3) break;\n        dp = pbVar5 + (uVar4 & 0xfffffffe);\n        unaff_s0 = pbVar24 + (uVar4 & 0xfffffffe);\n        pbVar15 = dp;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar5 = pbVar15 + 1;\n            *pbVar15 = *unaff_s0;\n            pbVar15 = pbVar5;\n            unaff_s0 = unaff_s0 + 1;\n          } while (dp + unaff_s3 != pbVar5);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar15 = dp;\n    while( true ) {\n      do {\n        pbVar5 = dp + 4;\n        uVar16 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)dp = uVar16;\n        dp = pbVar5;\n      } while (pbVar15 + (unaff_s2 - (int)pbVar5) != (byte *)0x0);\n      bVar3 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar3) break;\n      dp = pbVar5 + (uVar4 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar4 & 0xfffffffc);\n      uVar18 = 0;\n      pbVar15 = dp;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar5 = unaff_s0 + uVar18;\n          pbVar15 = dp + uVar18;\n          uVar18 = uVar18 + 1;\n          *pbVar15 = *pbVar5;\n        } while (uVar18 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }" if (parenthesized_expression "((uVar4 & 7) == 0)" ( (binary_expression "(uVar4 & 7) == 0" (parenthesized_expression "(uVar4 & 7)" ( (binary_expression "uVar4 & 7" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar8 = in_t2 * uVar12;\n    dp = dp + iVar8;\n    unaff_s3 = uVar18 * uVar12 - iVar8;\n    unaff_s0 = pbVar15 + iVar8;\n    unaff_s2 = uVar12;\n    if (((byte *)display != (byte *)0x0) &&\n       (unaff_s2 = uVar12 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar12 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *dp = *unaff_s0;\n        dp[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n      } while (1 < unaff_s3);\n      *dp = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar11 = *unaff_s0;\n      while( true ) {\n        *dp = bVar11;\n        dp[1] = unaff_s0[1];\n        dp[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        dp = dp + unaff_s1;\n        bVar11 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *dp = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n        *dp = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)dp | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar8 = (*(code *)PTR_memcpy_000534c4)(dp,unaff_s0,unaff_s2), unaff_s1 < unaff_s3) {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        dp = (png_bytep)(iVar8 + unaff_s1);\n      }\n      return;\n    }\n    uVar4 = unaff_s1 - unaff_s2;\n    if ((((uint)dp | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar15 = dp;\n      while( true ) {\n        do {\n          pbVar24 = unaff_s0 + 2;\n          pbVar5 = dp + 2;\n          *(undefined2 *)dp = *(undefined2 *)unaff_s0;\n          dp = pbVar5;\n          unaff_s0 = pbVar24;\n        } while (pbVar5 + -unaff_s2 != pbVar15);\n        bVar3 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar3) break;\n        dp = pbVar5 + (uVar4 & 0xfffffffe);\n        unaff_s0 = pbVar24 + (uVar4 & 0xfffffffe);\n        pbVar15 = dp;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar5 = pbVar15 + 1;\n            *pbVar15 = *unaff_s0;\n            pbVar15 = pbVar5;\n            unaff_s0 = unaff_s0 + 1;\n          } while (dp + unaff_s3 != pbVar5);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar15 = dp;\n    while( true ) {\n      do {\n        pbVar5 = dp + 4;\n        uVar16 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)dp = uVar16;\n        dp = pbVar5;\n      } while (pbVar15 + (unaff_s2 - (int)pbVar5) != (byte *)0x0);\n      bVar3 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar3) break;\n      dp = pbVar5 + (uVar4 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar4 & 0xfffffffc);\n      uVar18 = 0;\n      pbVar15 = dp;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar5 = unaff_s0 + uVar18;\n          pbVar15 = dp + uVar18;\n          uVar18 = uVar18 + 1;\n          *pbVar15 = *pbVar5;\n        } while (uVar18 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }" { (expression_statement "iVar8 = in_t2 * uVar12;" (assignment_expression "iVar8 = in_t2 * uVar12" identifier = (binary_expression "in_t2 * uVar12" identifier * identifier)) ;) (expression_statement "dp = dp + iVar8;" (assignment_expression "dp = dp + iVar8" identifier = (binary_expression "dp + iVar8" identifier + identifier)) ;) (expression_statement "unaff_s3 = uVar18 * uVar12 - iVar8;" (assignment_expression "unaff_s3 = uVar18 * uVar12 - iVar8" identifier = (binary_expression "uVar18 * uVar12 - iVar8" (binary_expression "uVar18 * uVar12" identifier * identifier) - identifier)) ;) (expression_statement "unaff_s0 = pbVar15 + iVar8;" (assignment_expression "unaff_s0 = pbVar15 + iVar8" identifier = (binary_expression "pbVar15 + iVar8" identifier + identifier)) ;) (expression_statement "unaff_s2 = uVar12;" (assignment_expression "unaff_s2 = uVar12" identifier = identifier) ;) (if_statement "if (((byte *)display != (byte *)0x0) &&\n       (unaff_s2 = uVar12 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }" if (parenthesized_expression "(((byte *)display != (byte *)0x0) &&\n       (unaff_s2 = uVar12 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2))" ( (binary_expression "((byte *)display != (byte *)0x0) &&\n       (unaff_s2 = uVar12 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)" (parenthesized_expression "((byte *)display != (byte *)0x0)" ( (binary_expression "(byte *)display != (byte *)0x0" (cast_expression "(byte *)display" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(unaff_s2 = uVar12 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)" ( (comma_expression "unaff_s2 = uVar12 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2" (assignment_expression "unaff_s2 = uVar12 << (6 - in_t3 >> 1 & 0x1f)" identifier = (binary_expression "uVar12 << (6 - in_t3 >> 1 & 0x1f)" identifier << (parenthesized_expression "(6 - in_t3 >> 1 & 0x1f)" ( (binary_expression "6 - in_t3 >> 1 & 0x1f" (binary_expression "6 - in_t3 >> 1" (binary_expression "6 - in_t3" number_literal - identifier) >> number_literal) & number_literal) )))) , (binary_expression "unaff_s3 < unaff_s2" identifier < identifier)) ))) )) (compound_statement "{\n      unaff_s2 = unaff_s3;\n    }" { (expression_statement "unaff_s2 = unaff_s3;" (assignment_expression "unaff_s2 = unaff_s3" identifier = identifier) ;) })) (expression_statement "unaff_s1 = uVar12 << (7 - in_t3 >> 1 & 0x1f);" (assignment_expression "unaff_s1 = uVar12 << (7 - in_t3 >> 1 & 0x1f)" identifier = (binary_expression "uVar12 << (7 - in_t3 >> 1 & 0x1f)" identifier << (parenthesized_expression "(7 - in_t3 >> 1 & 0x1f)" ( (binary_expression "7 - in_t3 >> 1 & 0x1f" (binary_expression "7 - in_t3 >> 1" (binary_expression "7 - in_t3" number_literal - identifier) >> number_literal) & number_literal) )))) ;) (if_statement "if (unaff_s2 == 2) {\n      do {\n        *dp = *unaff_s0;\n        dp[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n      } while (1 < unaff_s3);\n      *dp = *unaff_s0;\n      return;\n    }" if (parenthesized_expression "(unaff_s2 == 2)" ( (binary_expression "unaff_s2 == 2" identifier == number_literal) )) (compound_statement "{\n      do {\n        *dp = *unaff_s0;\n        dp[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n      } while (1 < unaff_s3);\n      *dp = *unaff_s0;\n      return;\n    }" { (do_statement "do {\n        *dp = *unaff_s0;\n        dp[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n      } while (1 < unaff_s3);" do (compound_statement "{\n        *dp = *unaff_s0;\n        dp[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n      }" { (expression_statement "*dp = *unaff_s0;" (assignment_expression "*dp = *unaff_s0" (pointer_expression "*dp" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) (expression_statement "dp[1] = unaff_s0[1];" (assignment_expression "dp[1] = unaff_s0[1]" (subscript_expression "dp[1]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[1]" identifier [ number_literal ])) ;) (if_statement "if (unaff_s3 <= unaff_s1) {\n          return;\n        }" if (parenthesized_expression "(unaff_s3 <= unaff_s1)" ( (binary_expression "unaff_s3 <= unaff_s1" identifier <= identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" identifier = (binary_expression "unaff_s0 + unaff_s1" identifier + identifier)) ;) (expression_statement "dp = dp + unaff_s1;" (assignment_expression "dp = dp + unaff_s1" identifier = (binary_expression "dp + unaff_s1" identifier + identifier)) ;) }) while (parenthesized_expression "(1 < unaff_s3)" ( (binary_expression "1 < unaff_s3" number_literal < identifier) )) ;) (expression_statement "*dp = *unaff_s0;" (assignment_expression "*dp = *unaff_s0" (pointer_expression "*dp" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) (return_statement "return;" return ;) })) (if_statement "if (unaff_s2 == 3) {\n      bVar11 = *unaff_s0;\n      while( true ) {\n        *dp = bVar11;\n        dp[1] = unaff_s0[1];\n        dp[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        dp = dp + unaff_s1;\n        bVar11 = *unaff_s0;\n      }\n      return;\n    }" if (parenthesized_expression "(unaff_s2 == 3)" ( (binary_expression "unaff_s2 == 3" identifier == number_literal) )) (compound_statement "{\n      bVar11 = *unaff_s0;\n      while( true ) {\n        *dp = bVar11;\n        dp[1] = unaff_s0[1];\n        dp[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        dp = dp + unaff_s1;\n        bVar11 = *unaff_s0;\n      }\n      return;\n    }" { (expression_statement "bVar11 = *unaff_s0;" (assignment_expression "bVar11 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;) (while_statement "while( true ) {\n        *dp = bVar11;\n        dp[1] = unaff_s0[1];\n        dp[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        dp = dp + unaff_s1;\n        bVar11 = *unaff_s0;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        *dp = bVar11;\n        dp[1] = unaff_s0[1];\n        dp[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        dp = dp + unaff_s1;\n        bVar11 = *unaff_s0;\n      }" { (expression_statement "*dp = bVar11;" (assignment_expression "*dp = bVar11" (pointer_expression "*dp" * identifier) = identifier) ;) (expression_statement "dp[1] = unaff_s0[1];" (assignment_expression "dp[1] = unaff_s0[1]" (subscript_expression "dp[1]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[1]" identifier [ number_literal ])) ;) (expression_statement "dp[2] = unaff_s0[2];" (assignment_expression "dp[2] = unaff_s0[2]" (subscript_expression "dp[2]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[2]" identifier [ number_literal ])) ;) (if_statement "if (unaff_s3 <= unaff_s1) break;" if (parenthesized_expression "(unaff_s3 <= unaff_s1)" ( (binary_expression "unaff_s3 <= unaff_s1" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" identifier = (binary_expression "unaff_s0 + unaff_s1" identifier + identifier)) ;) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (expression_statement "dp = dp + unaff_s1;" (assignment_expression "dp = dp + unaff_s1" identifier = (binary_expression "dp + unaff_s1" identifier + identifier)) ;) (expression_statement "bVar11 = *unaff_s0;" (assignment_expression "bVar11 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;) })) (return_statement "return;" return ;) })) (if_statement "if (unaff_s2 == 1) {\n      *dp = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n        *dp = *unaff_s0;\n      }\n      return;\n    }" if (parenthesized_expression "(unaff_s2 == 1)" ( (binary_expression "unaff_s2 == 1" identifier == number_literal) )) (compound_statement "{\n      *dp = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n        *dp = *unaff_s0;\n      }\n      return;\n    }" { (expression_statement "*dp = *unaff_s0;" (assignment_expression "*dp = *unaff_s0" (pointer_expression "*dp" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) (for_statement "for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n        *dp = *unaff_s0;\n      }" for ( ; (binary_expression "unaff_s1 < unaff_s3" identifier < identifier) ; (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ) (compound_statement "{\n        unaff_s0 = unaff_s0 + unaff_s1;\n        dp = dp + unaff_s1;\n        *dp = *unaff_s0;\n      }" { (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" identifier = (binary_expression "unaff_s0 + unaff_s1" identifier + identifier)) ;) (expression_statement "dp = dp + unaff_s1;" (assignment_expression "dp = dp + unaff_s1" identifier = (binary_expression "dp + unaff_s1" identifier + identifier)) ;) (expression_statement "*dp = *unaff_s0;" (assignment_expression "*dp = *unaff_s0" (pointer_expression "*dp" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) })) (return_statement "return;" return ;) })) (if_statement "if (((0xf < unaff_s2) || ((((uint)dp | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar8 = (*(code *)PTR_memcpy_000534c4)(dp,unaff_s0,unaff_s2), unaff_s1 < unaff_s3) {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        dp = (png_bytep)(iVar8 + unaff_s1);\n      }\n      return;\n    }" if (parenthesized_expression "(((0xf < unaff_s2) || ((((uint)dp | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0))" ( (binary_expression "((0xf < unaff_s2) || ((((uint)dp | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)" (parenthesized_expression "((0xf < unaff_s2) || ((((uint)dp | (uint)unaff_s0) & 1) != 0))" ( (binary_expression "(0xf < unaff_s2) || ((((uint)dp | (uint)unaff_s0) & 1) != 0)" (parenthesized_expression "(0xf < unaff_s2)" ( (binary_expression "0xf < unaff_s2" number_literal < identifier) )) || (parenthesized_expression "((((uint)dp | (uint)unaff_s0) & 1) != 0)" ( (binary_expression "(((uint)dp | (uint)unaff_s0) & 1) != 0" (parenthesized_expression "(((uint)dp | (uint)unaff_s0) & 1)" ( (binary_expression "((uint)dp | (uint)unaff_s0) & 1" (parenthesized_expression "((uint)dp | (uint)unaff_s0)" ( (binary_expression "(uint)dp | (uint)unaff_s0" (cast_expression "(uint)dp" ( (type_descriptor "uint" type_identifier) ) identifier) | (cast_expression "(uint)unaff_s0" ( (type_descriptor "uint" type_identifier) ) identifier)) )) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(((unaff_s2 | unaff_s1) & 1) != 0)" ( (binary_expression "((unaff_s2 | unaff_s1) & 1) != 0" (parenthesized_expression "((unaff_s2 | unaff_s1) & 1)" ( (binary_expression "(unaff_s2 | unaff_s1) & 1" (parenthesized_expression "(unaff_s2 | unaff_s1)" ( (binary_expression "unaff_s2 | unaff_s1" identifier | identifier) )) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      while (iVar8 = (*(code *)PTR_memcpy_000534c4)(dp,unaff_s0,unaff_s2), unaff_s1 < unaff_s3) {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        dp = (png_bytep)(iVar8 + unaff_s1);\n      }\n      return;\n    }" { (while_statement "while (iVar8 = (*(code *)PTR_memcpy_000534c4)(dp,unaff_s0,unaff_s2), unaff_s1 < unaff_s3) {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        dp = (png_bytep)(iVar8 + unaff_s1);\n      }" while (parenthesized_expression "(iVar8 = (*(code *)PTR_memcpy_000534c4)(dp,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)" ( (comma_expression "iVar8 = (*(code *)PTR_memcpy_000534c4)(dp,unaff_s0,unaff_s2), unaff_s1 < unaff_s3" (assignment_expression "iVar8 = (*(code *)PTR_memcpy_000534c4)(dp,unaff_s0,unaff_s2)" identifier = (call_expression "(*(code *)PTR_memcpy_000534c4)(dp,unaff_s0,unaff_s2)" (parenthesized_expression "(*(code *)PTR_memcpy_000534c4)" ( (pointer_expression "*(code *)PTR_memcpy_000534c4" * (cast_expression "(code *)PTR_memcpy_000534c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(dp,unaff_s0,unaff_s2)" ( identifier , identifier , identifier )))) , (binary_expression "unaff_s1 < unaff_s3" identifier < identifier)) )) (compound_statement "{\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        dp = (png_bytep)(iVar8 + unaff_s1);\n      }" { (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" identifier = (binary_expression "unaff_s0 + unaff_s1" identifier + identifier)) ;) (if_statement "if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }" if (parenthesized_expression "(unaff_s3 < unaff_s2)" ( (binary_expression "unaff_s3 < unaff_s2" identifier < identifier) )) (compound_statement "{\n          unaff_s2 = unaff_s3;\n        }" { (expression_statement "unaff_s2 = unaff_s3;" (assignment_expression "unaff_s2 = unaff_s3" identifier = identifier) ;) })) (expression_statement "dp = (png_bytep)(iVar8 + unaff_s1);" (assignment_expression "dp = (png_bytep)(iVar8 + unaff_s1)" identifier = (call_expression "(png_bytep)(iVar8 + unaff_s1)" (parenthesized_expression "(png_bytep)" ( identifier )) (argument_list "(iVar8 + unaff_s1)" ( (binary_expression "iVar8 + unaff_s1" identifier + identifier) )))) ;) })) (return_statement "return;" return ;) })) (expression_statement "uVar4 = unaff_s1 - unaff_s2;" (assignment_expression "uVar4 = unaff_s1 - unaff_s2" identifier = (binary_expression "unaff_s1 - unaff_s2" identifier - identifier)) ;) (if_statement "if ((((uint)dp | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar15 = dp;\n      while( true ) {\n        do {\n          pbVar24 = unaff_s0 + 2;\n          pbVar5 = dp + 2;\n          *(undefined2 *)dp = *(undefined2 *)unaff_s0;\n          dp = pbVar5;\n          unaff_s0 = pbVar24;\n        } while (pbVar5 + -unaff_s2 != pbVar15);\n        bVar3 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar3) break;\n        dp = pbVar5 + (uVar4 & 0xfffffffe);\n        unaff_s0 = pbVar24 + (uVar4 & 0xfffffffe);\n        pbVar15 = dp;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar5 = pbVar15 + 1;\n            *pbVar15 = *unaff_s0;\n            pbVar15 = pbVar5;\n            unaff_s0 = unaff_s0 + 1;\n          } while (dp + unaff_s3 != pbVar5);\n          return;\n        }\n      }\n      return;\n    }" if (parenthesized_expression "((((uint)dp | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0)" ( (binary_expression "(((uint)dp | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0" (parenthesized_expression "(((uint)dp | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3)" ( (binary_expression "((uint)dp | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3" (parenthesized_expression "((uint)dp | (uint)unaff_s0 | unaff_s2 | unaff_s1)" ( (binary_expression "(uint)dp | (uint)unaff_s0 | unaff_s2 | unaff_s1" (binary_expression "(uint)dp | (uint)unaff_s0 | unaff_s2" (binary_expression "(uint)dp | (uint)unaff_s0" (cast_expression "(uint)dp" ( (type_descriptor "uint" type_identifier) ) identifier) | (cast_expression "(uint)unaff_s0" ( (type_descriptor "uint" type_identifier) ) identifier)) | identifier) | identifier) )) & number_literal) )) != number_literal) )) (compound_statement "{\n      pbVar15 = dp;\n      while( true ) {\n        do {\n          pbVar24 = unaff_s0 + 2;\n          pbVar5 = dp + 2;\n          *(undefined2 *)dp = *(undefined2 *)unaff_s0;\n          dp = pbVar5;\n          unaff_s0 = pbVar24;\n        } while (pbVar5 + -unaff_s2 != pbVar15);\n        bVar3 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar3) break;\n        dp = pbVar5 + (uVar4 & 0xfffffffe);\n        unaff_s0 = pbVar24 + (uVar4 & 0xfffffffe);\n        pbVar15 = dp;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar5 = pbVar15 + 1;\n            *pbVar15 = *unaff_s0;\n            pbVar15 = pbVar5;\n            unaff_s0 = unaff_s0 + 1;\n          } while (dp + unaff_s3 != pbVar5);\n          return;\n        }\n      }\n      return;\n    }" { (expression_statement "pbVar15 = dp;" (assignment_expression "pbVar15 = dp" identifier = identifier) ;) (while_statement "while( true ) {\n        do {\n          pbVar24 = unaff_s0 + 2;\n          pbVar5 = dp + 2;\n          *(undefined2 *)dp = *(undefined2 *)unaff_s0;\n          dp = pbVar5;\n          unaff_s0 = pbVar24;\n        } while (pbVar5 + -unaff_s2 != pbVar15);\n        bVar3 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar3) break;\n        dp = pbVar5 + (uVar4 & 0xfffffffe);\n        unaff_s0 = pbVar24 + (uVar4 & 0xfffffffe);\n        pbVar15 = dp;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar5 = pbVar15 + 1;\n            *pbVar15 = *unaff_s0;\n            pbVar15 = pbVar5;\n            unaff_s0 = unaff_s0 + 1;\n          } while (dp + unaff_s3 != pbVar5);\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        do {\n          pbVar24 = unaff_s0 + 2;\n          pbVar5 = dp + 2;\n          *(undefined2 *)dp = *(undefined2 *)unaff_s0;\n          dp = pbVar5;\n          unaff_s0 = pbVar24;\n        } while (pbVar5 + -unaff_s2 != pbVar15);\n        bVar3 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar3) break;\n        dp = pbVar5 + (uVar4 & 0xfffffffe);\n        unaff_s0 = pbVar24 + (uVar4 & 0xfffffffe);\n        pbVar15 = dp;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar5 = pbVar15 + 1;\n            *pbVar15 = *unaff_s0;\n            pbVar15 = pbVar5;\n            unaff_s0 = unaff_s0 + 1;\n          } while (dp + unaff_s3 != pbVar5);\n          return;\n        }\n      }" { (do_statement "do {\n          pbVar24 = unaff_s0 + 2;\n          pbVar5 = dp + 2;\n          *(undefined2 *)dp = *(undefined2 *)unaff_s0;\n          dp = pbVar5;\n          unaff_s0 = pbVar24;\n        } while (pbVar5 + -unaff_s2 != pbVar15);" do (compound_statement "{\n          pbVar24 = unaff_s0 + 2;\n          pbVar5 = dp + 2;\n          *(undefined2 *)dp = *(undefined2 *)unaff_s0;\n          dp = pbVar5;\n          unaff_s0 = pbVar24;\n        }" { (expression_statement "pbVar24 = unaff_s0 + 2;" (assignment_expression "pbVar24 = unaff_s0 + 2" identifier = (binary_expression "unaff_s0 + 2" identifier + number_literal)) ;) (expression_statement "pbVar5 = dp + 2;" (assignment_expression "pbVar5 = dp + 2" identifier = (binary_expression "dp + 2" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)dp = *(undefined2 *)unaff_s0;" (assignment_expression "*(undefined2 *)dp = *(undefined2 *)unaff_s0" (pointer_expression "*(undefined2 *)dp" * (cast_expression "(undefined2 *)dp" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined2 *)unaff_s0" * (cast_expression "(undefined2 *)unaff_s0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "dp = pbVar5;" (assignment_expression "dp = pbVar5" identifier = identifier) ;) (expression_statement "unaff_s0 = pbVar24;" (assignment_expression "unaff_s0 = pbVar24" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar5 + -unaff_s2 != pbVar15)" ( (binary_expression "pbVar5 + -unaff_s2 != pbVar15" (binary_expression "pbVar5 + -unaff_s2" identifier + (unary_expression "-unaff_s2" - identifier)) != identifier) )) ;) (expression_statement "bVar3 = unaff_s3 <= unaff_s1;" (assignment_expression "bVar3 = unaff_s3 <= unaff_s1" identifier = (binary_expression "unaff_s3 <= unaff_s1" identifier <= identifier)) ;) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (if_statement "if (bVar3) break;" if (parenthesized_expression "(bVar3)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "dp = pbVar5 + (uVar4 & 0xfffffffe);" (assignment_expression "dp = pbVar5 + (uVar4 & 0xfffffffe)" identifier = (binary_expression "pbVar5 + (uVar4 & 0xfffffffe)" identifier + (parenthesized_expression "(uVar4 & 0xfffffffe)" ( (binary_expression "uVar4 & 0xfffffffe" identifier & number_literal) )))) ;) (expression_statement "unaff_s0 = pbVar24 + (uVar4 & 0xfffffffe);" (assignment_expression "unaff_s0 = pbVar24 + (uVar4 & 0xfffffffe)" identifier = (binary_expression "pbVar24 + (uVar4 & 0xfffffffe)" identifier + (parenthesized_expression "(uVar4 & 0xfffffffe)" ( (binary_expression "uVar4 & 0xfffffffe" identifier & number_literal) )))) ;) (expression_statement "pbVar15 = dp;" (assignment_expression "pbVar15 = dp" identifier = identifier) ;) (if_statement "if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar5 = pbVar15 + 1;\n            *pbVar15 = *unaff_s0;\n            pbVar15 = pbVar5;\n            unaff_s0 = unaff_s0 + 1;\n          } while (dp + unaff_s3 != pbVar5);\n          return;\n        }" if (parenthesized_expression "(unaff_s3 < unaff_s2)" ( (binary_expression "unaff_s3 < unaff_s2" identifier < identifier) )) (compound_statement "{\n          do {\n            pbVar5 = pbVar15 + 1;\n            *pbVar15 = *unaff_s0;\n            pbVar15 = pbVar5;\n            unaff_s0 = unaff_s0 + 1;\n          } while (dp + unaff_s3 != pbVar5);\n          return;\n        }" { (do_statement "do {\n            pbVar5 = pbVar15 + 1;\n            *pbVar15 = *unaff_s0;\n            pbVar15 = pbVar5;\n            unaff_s0 = unaff_s0 + 1;\n          } while (dp + unaff_s3 != pbVar5);" do (compound_statement "{\n            pbVar5 = pbVar15 + 1;\n            *pbVar15 = *unaff_s0;\n            pbVar15 = pbVar5;\n            unaff_s0 = unaff_s0 + 1;\n          }" { (expression_statement "pbVar5 = pbVar15 + 1;" (assignment_expression "pbVar5 = pbVar15 + 1" identifier = (binary_expression "pbVar15 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar15 = *unaff_s0;" (assignment_expression "*pbVar15 = *unaff_s0" (pointer_expression "*pbVar15" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) (expression_statement "pbVar15 = pbVar5;" (assignment_expression "pbVar15 = pbVar5" identifier = identifier) ;) (expression_statement "unaff_s0 = unaff_s0 + 1;" (assignment_expression "unaff_s0 = unaff_s0 + 1" identifier = (binary_expression "unaff_s0 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(dp + unaff_s3 != pbVar5)" ( (binary_expression "dp + unaff_s3 != pbVar5" (binary_expression "dp + unaff_s3" identifier + identifier) != identifier) )) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })) (labeled_statement "LAB_00030094:\n    pbVar15 = dp;" statement_identifier : (expression_statement "pbVar15 = dp;" (assignment_expression "pbVar15 = dp" identifier = identifier) ;)) (while_statement "while( true ) {\n      do {\n        pbVar5 = dp + 4;\n        uVar16 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)dp = uVar16;\n        dp = pbVar5;\n      } while (pbVar15 + (unaff_s2 - (int)pbVar5) != (byte *)0x0);\n      bVar3 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar3) break;\n      dp = pbVar5 + (uVar4 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar4 & 0xfffffffc);\n      uVar18 = 0;\n      pbVar15 = dp;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar5 = unaff_s0 + uVar18;\n          pbVar15 = dp + uVar18;\n          uVar18 = uVar18 + 1;\n          *pbVar15 = *pbVar5;\n        } while (uVar18 != unaff_s3);\n        return;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      do {\n        pbVar5 = dp + 4;\n        uVar16 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)dp = uVar16;\n        dp = pbVar5;\n      } while (pbVar15 + (unaff_s2 - (int)pbVar5) != (byte *)0x0);\n      bVar3 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar3) break;\n      dp = pbVar5 + (uVar4 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar4 & 0xfffffffc);\n      uVar18 = 0;\n      pbVar15 = dp;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar5 = unaff_s0 + uVar18;\n          pbVar15 = dp + uVar18;\n          uVar18 = uVar18 + 1;\n          *pbVar15 = *pbVar5;\n        } while (uVar18 != unaff_s3);\n        return;\n      }\n    }" { (do_statement "do {\n        pbVar5 = dp + 4;\n        uVar16 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)dp = uVar16;\n        dp = pbVar5;\n      } while (pbVar15 + (unaff_s2 - (int)pbVar5) != (byte *)0x0);" do (compound_statement "{\n        pbVar5 = dp + 4;\n        uVar16 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)dp = uVar16;\n        dp = pbVar5;\n      }" { (expression_statement "pbVar5 = dp + 4;" (assignment_expression "pbVar5 = dp + 4" identifier = (binary_expression "dp + 4" identifier + number_literal)) ;) (expression_statement "uVar16 = *(undefined4 *)unaff_s0;" (assignment_expression "uVar16 = *(undefined4 *)unaff_s0" identifier = (pointer_expression "*(undefined4 *)unaff_s0" * (cast_expression "(undefined4 *)unaff_s0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "unaff_s0 = unaff_s0 + 4;" (assignment_expression "unaff_s0 = unaff_s0 + 4" identifier = (binary_expression "unaff_s0 + 4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)dp = uVar16;" (assignment_expression "*(undefined4 *)dp = uVar16" (pointer_expression "*(undefined4 *)dp" * (cast_expression "(undefined4 *)dp" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "dp = pbVar5;" (assignment_expression "dp = pbVar5" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar15 + (unaff_s2 - (int)pbVar5) != (byte *)0x0)" ( (binary_expression "pbVar15 + (unaff_s2 - (int)pbVar5) != (byte *)0x0" (binary_expression "pbVar15 + (unaff_s2 - (int)pbVar5)" identifier + (parenthesized_expression "(unaff_s2 - (int)pbVar5)" ( (binary_expression "unaff_s2 - (int)pbVar5" identifier - (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ))) != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "bVar3 = unaff_s3 <= unaff_s1;" (assignment_expression "bVar3 = unaff_s3 <= unaff_s1" identifier = (binary_expression "unaff_s3 <= unaff_s1" identifier <= identifier)) ;) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (if_statement "if (bVar3) break;" if (parenthesized_expression "(bVar3)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "dp = pbVar5 + (uVar4 & 0xfffffffc);" (assignment_expression "dp = pbVar5 + (uVar4 & 0xfffffffc)" identifier = (binary_expression "pbVar5 + (uVar4 & 0xfffffffc)" identifier + (parenthesized_expression "(uVar4 & 0xfffffffc)" ( (binary_expression "uVar4 & 0xfffffffc" identifier & number_literal) )))) ;) (expression_statement "unaff_s0 = unaff_s0 + (uVar4 & 0xfffffffc);" (assignment_expression "unaff_s0 = unaff_s0 + (uVar4 & 0xfffffffc)" identifier = (binary_expression "unaff_s0 + (uVar4 & 0xfffffffc)" identifier + (parenthesized_expression "(uVar4 & 0xfffffffc)" ( (binary_expression "uVar4 & 0xfffffffc" identifier & number_literal) )))) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "pbVar15 = dp;" (assignment_expression "pbVar15 = dp" identifier = identifier) ;) (if_statement "if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar5 = unaff_s0 + uVar18;\n          pbVar15 = dp + uVar18;\n          uVar18 = uVar18 + 1;\n          *pbVar15 = *pbVar5;\n        } while (uVar18 != unaff_s3);\n        return;\n      }" if (parenthesized_expression "(unaff_s3 < unaff_s2)" ( (binary_expression "unaff_s3 < unaff_s2" identifier < identifier) )) (compound_statement "{\n        do {\n          pbVar5 = unaff_s0 + uVar18;\n          pbVar15 = dp + uVar18;\n          uVar18 = uVar18 + 1;\n          *pbVar15 = *pbVar5;\n        } while (uVar18 != unaff_s3);\n        return;\n      }" { (do_statement "do {\n          pbVar5 = unaff_s0 + uVar18;\n          pbVar15 = dp + uVar18;\n          uVar18 = uVar18 + 1;\n          *pbVar15 = *pbVar5;\n        } while (uVar18 != unaff_s3);" do (compound_statement "{\n          pbVar5 = unaff_s0 + uVar18;\n          pbVar15 = dp + uVar18;\n          uVar18 = uVar18 + 1;\n          *pbVar15 = *pbVar5;\n        }" { (expression_statement "pbVar5 = unaff_s0 + uVar18;" (assignment_expression "pbVar5 = unaff_s0 + uVar18" identifier = (binary_expression "unaff_s0 + uVar18" identifier + identifier)) ;) (expression_statement "pbVar15 = dp + uVar18;" (assignment_expression "pbVar15 = dp + uVar18" identifier = (binary_expression "dp + uVar18" identifier + identifier)) ;) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar15 = *pbVar5;" (assignment_expression "*pbVar15 = *pbVar5" (pointer_expression "*pbVar15" * identifier) = (pointer_expression "*pbVar5" * identifier)) ;) }) while (parenthesized_expression "(uVar18 != unaff_s3)" ( (binary_expression "uVar18 != unaff_s3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })) (expression_statement "ppVar17 = (png_const_structrp)(PTR_s_nt_0005301c + 0xb98);" (assignment_expression "ppVar17 = (png_const_structrp)(PTR_s_nt_0005301c + 0xb98)" identifier = (call_expression "(png_const_structrp)(PTR_s_nt_0005301c + 0xb98)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "(PTR_s_nt_0005301c + 0xb98)" ( (binary_expression "PTR_s_nt_0005301c + 0xb98" identifier + number_literal) )))) ;) (expression_statement "puVar31 = PTR_png_error_0005340c;" (assignment_expression "puVar31 = PTR_png_error_0005340c" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_error_0005340c)();" (call_expression "(*(code *)PTR_png_error_0005340c)()" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar25 = *(int **)(puVar31 + 0x233b0);" (assignment_expression "piVar25 = *(int **)(puVar31 + 0x233b0)" identifier = (pointer_expression "*(int **)(puVar31 + 0x233b0)" * (cast_expression "(int **)(puVar31 + 0x233b0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + 0x233b0)" ( (binary_expression "puVar31 + 0x233b0" identifier + number_literal) ))))) ;) (expression_statement "iStack_5c = *piVar25;" (assignment_expression "iStack_5c = *piVar25" identifier = (pointer_expression "*piVar25" * identifier)) ;) (expression_statement "ppVar13 = png_ptr;" (assignment_expression "ppVar13 = png_ptr" identifier = identifier) ;) (expression_statement "pbStack_58 = unaff_s0;" (assignment_expression "pbStack_58 = unaff_s0" identifier = identifier) ;) (expression_statement "uStack_54 = uVar12;" (assignment_expression "uStack_54 = uVar12" identifier = identifier) ;) (expression_statement "uStack_50 = unaff_s2;" (assignment_expression "uStack_50 = unaff_s2" identifier = identifier) ;) (if_statement "if ((ppVar17 == (png_const_structrp)0x0) || (png_ptr == (png_const_structrp)0x0))\n  goto LAB_00030268;" if (parenthesized_expression "((ppVar17 == (png_const_structrp)0x0) || (png_ptr == (png_const_structrp)0x0))" ( (binary_expression "(ppVar17 == (png_const_structrp)0x0) || (png_ptr == (png_const_structrp)0x0)" (parenthesized_expression "(ppVar17 == (png_const_structrp)0x0)" ( (binary_expression "ppVar17 == (png_const_structrp)0x0" identifier == (cast_expression "(png_const_structrp)0x0" ( (type_descriptor "png_const_structrp" type_identifier) ) number_literal)) )) || (parenthesized_expression "(png_ptr == (png_const_structrp)0x0)" ( (binary_expression "png_ptr == (png_const_structrp)0x0" identifier == (cast_expression "(png_const_structrp)0x0" ( (type_descriptor "png_const_structrp" type_identifier) ) number_literal)) ))) )) (goto_statement "goto LAB_00030268;" goto statement_identifier ;)) (expression_statement "pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;" (assignment_expression "pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc" identifier = (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "bVar11 = (byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];" (assignment_expression "bVar11 = (byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" identifier = (cast_expression "(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]))) ;) (expression_statement "uVar4 = (uint)bVar11;" (assignment_expression "uVar4 = (uint)bVar11" identifier = (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar12 = (int)pvVar9 - 1;" (assignment_expression "uVar12 = (int)pvVar9 - 1" identifier = (binary_expression "(int)pvVar9 - 1" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal)) ;) (expression_statement "display = display * 4 + *(int *)(puVar31 + 0x22f10) + 0xd40;" (assignment_expression "display = display * 4 + *(int *)(puVar31 + 0x22f10) + 0xd40" identifier = (binary_expression "display * 4 + *(int *)(puVar31 + 0x22f10) + 0xd40" (binary_expression "display * 4 + *(int *)(puVar31 + 0x22f10)" (binary_expression "display * 4" identifier * number_literal) + (pointer_expression "*(int *)(puVar31 + 0x22f10)" * (cast_expression "(int *)(puVar31 + 0x22f10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar31 + 0x22f10)" ( (binary_expression "puVar31 + 0x22f10" identifier + number_literal) ))))) + number_literal)) ;) (expression_statement "iVar8 = *(int *)display;" (assignment_expression "iVar8 = *(int *)display" identifier = (pointer_expression "*(int *)display" * (cast_expression "(int *)display" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "ppVar6 = (png_const_structrp)((int)pvVar9 * iVar8);" (assignment_expression "ppVar6 = (png_const_structrp)((int)pvVar9 * iVar8)" identifier = (call_expression "(png_const_structrp)((int)pvVar9 * iVar8)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "((int)pvVar9 * iVar8)" ( (binary_expression "(int)pvVar9 * iVar8" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) * identifier) )))) ;) (expression_statement "puVar14 = &ppVar6[-1].field_0x3e7;" (assignment_expression "puVar14 = &ppVar6[-1].field_0x3e7" identifier = (pointer_expression "&ppVar6[-1].field_0x3e7" & (field_expression "ppVar6[-1].field_0x3e7" (subscript_expression "ppVar6[-1]" identifier [ number_literal ]) . field_identifier))) ;) (if_statement "if (uVar4 == 2) {\n    pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 2) - 8));\n    ppVar13 = (png_const_structrp)\n              ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 2) - 8));\n    puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 3);\n    ppVar17 = (png_const_structrp)((int)pvVar9 + 3);\n    if ((uVar18 & 0x10000) == 0) {\n      ppVar28 = (png_const_structrp)(~(uint)ppVar17 << 1);\n      uVar12 = ~(uint)puVar14 << 1;\n      iVar21 = 2;\n      pbVar24 = &DAT_00000006;\n      pbVar5 = (byte *)0x0;\n    }\n    else {\n      ppVar17 = (png_const_structrp)((int)ppVar17 * 2);\n      uVar12 = (int)puVar14 * 2;\n      iVar21 = -2;\n      pbVar24 = (byte *)0x0;\n      pbVar5 = &DAT_00000006;\n      ppVar28 = ppVar17;\n    }\n    pbVar30 = (byte *)((uint)ppVar28 & 6);\n    display = uVar12 & 6;\n    pvVar32 = (void *)0x0;\n    if (pvVar9 != (void *)0x0) {\n      do {\n        bVar11 = *pbVar15;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_0003051c:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar24 == pbVar30) {\n          pbVar15 = pbVar15 + -1;\n          pbVar30 = pbVar5;\n        }\n        else {\n          pbVar30 = pbVar30 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;\n  }\n  else {\n    if (uVar4 == 4) {\n      pbVar5 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8));\n      pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                        (((uint)puVar14 >> 1) - 8));\n      puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1);\n      if ((uVar18 & 0x10000) == 0) {\n        ppVar13 = (png_const_structrp)((int)pvVar9 + 1U & 1);\n        pbVar24 = &DAT_00000004;\n        if (ppVar13 != (png_const_structrp)0x0) {\n          pbVar24 = (byte *)0x0;\n        }\n        if (((uint)puVar14 & 1) == 0) {\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = (int)&DAT_00000004;\n          pbVar30 = (byte *)0x0;\n        }\n        else {\n          pbVar30 = (byte *)0x0;\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = 0;\n        }\n      }\n      else {\n        ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4);\n        display = (int)puVar14 * 4 & 4;\n        iVar21 = -4;\n        pbVar20 = (byte *)0x0;\n        pbVar30 = &DAT_00000004;\n        pbVar24 = (byte *)((uint)ppVar13 & 4);\n      }\n      pvVar32 = (void *)0x0;\n      ppVar17 = ppVar6;\n      if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n      do {\n        bVar11 = *pbVar5;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_00030440:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar20 == pbVar24) {\n          pbVar5 = pbVar5 + -1;\n          pbVar24 = pbVar30;\n        }\n        else {\n          pbVar24 = pbVar24 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      ppVar13 = (png_const_structrp)0x0;\n    }\n    else {\n      pbVar15 = (byte *)(uint)(bVar11 >> 3);\n      if (uVar4 == 1) {\n        pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8));\n        display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8);\n        uVar12 = (int)pvVar9 + 7;\n        puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3);\n        if ((uVar18 & 0x10000) == 0) {\n          uVar12 = ~uVar12;\n          puVar14 = (undefined1 *)~(uint)puVar14;\n          iVar21 = 1;\n          ppVar10 = (png_const_structrp)&DAT_00000007;\n          ppVar28 = (png_const_structrp)0x0;\n        }\n        else {\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }\n        ppVar22 = (png_const_structrp)(uVar12 & 7);\n        ppVar13 = (png_const_structrp)((uint)puVar14 & 7);\n        pvVar32 = (void *)0x0;\n        if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n        do {\n          bVar11 = *pbVar15;\n          if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }\n          if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }\n          pvVar32 = (void *)((int)pvVar32 + 1);\n        } while (pvVar32 < pvVar9);\n        uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      }\n      else {\n        ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);\n        ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);\n        ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));\n        if (pvVar9 != (void *)0x0) {\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }\n      }\n    }\nLAB_0003024c:\n    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;\n    if (7 < uVar4) {\n      png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)((uVar4 >> 3) * (int)ppVar6);\n      goto LAB_00030268;\n    }\n  }" if (parenthesized_expression "(uVar4 == 2)" ( (binary_expression "uVar4 == 2" identifier == number_literal) )) (compound_statement "{\n    pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 2) - 8));\n    ppVar13 = (png_const_structrp)\n              ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 2) - 8));\n    puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 3);\n    ppVar17 = (png_const_structrp)((int)pvVar9 + 3);\n    if ((uVar18 & 0x10000) == 0) {\n      ppVar28 = (png_const_structrp)(~(uint)ppVar17 << 1);\n      uVar12 = ~(uint)puVar14 << 1;\n      iVar21 = 2;\n      pbVar24 = &DAT_00000006;\n      pbVar5 = (byte *)0x0;\n    }\n    else {\n      ppVar17 = (png_const_structrp)((int)ppVar17 * 2);\n      uVar12 = (int)puVar14 * 2;\n      iVar21 = -2;\n      pbVar24 = (byte *)0x0;\n      pbVar5 = &DAT_00000006;\n      ppVar28 = ppVar17;\n    }\n    pbVar30 = (byte *)((uint)ppVar28 & 6);\n    display = uVar12 & 6;\n    pvVar32 = (void *)0x0;\n    if (pvVar9 != (void *)0x0) {\n      do {\n        bVar11 = *pbVar15;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_0003051c:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar24 == pbVar30) {\n          pbVar15 = pbVar15 + -1;\n          pbVar30 = pbVar5;\n        }\n        else {\n          pbVar30 = pbVar30 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;\n  }" { (expression_statement "pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 2) - 8));" (assignment_expression "pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 2) - 8))" identifier = (cast_expression "(byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 2) - 8))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 2) - 8))" ( (binary_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 2) - 8)" (cast_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" ( (type_descriptor "int" primitive_type) ) (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar17->jmp_buf_local[0]" (field_expression "ppVar17->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) + (parenthesized_expression "((uVar12 >> 2) - 8)" ( (binary_expression "(uVar12 >> 2) - 8" (parenthesized_expression "(uVar12 >> 2)" ( (binary_expression "uVar12 >> 2" identifier >> number_literal) )) - number_literal) ))) )))) ;) (expression_statement "ppVar13 = (png_const_structrp)\n              ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 2) - 8));" (assignment_expression "ppVar13 = (png_const_structrp)\n              ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 2) - 8))" identifier = (call_expression "(png_const_structrp)\n              ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 2) - 8))" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 2) - 8))" ( (binary_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 2) - 8)" (cast_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" ( (type_descriptor "int" primitive_type) ) (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar17->jmp_buf_local[0]" (field_expression "ppVar17->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) + (parenthesized_expression "(((uint)puVar14 >> 2) - 8)" ( (binary_expression "((uint)puVar14 >> 2) - 8" (parenthesized_expression "((uint)puVar14 >> 2)" ( (binary_expression "(uint)puVar14 >> 2" (cast_expression "(uint)puVar14" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) - number_literal) ))) )))) ;) (expression_statement "puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 3);" (assignment_expression "puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 3)" identifier = (cast_expression "(undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 3)" ( (binary_expression "(int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 3" (cast_expression "(int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc" & (field_expression "ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc" (subscript_expression "ppVar6->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar6->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar6->jmp_buf_local[0]" (field_expression "ppVar6->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (expression_statement "ppVar17 = (png_const_structrp)((int)pvVar9 + 3);" (assignment_expression "ppVar17 = (png_const_structrp)((int)pvVar9 + 3)" identifier = (call_expression "(png_const_structrp)((int)pvVar9 + 3)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "((int)pvVar9 + 3)" ( (binary_expression "(int)pvVar9 + 3" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if ((uVar18 & 0x10000) == 0) {\n      ppVar28 = (png_const_structrp)(~(uint)ppVar17 << 1);\n      uVar12 = ~(uint)puVar14 << 1;\n      iVar21 = 2;\n      pbVar24 = &DAT_00000006;\n      pbVar5 = (byte *)0x0;\n    }\n    else {\n      ppVar17 = (png_const_structrp)((int)ppVar17 * 2);\n      uVar12 = (int)puVar14 * 2;\n      iVar21 = -2;\n      pbVar24 = (byte *)0x0;\n      pbVar5 = &DAT_00000006;\n      ppVar28 = ppVar17;\n    }" if (parenthesized_expression "((uVar18 & 0x10000) == 0)" ( (binary_expression "(uVar18 & 0x10000) == 0" (parenthesized_expression "(uVar18 & 0x10000)" ( (binary_expression "uVar18 & 0x10000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      ppVar28 = (png_const_structrp)(~(uint)ppVar17 << 1);\n      uVar12 = ~(uint)puVar14 << 1;\n      iVar21 = 2;\n      pbVar24 = &DAT_00000006;\n      pbVar5 = (byte *)0x0;\n    }" { (expression_statement "ppVar28 = (png_const_structrp)(~(uint)ppVar17 << 1);" (assignment_expression "ppVar28 = (png_const_structrp)(~(uint)ppVar17 << 1)" identifier = (call_expression "(png_const_structrp)(~(uint)ppVar17 << 1)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "(~(uint)ppVar17 << 1)" ( (binary_expression "~(uint)ppVar17 << 1" (unary_expression "~(uint)ppVar17" ~ (cast_expression "(uint)ppVar17" ( (type_descriptor "uint" type_identifier) ) identifier)) << number_literal) )))) ;) (expression_statement "uVar12 = ~(uint)puVar14 << 1;" (assignment_expression "uVar12 = ~(uint)puVar14 << 1" identifier = (binary_expression "~(uint)puVar14 << 1" (unary_expression "~(uint)puVar14" ~ (cast_expression "(uint)puVar14" ( (type_descriptor "uint" type_identifier) ) identifier)) << number_literal)) ;) (expression_statement "iVar21 = 2;" (assignment_expression "iVar21 = 2" identifier = number_literal) ;) (expression_statement "pbVar24 = &DAT_00000006;" (assignment_expression "pbVar24 = &DAT_00000006" identifier = (pointer_expression "&DAT_00000006" & identifier)) ;) (expression_statement "pbVar5 = (byte *)0x0;" (assignment_expression "pbVar5 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      ppVar17 = (png_const_structrp)((int)ppVar17 * 2);\n      uVar12 = (int)puVar14 * 2;\n      iVar21 = -2;\n      pbVar24 = (byte *)0x0;\n      pbVar5 = &DAT_00000006;\n      ppVar28 = ppVar17;\n    }" else (compound_statement "{\n      ppVar17 = (png_const_structrp)((int)ppVar17 * 2);\n      uVar12 = (int)puVar14 * 2;\n      iVar21 = -2;\n      pbVar24 = (byte *)0x0;\n      pbVar5 = &DAT_00000006;\n      ppVar28 = ppVar17;\n    }" { (expression_statement "ppVar17 = (png_const_structrp)((int)ppVar17 * 2);" (assignment_expression "ppVar17 = (png_const_structrp)((int)ppVar17 * 2)" identifier = (call_expression "(png_const_structrp)((int)ppVar17 * 2)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "((int)ppVar17 * 2)" ( (binary_expression "(int)ppVar17 * 2" (cast_expression "(int)ppVar17" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "uVar12 = (int)puVar14 * 2;" (assignment_expression "uVar12 = (int)puVar14 * 2" identifier = (binary_expression "(int)puVar14 * 2" (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "iVar21 = -2;" (assignment_expression "iVar21 = -2" identifier = number_literal) ;) (expression_statement "pbVar24 = (byte *)0x0;" (assignment_expression "pbVar24 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar5 = &DAT_00000006;" (assignment_expression "pbVar5 = &DAT_00000006" identifier = (pointer_expression "&DAT_00000006" & identifier)) ;) (expression_statement "ppVar28 = ppVar17;" (assignment_expression "ppVar28 = ppVar17" identifier = identifier) ;) }))) (expression_statement "pbVar30 = (byte *)((uint)ppVar28 & 6);" (assignment_expression "pbVar30 = (byte *)((uint)ppVar28 & 6)" identifier = (cast_expression "(byte *)((uint)ppVar28 & 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)ppVar28 & 6)" ( (binary_expression "(uint)ppVar28 & 6" (cast_expression "(uint)ppVar28" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "display = uVar12 & 6;" (assignment_expression "display = uVar12 & 6" identifier = (binary_expression "uVar12 & 6" identifier & number_literal)) ;) (expression_statement "pvVar32 = (void *)0x0;" (assignment_expression "pvVar32 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pvVar9 != (void *)0x0) {\n      do {\n        bVar11 = *pbVar15;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_0003051c:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar24 == pbVar30) {\n          pbVar15 = pbVar15 + -1;\n          pbVar30 = pbVar5;\n        }\n        else {\n          pbVar30 = pbVar30 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      goto LAB_0003024c;\n    }" if (parenthesized_expression "(pvVar9 != (void *)0x0)" ( (binary_expression "pvVar9 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      do {\n        bVar11 = *pbVar15;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_0003051c:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar24 == pbVar30) {\n          pbVar15 = pbVar15 + -1;\n          pbVar30 = pbVar5;\n        }\n        else {\n          pbVar30 = pbVar30 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      goto LAB_0003024c;\n    }" { (do_statement "do {\n        bVar11 = *pbVar15;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_0003051c:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar24 == pbVar30) {\n          pbVar15 = pbVar15 + -1;\n          pbVar30 = pbVar5;\n        }\n        else {\n          pbVar30 = pbVar30 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);" do (compound_statement "{\n        bVar11 = *pbVar15;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_0003051c:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar24 == pbVar30) {\n          pbVar15 = pbVar15 + -1;\n          pbVar30 = pbVar5;\n        }\n        else {\n          pbVar30 = pbVar30 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      }" { (expression_statement "bVar11 = *pbVar15;" (assignment_expression "bVar11 = *pbVar15" identifier = (pointer_expression "*pbVar15" * identifier)) ;) (if_statement "if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_0003051c:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_0003051c:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);" do (compound_statement "{\n            while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          }" { (while_statement "while( true ) {\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar7 = iVar29;\n              bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;\n              uVar18 = (uint)bVar26;\n              *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;\n              if (pbVar24 != (byte *)display) break;\n              ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar5;\n              if (iVar7 + 1 == iVar8) goto LAB_0003051c;\n            }" { (expression_statement "iVar7 = iVar29;" (assignment_expression "iVar7 = iVar29" identifier = identifier) ;) (expression_statement "bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc;" (assignment_expression "bVar26 = *(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc" identifier = (pointer_expression "*(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc" * (cast_expression "(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc" & (field_expression "ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc" (subscript_expression "ppVar13->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar13->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar13->jmp_buf_local[0]" (field_expression "ppVar13->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier))))) ;) (expression_statement "uVar18 = (uint)bVar26;" (assignment_expression "uVar18 = (uint)bVar26" identifier = (cast_expression "(uint)bVar26" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "*(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26;" (assignment_expression "*(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc =\n                   (byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26" (pointer_expression "*(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc" * (cast_expression "(byte *)&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc" & (field_expression "ppVar13->jmp_buf_local[0].__jmpbuf[0].__pc" (subscript_expression "ppVar13->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar13->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar13->jmp_buf_local[0]" (field_expression "ppVar13->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)))) = (binary_expression "(byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)) |\n                   (byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26" (call_expression "(byte)(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU))" ( (binary_expression "((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U) << (display & 0x1fU)" (parenthesized_expression "((int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U)" ( (binary_expression "(int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f) & 3U" (binary_expression "(int)(uint)bVar11 >> ((uint)pbVar30 & 0x1f)" (cast_expression "(int)(uint)bVar11" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) >> (parenthesized_expression "((uint)pbVar30 & 0x1f)" ( (binary_expression "(uint)pbVar30 & 0x1f" (cast_expression "(uint)pbVar30" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) << (parenthesized_expression "(display & 0x1fU)" ( (binary_expression "display & 0x1fU" identifier & number_literal) ))) ))) | (binary_expression "(byte)(0x3f3f >> (6U - display & 0x1f)) & bVar26" (call_expression "(byte)(0x3f3f >> (6U - display & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0x3f3f >> (6U - display & 0x1f))" ( (binary_expression "0x3f3f >> (6U - display & 0x1f)" number_literal >> (parenthesized_expression "(6U - display & 0x1f)" ( (binary_expression "6U - display & 0x1f" (binary_expression "6U - display" number_literal - identifier) & number_literal) ))) ))) & identifier))) ;) (if_statement "if (pbVar24 != (byte *)display) break;" if (parenthesized_expression "(pbVar24 != (byte *)display)" ( (binary_expression "pbVar24 != (byte *)display" identifier != (cast_expression "(byte *)display" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7;" (assignment_expression "ppVar13 = (png_const_structrp)&ppVar13[-1].field_0x3e7" identifier = (binary_expression "(png_const_structrp)&ppVar13[-1].field_0x3e7" (parenthesized_expression "(png_const_structrp)" ( identifier )) & (field_expression "ppVar13[-1].field_0x3e7" (subscript_expression "ppVar13[-1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "iVar29 = iVar7 + 1;" (assignment_expression "iVar29 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "display = (int)pbVar5;" (assignment_expression "display = (int)pbVar5" identifier = (cast_expression "(int)pbVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar7 + 1 == iVar8) goto LAB_0003051c;" if (parenthesized_expression "(iVar7 + 1 == iVar8)" ( (binary_expression "iVar7 + 1 == iVar8" (binary_expression "iVar7 + 1" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_0003051c;" goto statement_identifier ;)) })) (expression_statement "display = display + iVar21;" (assignment_expression "display = display + iVar21" identifier = (binary_expression "display + iVar21" identifier + identifier)) ;) (expression_statement "iVar29 = iVar7 + 1;" (assignment_expression "iVar29 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 + 1 != iVar8)" ( (binary_expression "iVar7 + 1 != iVar8" (binary_expression "iVar7 + 1" identifier + number_literal) != identifier) )) ;) (labeled_statement "LAB_0003051c:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);" statement_identifier : (expression_statement "ppVar17 = (png_const_structrp)(iVar7 + 1);" (assignment_expression "ppVar17 = (png_const_structrp)(iVar7 + 1)" identifier = (call_expression "(png_const_structrp)(iVar7 + 1)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "(iVar7 + 1)" ( (binary_expression "iVar7 + 1" identifier + number_literal) )))) ;)) (expression_statement "pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;" (assignment_expression "pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc" identifier = (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) ;) })) (if_statement "if (pbVar24 == pbVar30) {\n          pbVar15 = pbVar15 + -1;\n          pbVar30 = pbVar5;\n        }\n        else {\n          pbVar30 = pbVar30 + iVar21;\n        }" if (parenthesized_expression "(pbVar24 == pbVar30)" ( (binary_expression "pbVar24 == pbVar30" identifier == identifier) )) (compound_statement "{\n          pbVar15 = pbVar15 + -1;\n          pbVar30 = pbVar5;\n        }" { (expression_statement "pbVar15 = pbVar15 + -1;" (assignment_expression "pbVar15 = pbVar15 + -1" identifier = (binary_expression "pbVar15 + -1" identifier + number_literal)) ;) (expression_statement "pbVar30 = pbVar5;" (assignment_expression "pbVar30 = pbVar5" identifier = identifier) ;) }) (else_clause "else {\n          pbVar30 = pbVar30 + iVar21;\n        }" else (compound_statement "{\n          pbVar30 = pbVar30 + iVar21;\n        }" { (expression_statement "pbVar30 = pbVar30 + iVar21;" (assignment_expression "pbVar30 = pbVar30 + iVar21" identifier = (binary_expression "pbVar30 + iVar21" identifier + identifier)) ;) }))) (expression_statement "pvVar32 = (void *)((int)pvVar32 + 1);" (assignment_expression "pvVar32 = (void *)((int)pvVar32 + 1)" identifier = (cast_expression "(void *)((int)pvVar32 + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar32 + 1)" ( (binary_expression "(int)pvVar32 + 1" (cast_expression "(int)pvVar32" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(pvVar32 < pvVar9)" ( (binary_expression "pvVar32 < pvVar9" identifier < identifier) )) ;) (expression_statement "uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];" (assignment_expression "uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" identifier = (cast_expression "(uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ])))) ;) (goto_statement "goto LAB_0003024c;" goto statement_identifier ;) })) (labeled_statement "LAB_000302a4:\n    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;" statement_identifier : (expression_statement "png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;" (assignment_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) = identifier) ;)) }) (else_clause "else {\n    if (uVar4 == 4) {\n      pbVar5 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8));\n      pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                        (((uint)puVar14 >> 1) - 8));\n      puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1);\n      if ((uVar18 & 0x10000) == 0) {\n        ppVar13 = (png_const_structrp)((int)pvVar9 + 1U & 1);\n        pbVar24 = &DAT_00000004;\n        if (ppVar13 != (png_const_structrp)0x0) {\n          pbVar24 = (byte *)0x0;\n        }\n        if (((uint)puVar14 & 1) == 0) {\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = (int)&DAT_00000004;\n          pbVar30 = (byte *)0x0;\n        }\n        else {\n          pbVar30 = (byte *)0x0;\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = 0;\n        }\n      }\n      else {\n        ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4);\n        display = (int)puVar14 * 4 & 4;\n        iVar21 = -4;\n        pbVar20 = (byte *)0x0;\n        pbVar30 = &DAT_00000004;\n        pbVar24 = (byte *)((uint)ppVar13 & 4);\n      }\n      pvVar32 = (void *)0x0;\n      ppVar17 = ppVar6;\n      if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n      do {\n        bVar11 = *pbVar5;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_00030440:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar20 == pbVar24) {\n          pbVar5 = pbVar5 + -1;\n          pbVar24 = pbVar30;\n        }\n        else {\n          pbVar24 = pbVar24 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      ppVar13 = (png_const_structrp)0x0;\n    }\n    else {\n      pbVar15 = (byte *)(uint)(bVar11 >> 3);\n      if (uVar4 == 1) {\n        pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8));\n        display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8);\n        uVar12 = (int)pvVar9 + 7;\n        puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3);\n        if ((uVar18 & 0x10000) == 0) {\n          uVar12 = ~uVar12;\n          puVar14 = (undefined1 *)~(uint)puVar14;\n          iVar21 = 1;\n          ppVar10 = (png_const_structrp)&DAT_00000007;\n          ppVar28 = (png_const_structrp)0x0;\n        }\n        else {\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }\n        ppVar22 = (png_const_structrp)(uVar12 & 7);\n        ppVar13 = (png_const_structrp)((uint)puVar14 & 7);\n        pvVar32 = (void *)0x0;\n        if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n        do {\n          bVar11 = *pbVar15;\n          if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }\n          if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }\n          pvVar32 = (void *)((int)pvVar32 + 1);\n        } while (pvVar32 < pvVar9);\n        uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      }\n      else {\n        ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);\n        ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);\n        ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));\n        if (pvVar9 != (void *)0x0) {\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }\n      }\n    }\nLAB_0003024c:\n    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;\n    if (7 < uVar4) {\n      png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)((uVar4 >> 3) * (int)ppVar6);\n      goto LAB_00030268;\n    }\n  }" else (compound_statement "{\n    if (uVar4 == 4) {\n      pbVar5 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8));\n      pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                        (((uint)puVar14 >> 1) - 8));\n      puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1);\n      if ((uVar18 & 0x10000) == 0) {\n        ppVar13 = (png_const_structrp)((int)pvVar9 + 1U & 1);\n        pbVar24 = &DAT_00000004;\n        if (ppVar13 != (png_const_structrp)0x0) {\n          pbVar24 = (byte *)0x0;\n        }\n        if (((uint)puVar14 & 1) == 0) {\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = (int)&DAT_00000004;\n          pbVar30 = (byte *)0x0;\n        }\n        else {\n          pbVar30 = (byte *)0x0;\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = 0;\n        }\n      }\n      else {\n        ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4);\n        display = (int)puVar14 * 4 & 4;\n        iVar21 = -4;\n        pbVar20 = (byte *)0x0;\n        pbVar30 = &DAT_00000004;\n        pbVar24 = (byte *)((uint)ppVar13 & 4);\n      }\n      pvVar32 = (void *)0x0;\n      ppVar17 = ppVar6;\n      if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n      do {\n        bVar11 = *pbVar5;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_00030440:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar20 == pbVar24) {\n          pbVar5 = pbVar5 + -1;\n          pbVar24 = pbVar30;\n        }\n        else {\n          pbVar24 = pbVar24 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      ppVar13 = (png_const_structrp)0x0;\n    }\n    else {\n      pbVar15 = (byte *)(uint)(bVar11 >> 3);\n      if (uVar4 == 1) {\n        pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8));\n        display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8);\n        uVar12 = (int)pvVar9 + 7;\n        puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3);\n        if ((uVar18 & 0x10000) == 0) {\n          uVar12 = ~uVar12;\n          puVar14 = (undefined1 *)~(uint)puVar14;\n          iVar21 = 1;\n          ppVar10 = (png_const_structrp)&DAT_00000007;\n          ppVar28 = (png_const_structrp)0x0;\n        }\n        else {\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }\n        ppVar22 = (png_const_structrp)(uVar12 & 7);\n        ppVar13 = (png_const_structrp)((uint)puVar14 & 7);\n        pvVar32 = (void *)0x0;\n        if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n        do {\n          bVar11 = *pbVar15;\n          if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }\n          if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }\n          pvVar32 = (void *)((int)pvVar32 + 1);\n        } while (pvVar32 < pvVar9);\n        uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      }\n      else {\n        ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);\n        ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);\n        ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));\n        if (pvVar9 != (void *)0x0) {\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }\n      }\n    }\nLAB_0003024c:\n    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;\n    if (7 < uVar4) {\n      png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)((uVar4 >> 3) * (int)ppVar6);\n      goto LAB_00030268;\n    }\n  }" { (if_statement "if (uVar4 == 4) {\n      pbVar5 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8));\n      pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                        (((uint)puVar14 >> 1) - 8));\n      puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1);\n      if ((uVar18 & 0x10000) == 0) {\n        ppVar13 = (png_const_structrp)((int)pvVar9 + 1U & 1);\n        pbVar24 = &DAT_00000004;\n        if (ppVar13 != (png_const_structrp)0x0) {\n          pbVar24 = (byte *)0x0;\n        }\n        if (((uint)puVar14 & 1) == 0) {\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = (int)&DAT_00000004;\n          pbVar30 = (byte *)0x0;\n        }\n        else {\n          pbVar30 = (byte *)0x0;\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = 0;\n        }\n      }\n      else {\n        ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4);\n        display = (int)puVar14 * 4 & 4;\n        iVar21 = -4;\n        pbVar20 = (byte *)0x0;\n        pbVar30 = &DAT_00000004;\n        pbVar24 = (byte *)((uint)ppVar13 & 4);\n      }\n      pvVar32 = (void *)0x0;\n      ppVar17 = ppVar6;\n      if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n      do {\n        bVar11 = *pbVar5;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_00030440:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar20 == pbVar24) {\n          pbVar5 = pbVar5 + -1;\n          pbVar24 = pbVar30;\n        }\n        else {\n          pbVar24 = pbVar24 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      ppVar13 = (png_const_structrp)0x0;\n    }\n    else {\n      pbVar15 = (byte *)(uint)(bVar11 >> 3);\n      if (uVar4 == 1) {\n        pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8));\n        display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8);\n        uVar12 = (int)pvVar9 + 7;\n        puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3);\n        if ((uVar18 & 0x10000) == 0) {\n          uVar12 = ~uVar12;\n          puVar14 = (undefined1 *)~(uint)puVar14;\n          iVar21 = 1;\n          ppVar10 = (png_const_structrp)&DAT_00000007;\n          ppVar28 = (png_const_structrp)0x0;\n        }\n        else {\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }\n        ppVar22 = (png_const_structrp)(uVar12 & 7);\n        ppVar13 = (png_const_structrp)((uint)puVar14 & 7);\n        pvVar32 = (void *)0x0;\n        if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n        do {\n          bVar11 = *pbVar15;\n          if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }\n          if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }\n          pvVar32 = (void *)((int)pvVar32 + 1);\n        } while (pvVar32 < pvVar9);\n        uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      }\n      else {\n        ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);\n        ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);\n        ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));\n        if (pvVar9 != (void *)0x0) {\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }\n      }\n    }" if (parenthesized_expression "(uVar4 == 4)" ( (binary_expression "uVar4 == 4" identifier == number_literal) )) (compound_statement "{\n      pbVar5 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8));\n      pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                        (((uint)puVar14 >> 1) - 8));\n      puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1);\n      if ((uVar18 & 0x10000) == 0) {\n        ppVar13 = (png_const_structrp)((int)pvVar9 + 1U & 1);\n        pbVar24 = &DAT_00000004;\n        if (ppVar13 != (png_const_structrp)0x0) {\n          pbVar24 = (byte *)0x0;\n        }\n        if (((uint)puVar14 & 1) == 0) {\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = (int)&DAT_00000004;\n          pbVar30 = (byte *)0x0;\n        }\n        else {\n          pbVar30 = (byte *)0x0;\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = 0;\n        }\n      }\n      else {\n        ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4);\n        display = (int)puVar14 * 4 & 4;\n        iVar21 = -4;\n        pbVar20 = (byte *)0x0;\n        pbVar30 = &DAT_00000004;\n        pbVar24 = (byte *)((uint)ppVar13 & 4);\n      }\n      pvVar32 = (void *)0x0;\n      ppVar17 = ppVar6;\n      if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n      do {\n        bVar11 = *pbVar5;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_00030440:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar20 == pbVar24) {\n          pbVar5 = pbVar5 + -1;\n          pbVar24 = pbVar30;\n        }\n        else {\n          pbVar24 = pbVar24 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);\n      uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      ppVar13 = (png_const_structrp)0x0;\n    }" { (expression_statement "pbVar5 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8));" (assignment_expression "pbVar5 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8))" identifier = (cast_expression "(byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8))" ( (binary_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 1) - 8)" (cast_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" ( (type_descriptor "int" primitive_type) ) (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar17->jmp_buf_local[0]" (field_expression "ppVar17->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) + (parenthesized_expression "((uVar12 >> 1) - 8)" ( (binary_expression "(uVar12 >> 1) - 8" (parenthesized_expression "(uVar12 >> 1)" ( (binary_expression "uVar12 >> 1" identifier >> number_literal) )) - number_literal) ))) )))) ;) (expression_statement "pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                        (((uint)puVar14 >> 1) - 8));" (assignment_expression "pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                        (((uint)puVar14 >> 1) - 8))" identifier = (cast_expression "(byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                        (((uint)puVar14 >> 1) - 8))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                        (((uint)puVar14 >> 1) - 8))" ( (binary_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                        (((uint)puVar14 >> 1) - 8)" (cast_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" ( (type_descriptor "int" primitive_type) ) (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar17->jmp_buf_local[0]" (field_expression "ppVar17->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) + (parenthesized_expression "(((uint)puVar14 >> 1) - 8)" ( (binary_expression "((uint)puVar14 >> 1) - 8" (parenthesized_expression "((uint)puVar14 >> 1)" ( (binary_expression "(uint)puVar14 >> 1" (cast_expression "(uint)puVar14" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) - number_literal) ))) )))) ;) (expression_statement "puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1);" (assignment_expression "puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1)" identifier = (cast_expression "(undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1)" ( (binary_expression "(int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc + 1" (cast_expression "(int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc" & (field_expression "ppVar6->jmp_buf_local[0].__jmpbuf[0].__pc" (subscript_expression "ppVar6->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar6->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar6->jmp_buf_local[0]" (field_expression "ppVar6->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (if_statement "if ((uVar18 & 0x10000) == 0) {\n        ppVar13 = (png_const_structrp)((int)pvVar9 + 1U & 1);\n        pbVar24 = &DAT_00000004;\n        if (ppVar13 != (png_const_structrp)0x0) {\n          pbVar24 = (byte *)0x0;\n        }\n        if (((uint)puVar14 & 1) == 0) {\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = (int)&DAT_00000004;\n          pbVar30 = (byte *)0x0;\n        }\n        else {\n          pbVar30 = (byte *)0x0;\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = 0;\n        }\n      }\n      else {\n        ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4);\n        display = (int)puVar14 * 4 & 4;\n        iVar21 = -4;\n        pbVar20 = (byte *)0x0;\n        pbVar30 = &DAT_00000004;\n        pbVar24 = (byte *)((uint)ppVar13 & 4);\n      }" if (parenthesized_expression "((uVar18 & 0x10000) == 0)" ( (binary_expression "(uVar18 & 0x10000) == 0" (parenthesized_expression "(uVar18 & 0x10000)" ( (binary_expression "uVar18 & 0x10000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        ppVar13 = (png_const_structrp)((int)pvVar9 + 1U & 1);\n        pbVar24 = &DAT_00000004;\n        if (ppVar13 != (png_const_structrp)0x0) {\n          pbVar24 = (byte *)0x0;\n        }\n        if (((uint)puVar14 & 1) == 0) {\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = (int)&DAT_00000004;\n          pbVar30 = (byte *)0x0;\n        }\n        else {\n          pbVar30 = (byte *)0x0;\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = 0;\n        }\n      }" { (expression_statement "ppVar13 = (png_const_structrp)((int)pvVar9 + 1U & 1);" (assignment_expression "ppVar13 = (png_const_structrp)((int)pvVar9 + 1U & 1)" identifier = (call_expression "(png_const_structrp)((int)pvVar9 + 1U & 1)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "((int)pvVar9 + 1U & 1)" ( (binary_expression "(int)pvVar9 + 1U & 1" (binary_expression "(int)pvVar9 + 1U" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) & number_literal) )))) ;) (expression_statement "pbVar24 = &DAT_00000004;" (assignment_expression "pbVar24 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (if_statement "if (ppVar13 != (png_const_structrp)0x0) {\n          pbVar24 = (byte *)0x0;\n        }" if (parenthesized_expression "(ppVar13 != (png_const_structrp)0x0)" ( (binary_expression "ppVar13 != (png_const_structrp)0x0" identifier != (cast_expression "(png_const_structrp)0x0" ( (type_descriptor "png_const_structrp" type_identifier) ) number_literal)) )) (compound_statement "{\n          pbVar24 = (byte *)0x0;\n        }" { (expression_statement "pbVar24 = (byte *)0x0;" (assignment_expression "pbVar24 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (((uint)puVar14 & 1) == 0) {\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = (int)&DAT_00000004;\n          pbVar30 = (byte *)0x0;\n        }\n        else {\n          pbVar30 = (byte *)0x0;\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = 0;\n        }" if (parenthesized_expression "(((uint)puVar14 & 1) == 0)" ( (binary_expression "((uint)puVar14 & 1) == 0" (parenthesized_expression "((uint)puVar14 & 1)" ( (binary_expression "(uint)puVar14 & 1" (cast_expression "(uint)puVar14" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = (int)&DAT_00000004;\n          pbVar30 = (byte *)0x0;\n        }" { (expression_statement "iVar21 = 4;" (assignment_expression "iVar21 = 4" identifier = number_literal) ;) (expression_statement "pbVar20 = &DAT_00000004;" (assignment_expression "pbVar20 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (expression_statement "display = (int)&DAT_00000004;" (assignment_expression "display = (int)&DAT_00000004" identifier = (cast_expression "(int)&DAT_00000004" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&DAT_00000004" & identifier))) ;) (expression_statement "pbVar30 = (byte *)0x0;" (assignment_expression "pbVar30 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          pbVar30 = (byte *)0x0;\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = 0;\n        }" else (compound_statement "{\n          pbVar30 = (byte *)0x0;\n          iVar21 = 4;\n          pbVar20 = &DAT_00000004;\n          display = 0;\n        }" { (expression_statement "pbVar30 = (byte *)0x0;" (assignment_expression "pbVar30 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar21 = 4;" (assignment_expression "iVar21 = 4" identifier = number_literal) ;) (expression_statement "pbVar20 = &DAT_00000004;" (assignment_expression "pbVar20 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (expression_statement "display = 0;" (assignment_expression "display = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n        ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4);\n        display = (int)puVar14 * 4 & 4;\n        iVar21 = -4;\n        pbVar20 = (byte *)0x0;\n        pbVar30 = &DAT_00000004;\n        pbVar24 = (byte *)((uint)ppVar13 & 4);\n      }" else (compound_statement "{\n        ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4);\n        display = (int)puVar14 * 4 & 4;\n        iVar21 = -4;\n        pbVar20 = (byte *)0x0;\n        pbVar30 = &DAT_00000004;\n        pbVar24 = (byte *)((uint)ppVar13 & 4);\n      }" { (expression_statement "ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4);" (assignment_expression "ppVar13 = (png_const_structrp)(((int)pvVar9 + 1U) * 4)" identifier = (call_expression "(png_const_structrp)(((int)pvVar9 + 1U) * 4)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "(((int)pvVar9 + 1U) * 4)" ( (binary_expression "((int)pvVar9 + 1U) * 4" (parenthesized_expression "((int)pvVar9 + 1U)" ( (binary_expression "(int)pvVar9 + 1U" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )) * number_literal) )))) ;) (expression_statement "display = (int)puVar14 * 4 & 4;" (assignment_expression "display = (int)puVar14 * 4 & 4" identifier = (binary_expression "(int)puVar14 * 4 & 4" (binary_expression "(int)puVar14 * 4" (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) & number_literal)) ;) (expression_statement "iVar21 = -4;" (assignment_expression "iVar21 = -4" identifier = number_literal) ;) (expression_statement "pbVar20 = (byte *)0x0;" (assignment_expression "pbVar20 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar30 = &DAT_00000004;" (assignment_expression "pbVar30 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (expression_statement "pbVar24 = (byte *)((uint)ppVar13 & 4);" (assignment_expression "pbVar24 = (byte *)((uint)ppVar13 & 4)" identifier = (cast_expression "(byte *)((uint)ppVar13 & 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)ppVar13 & 4)" ( (binary_expression "(uint)ppVar13 & 4" (cast_expression "(uint)ppVar13" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) }))) (expression_statement "pvVar32 = (void *)0x0;" (assignment_expression "pvVar32 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppVar17 = ppVar6;" (assignment_expression "ppVar17 = ppVar6" identifier = identifier) ;) (if_statement "if (pvVar9 == (void *)0x0) goto LAB_000302a4;" if (parenthesized_expression "(pvVar9 == (void *)0x0)" ( (binary_expression "pvVar9 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000302a4;" goto statement_identifier ;)) (do_statement "do {\n        bVar11 = *pbVar5;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_00030440:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar20 == pbVar24) {\n          pbVar5 = pbVar5 + -1;\n          pbVar24 = pbVar30;\n        }\n        else {\n          pbVar24 = pbVar24 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      } while (pvVar32 < pvVar9);" do (compound_statement "{\n        bVar11 = *pbVar5;\n        if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_00030440:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }\n        if (pbVar20 == pbVar24) {\n          pbVar5 = pbVar5 + -1;\n          pbVar24 = pbVar30;\n        }\n        else {\n          pbVar24 = pbVar24 + iVar21;\n        }\n        pvVar32 = (void *)((int)pvVar32 + 1);\n      }" { (expression_statement "bVar11 = *pbVar5;" (assignment_expression "bVar11 = *pbVar5" identifier = (pointer_expression "*pbVar5" * identifier)) ;) (if_statement "if (0 < iVar8) {\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_00030440:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\n          iVar29 = 0;\n          do {\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);\nLAB_00030440:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);\n          pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n        }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          } while (iVar7 + 1 != iVar8);" do (compound_statement "{\n            while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }\n            display = display + iVar21;\n            iVar29 = iVar7 + 1;\n          }" { (while_statement "while( true ) {\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar7 = iVar29;\n              uVar18 = (uint)*pbVar15;\n              *pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;\n              if (pbVar20 != (byte *)display) break;\n              pbVar15 = pbVar15 + -1;\n              iVar29 = iVar7 + 1;\n              display = (int)pbVar30;\n              if (iVar7 + 1 == iVar8) goto LAB_00030440;\n            }" { (expression_statement "iVar7 = iVar29;" (assignment_expression "iVar7 = iVar29" identifier = identifier) ;) (expression_statement "uVar18 = (uint)*pbVar15;" (assignment_expression "uVar18 = (uint)*pbVar15" identifier = (binary_expression "(uint)*pbVar15" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "*pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15;" (assignment_expression "*pbVar15 = (byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15" (pointer_expression "*pbVar15" * identifier) = (binary_expression "(byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)) |\n                         (byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15" (call_expression "(byte)(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU))" ( (binary_expression "((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU) <<\n                               (display & 0x1fU)" (parenthesized_expression "((int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU)" ( (binary_expression "(int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f) & 0xfU" (binary_expression "(int)(uint)bVar11 >> ((uint)pbVar24 & 0x1f)" (cast_expression "(int)(uint)bVar11" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) >> (parenthesized_expression "((uint)pbVar24 & 0x1f)" ( (binary_expression "(uint)pbVar24 & 0x1f" (cast_expression "(uint)pbVar24" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) << (parenthesized_expression "(display & 0x1fU)" ( (binary_expression "display & 0x1fU" identifier & number_literal) ))) ))) | (binary_expression "(byte)(0xf0f >> (4U - display & 0x1f)) & *pbVar15" (call_expression "(byte)(0xf0f >> (4U - display & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0xf0f >> (4U - display & 0x1f))" ( (binary_expression "0xf0f >> (4U - display & 0x1f)" number_literal >> (parenthesized_expression "(4U - display & 0x1f)" ( (binary_expression "4U - display & 0x1f" (binary_expression "4U - display" number_literal - identifier) & number_literal) ))) ))) & (pointer_expression "*pbVar15" * identifier)))) ;) (if_statement "if (pbVar20 != (byte *)display) break;" if (parenthesized_expression "(pbVar20 != (byte *)display)" ( (binary_expression "pbVar20 != (byte *)display" identifier != (cast_expression "(byte *)display" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (break_statement "break;" break ;)) (expression_statement "pbVar15 = pbVar15 + -1;" (assignment_expression "pbVar15 = pbVar15 + -1" identifier = (binary_expression "pbVar15 + -1" identifier + number_literal)) ;) (expression_statement "iVar29 = iVar7 + 1;" (assignment_expression "iVar29 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (expression_statement "display = (int)pbVar30;" (assignment_expression "display = (int)pbVar30" identifier = (cast_expression "(int)pbVar30" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (iVar7 + 1 == iVar8) goto LAB_00030440;" if (parenthesized_expression "(iVar7 + 1 == iVar8)" ( (binary_expression "iVar7 + 1 == iVar8" (binary_expression "iVar7 + 1" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_00030440;" goto statement_identifier ;)) })) (expression_statement "display = display + iVar21;" (assignment_expression "display = display + iVar21" identifier = (binary_expression "display + iVar21" identifier + identifier)) ;) (expression_statement "iVar29 = iVar7 + 1;" (assignment_expression "iVar29 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 + 1 != iVar8)" ( (binary_expression "iVar7 + 1 != iVar8" (binary_expression "iVar7 + 1" identifier + number_literal) != identifier) )) ;) (labeled_statement "LAB_00030440:\n          ppVar17 = (png_const_structrp)(iVar7 + 1);" statement_identifier : (expression_statement "ppVar17 = (png_const_structrp)(iVar7 + 1);" (assignment_expression "ppVar17 = (png_const_structrp)(iVar7 + 1)" identifier = (call_expression "(png_const_structrp)(iVar7 + 1)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "(iVar7 + 1)" ( (binary_expression "iVar7 + 1" identifier + number_literal) )))) ;)) (expression_statement "pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;" (assignment_expression "pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc" identifier = (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) ;) })) (if_statement "if (pbVar20 == pbVar24) {\n          pbVar5 = pbVar5 + -1;\n          pbVar24 = pbVar30;\n        }\n        else {\n          pbVar24 = pbVar24 + iVar21;\n        }" if (parenthesized_expression "(pbVar20 == pbVar24)" ( (binary_expression "pbVar20 == pbVar24" identifier == identifier) )) (compound_statement "{\n          pbVar5 = pbVar5 + -1;\n          pbVar24 = pbVar30;\n        }" { (expression_statement "pbVar5 = pbVar5 + -1;" (assignment_expression "pbVar5 = pbVar5 + -1" identifier = (binary_expression "pbVar5 + -1" identifier + number_literal)) ;) (expression_statement "pbVar24 = pbVar30;" (assignment_expression "pbVar24 = pbVar30" identifier = identifier) ;) }) (else_clause "else {\n          pbVar24 = pbVar24 + iVar21;\n        }" else (compound_statement "{\n          pbVar24 = pbVar24 + iVar21;\n        }" { (expression_statement "pbVar24 = pbVar24 + iVar21;" (assignment_expression "pbVar24 = pbVar24 + iVar21" identifier = (binary_expression "pbVar24 + iVar21" identifier + identifier)) ;) }))) (expression_statement "pvVar32 = (void *)((int)pvVar32 + 1);" (assignment_expression "pvVar32 = (void *)((int)pvVar32 + 1)" identifier = (cast_expression "(void *)((int)pvVar32 + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar32 + 1)" ( (binary_expression "(int)pvVar32 + 1" (cast_expression "(int)pvVar32" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(pvVar32 < pvVar9)" ( (binary_expression "pvVar32 < pvVar9" identifier < identifier) )) ;) (expression_statement "uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];" (assignment_expression "uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" identifier = (cast_expression "(uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ])))) ;) (expression_statement "ppVar13 = (png_const_structrp)0x0;" (assignment_expression "ppVar13 = (png_const_structrp)0x0" identifier = (cast_expression "(png_const_structrp)0x0" ( (type_descriptor "png_const_structrp" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n      pbVar15 = (byte *)(uint)(bVar11 >> 3);\n      if (uVar4 == 1) {\n        pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8));\n        display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8);\n        uVar12 = (int)pvVar9 + 7;\n        puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3);\n        if ((uVar18 & 0x10000) == 0) {\n          uVar12 = ~uVar12;\n          puVar14 = (undefined1 *)~(uint)puVar14;\n          iVar21 = 1;\n          ppVar10 = (png_const_structrp)&DAT_00000007;\n          ppVar28 = (png_const_structrp)0x0;\n        }\n        else {\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }\n        ppVar22 = (png_const_structrp)(uVar12 & 7);\n        ppVar13 = (png_const_structrp)((uint)puVar14 & 7);\n        pvVar32 = (void *)0x0;\n        if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n        do {\n          bVar11 = *pbVar15;\n          if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }\n          if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }\n          pvVar32 = (void *)((int)pvVar32 + 1);\n        } while (pvVar32 < pvVar9);\n        uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      }\n      else {\n        ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);\n        ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);\n        ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));\n        if (pvVar9 != (void *)0x0) {\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }\n      }\n    }" else (compound_statement "{\n      pbVar15 = (byte *)(uint)(bVar11 >> 3);\n      if (uVar4 == 1) {\n        pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8));\n        display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8);\n        uVar12 = (int)pvVar9 + 7;\n        puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3);\n        if ((uVar18 & 0x10000) == 0) {\n          uVar12 = ~uVar12;\n          puVar14 = (undefined1 *)~(uint)puVar14;\n          iVar21 = 1;\n          ppVar10 = (png_const_structrp)&DAT_00000007;\n          ppVar28 = (png_const_structrp)0x0;\n        }\n        else {\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }\n        ppVar22 = (png_const_structrp)(uVar12 & 7);\n        ppVar13 = (png_const_structrp)((uint)puVar14 & 7);\n        pvVar32 = (void *)0x0;\n        if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n        do {\n          bVar11 = *pbVar15;\n          if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }\n          if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }\n          pvVar32 = (void *)((int)pvVar32 + 1);\n        } while (pvVar32 < pvVar9);\n        uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      }\n      else {\n        ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);\n        ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);\n        ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));\n        if (pvVar9 != (void *)0x0) {\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }\n      }\n    }" { (expression_statement "pbVar15 = (byte *)(uint)(bVar11 >> 3);" (assignment_expression "pbVar15 = (byte *)(uint)(bVar11 >> 3)" identifier = (cast_expression "(byte *)(uint)(bVar11 >> 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(bVar11 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar11 >> 3)" ( (binary_expression "bVar11 >> 3" identifier >> number_literal) ))))) ;) (if_statement "if (uVar4 == 1) {\n        pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8));\n        display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8);\n        uVar12 = (int)pvVar9 + 7;\n        puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3);\n        if ((uVar18 & 0x10000) == 0) {\n          uVar12 = ~uVar12;\n          puVar14 = (undefined1 *)~(uint)puVar14;\n          iVar21 = 1;\n          ppVar10 = (png_const_structrp)&DAT_00000007;\n          ppVar28 = (png_const_structrp)0x0;\n        }\n        else {\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }\n        ppVar22 = (png_const_structrp)(uVar12 & 7);\n        ppVar13 = (png_const_structrp)((uint)puVar14 & 7);\n        pvVar32 = (void *)0x0;\n        if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n        do {\n          bVar11 = *pbVar15;\n          if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }\n          if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }\n          pvVar32 = (void *)((int)pvVar32 + 1);\n        } while (pvVar32 < pvVar9);\n        uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      }\n      else {\n        ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);\n        ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);\n        ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));\n        if (pvVar9 != (void *)0x0) {\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }\n      }" if (parenthesized_expression "(uVar4 == 1)" ( (binary_expression "uVar4 == 1" identifier == number_literal) )) (compound_statement "{\n        pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8));\n        display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8);\n        uVar12 = (int)pvVar9 + 7;\n        puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3);\n        if ((uVar18 & 0x10000) == 0) {\n          uVar12 = ~uVar12;\n          puVar14 = (undefined1 *)~(uint)puVar14;\n          iVar21 = 1;\n          ppVar10 = (png_const_structrp)&DAT_00000007;\n          ppVar28 = (png_const_structrp)0x0;\n        }\n        else {\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }\n        ppVar22 = (png_const_structrp)(uVar12 & 7);\n        ppVar13 = (png_const_structrp)((uint)puVar14 & 7);\n        pvVar32 = (void *)0x0;\n        if (pvVar9 == (void *)0x0) goto LAB_000302a4;\n        do {\n          bVar11 = *pbVar15;\n          if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }\n          if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }\n          pvVar32 = (void *)((int)pvVar32 + 1);\n        } while (pvVar32 < pvVar9);\n        uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      }" { (expression_statement "pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8));" (assignment_expression "pbVar15 = (byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8))" identifier = (cast_expression "(byte *)((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8))" ( (binary_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + ((uVar12 >> 3) - 8)" (cast_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" ( (type_descriptor "int" primitive_type) ) (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar17->jmp_buf_local[0]" (field_expression "ppVar17->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) + (parenthesized_expression "((uVar12 >> 3) - 8)" ( (binary_expression "(uVar12 >> 3) - 8" (parenthesized_expression "(uVar12 >> 3)" ( (binary_expression "uVar12 >> 3" identifier >> number_literal) )) - number_literal) ))) )))) ;) (expression_statement "display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8);" (assignment_expression "display = (int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8)" identifier = (binary_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (((uint)puVar14 >> 3) - 8)" (cast_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" ( (type_descriptor "int" primitive_type) ) (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar17->jmp_buf_local[0]" (field_expression "ppVar17->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) + (parenthesized_expression "(((uint)puVar14 >> 3) - 8)" ( (binary_expression "((uint)puVar14 >> 3) - 8" (parenthesized_expression "((uint)puVar14 >> 3)" ( (binary_expression "(uint)puVar14 >> 3" (cast_expression "(uint)puVar14" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) )) - number_literal) )))) ;) (expression_statement "uVar12 = (int)pvVar9 + 7;" (assignment_expression "uVar12 = (int)pvVar9 + 7" identifier = (binary_expression "(int)pvVar9 + 7" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3);" (assignment_expression "puVar14 = (undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3)" identifier = (cast_expression "(undefined1 *)((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3)" ( (binary_expression "(int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp + 3" (cast_expression "(int)&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp" & (field_expression "ppVar6->jmp_buf_local[0].__jmpbuf[0].__sp" (subscript_expression "ppVar6->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar6->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar6->jmp_buf_local[0]" (field_expression "ppVar6->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier))) + number_literal) )))) ;) (if_statement "if ((uVar18 & 0x10000) == 0) {\n          uVar12 = ~uVar12;\n          puVar14 = (undefined1 *)~(uint)puVar14;\n          iVar21 = 1;\n          ppVar10 = (png_const_structrp)&DAT_00000007;\n          ppVar28 = (png_const_structrp)0x0;\n        }\n        else {\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }" if (parenthesized_expression "((uVar18 & 0x10000) == 0)" ( (binary_expression "(uVar18 & 0x10000) == 0" (parenthesized_expression "(uVar18 & 0x10000)" ( (binary_expression "uVar18 & 0x10000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar12 = ~uVar12;\n          puVar14 = (undefined1 *)~(uint)puVar14;\n          iVar21 = 1;\n          ppVar10 = (png_const_structrp)&DAT_00000007;\n          ppVar28 = (png_const_structrp)0x0;\n        }" { (expression_statement "uVar12 = ~uVar12;" (assignment_expression "uVar12 = ~uVar12" identifier = (unary_expression "~uVar12" ~ identifier)) ;) (expression_statement "puVar14 = (undefined1 *)~(uint)puVar14;" (assignment_expression "puVar14 = (undefined1 *)~(uint)puVar14" identifier = (cast_expression "(undefined1 *)~(uint)puVar14" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "~(uint)puVar14" ~ (cast_expression "(uint)puVar14" ( (type_descriptor "uint" type_identifier) ) identifier)))) ;) (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" identifier = number_literal) ;) (expression_statement "ppVar10 = (png_const_structrp)&DAT_00000007;" (assignment_expression "ppVar10 = (png_const_structrp)&DAT_00000007" identifier = (binary_expression "(png_const_structrp)&DAT_00000007" (parenthesized_expression "(png_const_structrp)" ( identifier )) & identifier)) ;) (expression_statement "ppVar28 = (png_const_structrp)0x0;" (assignment_expression "ppVar28 = (png_const_structrp)0x0" identifier = (cast_expression "(png_const_structrp)0x0" ( (type_descriptor "png_const_structrp" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }" else (compound_statement "{\n          iVar21 = -1;\n          ppVar10 = (png_const_structrp)0x0;\n          ppVar28 = (png_const_structrp)&DAT_00000007;\n        }" { (expression_statement "iVar21 = -1;" (assignment_expression "iVar21 = -1" identifier = number_literal) ;) (expression_statement "ppVar10 = (png_const_structrp)0x0;" (assignment_expression "ppVar10 = (png_const_structrp)0x0" identifier = (cast_expression "(png_const_structrp)0x0" ( (type_descriptor "png_const_structrp" type_identifier) ) number_literal)) ;) (expression_statement "ppVar28 = (png_const_structrp)&DAT_00000007;" (assignment_expression "ppVar28 = (png_const_structrp)&DAT_00000007" identifier = (binary_expression "(png_const_structrp)&DAT_00000007" (parenthesized_expression "(png_const_structrp)" ( identifier )) & identifier)) ;) }))) (expression_statement "ppVar22 = (png_const_structrp)(uVar12 & 7);" (assignment_expression "ppVar22 = (png_const_structrp)(uVar12 & 7)" identifier = (call_expression "(png_const_structrp)(uVar12 & 7)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "(uVar12 & 7)" ( (binary_expression "uVar12 & 7" identifier & number_literal) )))) ;) (expression_statement "ppVar13 = (png_const_structrp)((uint)puVar14 & 7);" (assignment_expression "ppVar13 = (png_const_structrp)((uint)puVar14 & 7)" identifier = (call_expression "(png_const_structrp)((uint)puVar14 & 7)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "((uint)puVar14 & 7)" ( (binary_expression "(uint)puVar14 & 7" (cast_expression "(uint)puVar14" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "pvVar32 = (void *)0x0;" (assignment_expression "pvVar32 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (pvVar9 == (void *)0x0) goto LAB_000302a4;" if (parenthesized_expression "(pvVar9 == (void *)0x0)" ( (binary_expression "pvVar9 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000302a4;" goto statement_identifier ;)) (do_statement "do {\n          bVar11 = *pbVar15;\n          if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }\n          if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }\n          pvVar32 = (void *)((int)pvVar32 + 1);\n        } while (pvVar32 < pvVar9);" do (compound_statement "{\n          bVar11 = *pbVar15;\n          if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }\n          if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }\n          pvVar32 = (void *)((int)pvVar32 + 1);\n        }" { (expression_statement "bVar11 = *pbVar15;" (assignment_expression "bVar11 = *pbVar15" identifier = (pointer_expression "*pbVar15" * identifier)) ;) (if_statement "if (0 < iVar8) {\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\n            iVar29 = 0;\n            do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);\nLAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);\n            pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;\n          }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (do_statement "do {\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            } while (iVar7 + 1 != iVar8);" do (compound_statement "{\n              while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }\n              ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n              iVar29 = iVar7 + 1;\n            }" { (while_statement "while( true ) {\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                iVar7 = iVar29;\n                uVar18 = (uint)*(byte *)display;\n                *(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;\n                if (ppVar10 != ppVar13) break;\n                display = display + -1;\n                ppVar13 = ppVar28;\n                iVar29 = iVar7 + 1;\n                if (iVar7 + 1 == iVar8) goto LAB_00030364;\n              }" { (expression_statement "iVar7 = iVar29;" (assignment_expression "iVar7 = iVar29" identifier = identifier) ;) (expression_statement "uVar18 = (uint)*(byte *)display;" (assignment_expression "uVar18 = (uint)*(byte *)display" identifier = (binary_expression "(uint)*(byte *)display" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)display" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display;" (assignment_expression "*(byte *)display =\n                     (byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display" (pointer_expression "*(byte *)display" * (cast_expression "(byte *)display" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)) |\n                     (byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display" (call_expression "(byte)(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f))" ( (binary_expression "((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U) <<\n                           ((uint)ppVar13 & 0x1f)" (parenthesized_expression "((int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U)" ( (binary_expression "(int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f) & 1U" (binary_expression "(int)(uint)bVar11 >> ((uint)ppVar22 & 0x1f)" (cast_expression "(int)(uint)bVar11" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) >> (parenthesized_expression "((uint)ppVar22 & 0x1f)" ( (binary_expression "(uint)ppVar22 & 0x1f" (cast_expression "(uint)ppVar22" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) << (parenthesized_expression "((uint)ppVar13 & 0x1f)" ( (binary_expression "(uint)ppVar13 & 0x1f" (cast_expression "(uint)ppVar13" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) ))) | (binary_expression "(byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f)) & *(byte *)display" (call_expression "(byte)(0x7f7f >> (7U - (int)ppVar13 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0x7f7f >> (7U - (int)ppVar13 & 0x1f))" ( (binary_expression "0x7f7f >> (7U - (int)ppVar13 & 0x1f)" number_literal >> (parenthesized_expression "(7U - (int)ppVar13 & 0x1f)" ( (binary_expression "7U - (int)ppVar13 & 0x1f" (binary_expression "7U - (int)ppVar13" number_literal - (cast_expression "(int)ppVar13" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) ))) ))) & (pointer_expression "*(byte *)display" * (cast_expression "(byte *)display" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))))) ;) (if_statement "if (ppVar10 != ppVar13) break;" if (parenthesized_expression "(ppVar10 != ppVar13)" ( (binary_expression "ppVar10 != ppVar13" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "display = display + -1;" (assignment_expression "display = display + -1" identifier = (binary_expression "display + -1" identifier + number_literal)) ;) (expression_statement "ppVar13 = ppVar28;" (assignment_expression "ppVar13 = ppVar28" identifier = identifier) ;) (expression_statement "iVar29 = iVar7 + 1;" (assignment_expression "iVar29 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (if_statement "if (iVar7 + 1 == iVar8) goto LAB_00030364;" if (parenthesized_expression "(iVar7 + 1 == iVar8)" ( (binary_expression "iVar7 + 1 == iVar8" (binary_expression "iVar7 + 1" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_00030364;" goto statement_identifier ;)) })) (expression_statement "ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);" (assignment_expression "ppVar13 = (png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8)" identifier = (call_expression "(png_const_structrp)\n                        ((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "((int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8)" ( (binary_expression "(int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8" (binary_expression "(int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21" (cast_expression "(int)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs" ( (type_descriptor "int" primitive_type) ) (field_expression "ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar13->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar13->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar13->jmp_buf_local[0]" (field_expression "ppVar13->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) + identifier) + number_literal) )))) ;) (expression_statement "iVar29 = iVar7 + 1;" (assignment_expression "iVar29 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar7 + 1 != iVar8)" ( (binary_expression "iVar7 + 1 != iVar8" (binary_expression "iVar7 + 1" identifier + number_literal) != identifier) )) ;) (labeled_statement "LAB_00030364:\n            ppVar17 = (png_const_structrp)(iVar7 + 1);" statement_identifier : (expression_statement "ppVar17 = (png_const_structrp)(iVar7 + 1);" (assignment_expression "ppVar17 = (png_const_structrp)(iVar7 + 1)" identifier = (call_expression "(png_const_structrp)(iVar7 + 1)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "(iVar7 + 1)" ( (binary_expression "iVar7 + 1" identifier + number_literal) )))) ;)) (expression_statement "pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc;" (assignment_expression "pvVar9 = png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc" identifier = (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) ;) })) (if_statement "if (ppVar10 == ppVar22) {\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }\n          else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }" if (parenthesized_expression "(ppVar10 == ppVar22)" ( (binary_expression "ppVar10 == ppVar22" identifier == identifier) )) (compound_statement "{\n            pbVar15 = pbVar15 + -1;\n            ppVar22 = ppVar28;\n          }" { (expression_statement "pbVar15 = pbVar15 + -1;" (assignment_expression "pbVar15 = pbVar15 + -1" identifier = (binary_expression "pbVar15 + -1" identifier + number_literal)) ;) (expression_statement "ppVar22 = ppVar28;" (assignment_expression "ppVar22 = ppVar28" identifier = identifier) ;) }) (else_clause "else {\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }" else (compound_statement "{\n            ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);\n          }" { (expression_statement "ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8);" (assignment_expression "ppVar22 = (png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8)" identifier = (call_expression "(png_const_structrp)\n                      ((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "((int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8)" ( (binary_expression "(int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21 + -8" (binary_expression "(int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs + iVar21" (cast_expression "(int)ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs" ( (type_descriptor "int" primitive_type) ) (field_expression "ppVar22->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar22->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar22->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar22->jmp_buf_local[0]" (field_expression "ppVar22->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) + identifier) + number_literal) )))) ;) }))) (expression_statement "pvVar32 = (void *)((int)pvVar32 + 1);" (assignment_expression "pvVar32 = (void *)((int)pvVar32 + 1)" identifier = (cast_expression "(void *)((int)pvVar32 + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar32 + 1)" ( (binary_expression "(int)pvVar32 + 1" (cast_expression "(int)pvVar32" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(pvVar32 < pvVar9)" ( (binary_expression "pvVar32 < pvVar9" identifier < identifier) )) ;) (expression_statement "uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];" (assignment_expression "uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" identifier = (cast_expression "(uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ])))) ;) }) (else_clause "else {\n        ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);\n        ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);\n        ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));\n        if (pvVar9 != (void *)0x0) {\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }\n      }" else (compound_statement "{\n        ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);\n        ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);\n        ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));\n        if (pvVar9 != (void *)0x0) {\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }\n      }" { (expression_statement "ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14);" (assignment_expression "ppVar13 = (png_const_structrp)((int)pbVar15 * (int)puVar14)" identifier = (call_expression "(png_const_structrp)((int)pbVar15 * (int)puVar14)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "((int)pbVar15 * (int)puVar14)" ( (binary_expression "(int)pbVar15 * (int)puVar14" (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier) * (cast_expression "(int)puVar14" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8);" (assignment_expression "ppVar28 = (png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8)" identifier = (call_expression "(png_const_structrp)\n                  ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8)" ( (binary_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12 + -8" (binary_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs + (int)pbVar15 * uVar12" (cast_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" ( (type_descriptor "int" primitive_type) ) (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar17->jmp_buf_local[0]" (field_expression "ppVar17->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) + (binary_expression "(int)pbVar15 * uVar12" (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier) * identifier)) + number_literal) )))) ;) (expression_statement "ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4));" (assignment_expression "ppStack_74 = (png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4))" identifier = (call_expression "(png_const_structrp)\n                     ((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4))" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "((int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4))" ( (binary_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs +\n                     (int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4)" (cast_expression "(int)ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" ( (type_descriptor "int" primitive_type) ) (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar17->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar17->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar17->jmp_buf_local[0]" (field_expression "ppVar17->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) + (cast_expression "(int)(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4)" ( (binary_expression "ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs + -4" (field_expression "ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar13->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar13->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar13->jmp_buf_local[0]" (field_expression "ppVar13->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) + number_literal) )))) )))) ;) (if_statement "if (pvVar9 != (void *)0x0) {\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }" if (parenthesized_expression "(pvVar9 != (void *)0x0)" ( (binary_expression "pvVar9 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          iVar21 = -(int)pbVar15;\n          pvVar9 = (void *)0x0;\n          do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);\n          uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n        }" { (expression_statement "iVar21 = -(int)pbVar15;" (assignment_expression "iVar21 = -(int)pbVar15" identifier = (unary_expression "-(int)pbVar15" - (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pvVar9 = (void *)0x0;" (assignment_expression "pvVar9 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          } while (pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc);" do (compound_statement "{\n            uVar18 = 8;\n            ppVar13 = (png_const_structrp)&stack0xffffff9c;\n            ppVar17 = ppVar28;\n            display = (int)pbVar15;\n            (**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;\n            if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }\n            pvVar9 = (void *)((int)pvVar9 + 1);\n            ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);\n          }" { (expression_statement "uVar18 = 8;" (assignment_expression "uVar18 = 8" identifier = number_literal) ;) (expression_statement "ppVar13 = (png_const_structrp)&stack0xffffff9c;" (assignment_expression "ppVar13 = (png_const_structrp)&stack0xffffff9c" identifier = (binary_expression "(png_const_structrp)&stack0xffffff9c" (parenthesized_expression "(png_const_structrp)" ( identifier )) & identifier)) ;) (expression_statement "ppVar17 = ppVar28;" (assignment_expression "ppVar17 = ppVar28" identifier = identifier) ;) (expression_statement "display = (int)pbVar15;" (assignment_expression "display = (int)pbVar15" identifier = (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)\n            ;" (call_expression "(**(code **)(puVar31 + 0x232f4))((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)" (parenthesized_expression "(**(code **)(puVar31 + 0x232f4))" ( (pointer_expression "**(code **)(puVar31 + 0x232f4)" * (pointer_expression "*(code **)(puVar31 + 0x232f4)" * (cast_expression "(code **)(puVar31 + 0x232f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + 0x232f4)" ( (binary_expression "puVar31 + 0x232f4" identifier + number_literal) ))))) )) (argument_list "((png_const_structrp)&stack0xffffff9c,ppVar28,pbVar15,8)" ( (binary_expression "(png_const_structrp)&stack0xffffff9c" (parenthesized_expression "(png_const_structrp)" ( identifier )) & identifier) , identifier , identifier , number_literal ))) ;) (if_statement "if (0 < iVar8) {\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }" if (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) )) (compound_statement "{\n              iVar29 = 0;\n              ppVar10 = ppStack_74;\n              do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);\n              ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);\n            }" { (expression_statement "iVar29 = 0;" (assignment_expression "iVar29 = 0" identifier = number_literal) ;) (expression_statement "ppVar10 = ppStack_74;" (assignment_expression "ppVar10 = ppStack_74" identifier = identifier) ;) (do_statement "do {\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              } while (iVar29 != iVar8);" do (compound_statement "{\n                iVar29 = iVar29 + 1;\n                ppVar13 = ppVar10;\n                ppVar17 = (png_const_structrp)&stack0xffffff9c;\n                display = (int)pbVar15;\n                iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);\n                ppVar10 = (png_const_structrp)(iVar7 + iVar21);\n              }" { (expression_statement "iVar29 = iVar29 + 1;" (assignment_expression "iVar29 = iVar29 + 1" identifier = (binary_expression "iVar29 + 1" identifier + number_literal)) ;) (expression_statement "ppVar13 = ppVar10;" (assignment_expression "ppVar13 = ppVar10" identifier = identifier) ;) (expression_statement "ppVar17 = (png_const_structrp)&stack0xffffff9c;" (assignment_expression "ppVar17 = (png_const_structrp)&stack0xffffff9c" identifier = (binary_expression "(png_const_structrp)&stack0xffffff9c" (parenthesized_expression "(png_const_structrp)" ( identifier )) & identifier)) ;) (expression_statement "display = (int)pbVar15;" (assignment_expression "display = (int)pbVar15" identifier = (cast_expression "(int)pbVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15);" (assignment_expression "iVar7 = (**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15)" identifier = (call_expression "(**(code **)(puVar31 + 0x233b8))\n                                  (ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15)" (parenthesized_expression "(**(code **)(puVar31 + 0x233b8))" ( (pointer_expression "**(code **)(puVar31 + 0x233b8)" * (pointer_expression "*(code **)(puVar31 + 0x233b8)" * (cast_expression "(code **)(puVar31 + 0x233b8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + 0x233b8)" ( (binary_expression "puVar31 + 0x233b8" identifier + number_literal) ))))) )) (argument_list "(ppVar10,(png_const_structrp)&stack0xffffff9c,pbVar15)" ( identifier , (binary_expression "(png_const_structrp)&stack0xffffff9c" (parenthesized_expression "(png_const_structrp)" ( identifier )) & identifier) , identifier )))) ;) (expression_statement "ppVar10 = (png_const_structrp)(iVar7 + iVar21);" (assignment_expression "ppVar10 = (png_const_structrp)(iVar7 + iVar21)" identifier = (call_expression "(png_const_structrp)(iVar7 + iVar21)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "(iVar7 + iVar21)" ( (binary_expression "iVar7 + iVar21" identifier + identifier) )))) ;) }) while (parenthesized_expression "(iVar29 != iVar8)" ( (binary_expression "iVar29 != iVar8" identifier != identifier) )) ;) (expression_statement "ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8);" (assignment_expression "ppStack_74 = (png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8)" identifier = (call_expression "(png_const_structrp)\n                           ((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "((int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8)" ( (binary_expression "(int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21 + -8" (binary_expression "(int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs +\n                           iVar8 * iVar21" (cast_expression "(int)ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs" ( (type_descriptor "int" primitive_type) ) (field_expression "ppStack_74->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppStack_74->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppStack_74->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppStack_74->jmp_buf_local[0]" (field_expression "ppStack_74->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) + (binary_expression "iVar8 * iVar21" identifier * identifier)) + number_literal) )))) ;) })) (expression_statement "pvVar9 = (void *)((int)pvVar9 + 1);" (assignment_expression "pvVar9 = (void *)((int)pvVar9 + 1)" identifier = (cast_expression "(void *)((int)pvVar9 + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 + 1)" ( (binary_expression "(int)pvVar9 + 1" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21);" (assignment_expression "ppVar28 = (png_const_structrp)((int)ppVar28 + iVar21)" identifier = (call_expression "(png_const_structrp)((int)ppVar28 + iVar21)" (parenthesized_expression "(png_const_structrp)" ( identifier )) (argument_list "((int)ppVar28 + iVar21)" ( (binary_expression "(int)ppVar28 + iVar21" (cast_expression "(int)ppVar28" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc)" ( (binary_expression "pvVar9 < png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc" identifier < (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) )) ;) (expression_statement "uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0];" (assignment_expression "uVar4 = (uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" identifier = (cast_expression "(uint)(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ])))) ;) })) }))) }))) (labeled_statement "LAB_0003024c:\n    png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;" statement_identifier : (expression_statement "png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6;" (assignment_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc = ppVar6" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__pc" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) = identifier) ;)) (if_statement "if (7 < uVar4) {\n      png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)((uVar4 >> 3) * (int)ppVar6);\n      goto LAB_00030268;\n    }" if (parenthesized_expression "(7 < uVar4)" ( (binary_expression "7 < uVar4" number_literal < identifier) )) (compound_statement "{\n      png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)((uVar4 >> 3) * (int)ppVar6);\n      goto LAB_00030268;\n    }" { (expression_statement "png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)((uVar4 >> 3) * (int)ppVar6);" (assignment_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)((uVar4 >> 3) * (int)ppVar6)" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(void *)((uVar4 >> 3) * (int)ppVar6)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar4 >> 3) * (int)ppVar6)" ( (binary_expression "(uVar4 >> 3) * (int)ppVar6" (parenthesized_expression "(uVar4 >> 3)" ( (binary_expression "uVar4 >> 3" identifier >> number_literal) )) * (cast_expression "(int)ppVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (goto_statement "goto LAB_00030268;" goto statement_identifier ;) })) }))) (expression_statement "png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)(uVar4 * (int)ppVar6 + 7 >> 3);" (assignment_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp = (void *)(uVar4 * (int)ppVar6 + 7 >> 3)" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0].__sp" (subscript_expression "png_ptr->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr->jmp_buf_local[0]" (field_expression "png_ptr->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(void *)(uVar4 * (int)ppVar6 + 7 >> 3)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 * (int)ppVar6 + 7 >> 3)" ( (binary_expression "uVar4 * (int)ppVar6 + 7 >> 3" (binary_expression "uVar4 * (int)ppVar6 + 7" (binary_expression "uVar4 * (int)ppVar6" identifier * (cast_expression "(int)ppVar6" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) >> number_literal) )))) ;) (labeled_statement "LAB_00030268:\n  if (iStack_5c == *piVar25) {\n    return;\n  }" statement_identifier : (if_statement "if (iStack_5c == *piVar25) {\n    return;\n  }" if (parenthesized_expression "(iStack_5c == *piVar25)" ( (binary_expression "iStack_5c == *piVar25" identifier == (pointer_expression "*piVar25" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "pcVar33 = *(code **)(puVar31 + 0x23378);" (assignment_expression "pcVar33 = *(code **)(puVar31 + 0x23378)" identifier = (pointer_expression "*(code **)(puVar31 + 0x23378)" * (cast_expression "(code **)(puVar31 + 0x23378)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + 0x23378)" ( (binary_expression "puVar31 + 0x23378" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar33)();" (call_expression "(*pcVar33)()" (parenthesized_expression "(*pcVar33)" ( (pointer_expression "*pcVar33" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (puVar31 + 0x2aee3 < &DAT_00000004) {\n    if (ppVar13->read_filter[0] == (_func_void_png_row_infop_png_bytep_png_const_bytep *)0x0) {\n      bVar11 = ppVar13->pixel_depth;\n      ppVar13->read_filter[0] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x58a0);\n      ppVar13->read_filter[1] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5858);\n      ppVar13->read_filter[2] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5828);\n      if ((int)(bVar11 + 7) >> 3 == 1) {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x579c);\n      }\n      else {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x5704);\n      }\n    }\n                    /* WARNING: Could not recover jumptable at 0x00030614. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs[(int)(puVar31 + 0x2afc5 + -2)])\n              (ppVar17,display,uVar18);\n    return;\n  }" if (parenthesized_expression "(puVar31 + 0x2aee3 < &DAT_00000004)" ( (binary_expression "puVar31 + 0x2aee3 < &DAT_00000004" (binary_expression "puVar31 + 0x2aee3" identifier + number_literal) < (pointer_expression "&DAT_00000004" & identifier)) )) (compound_statement "{\n    if (ppVar13->read_filter[0] == (_func_void_png_row_infop_png_bytep_png_const_bytep *)0x0) {\n      bVar11 = ppVar13->pixel_depth;\n      ppVar13->read_filter[0] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x58a0);\n      ppVar13->read_filter[1] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5858);\n      ppVar13->read_filter[2] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5828);\n      if ((int)(bVar11 + 7) >> 3 == 1) {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x579c);\n      }\n      else {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x5704);\n      }\n    }\n                    /* WARNING: Could not recover jumptable at 0x00030614. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    (*(code *)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs[(int)(puVar31 + 0x2afc5 + -2)])\n              (ppVar17,display,uVar18);\n    return;\n  }" { (if_statement "if (ppVar13->read_filter[0] == (_func_void_png_row_infop_png_bytep_png_const_bytep *)0x0) {\n      bVar11 = ppVar13->pixel_depth;\n      ppVar13->read_filter[0] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x58a0);\n      ppVar13->read_filter[1] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5858);\n      ppVar13->read_filter[2] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5828);\n      if ((int)(bVar11 + 7) >> 3 == 1) {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x579c);\n      }\n      else {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x5704);\n      }\n    }" if (parenthesized_expression "(ppVar13->read_filter[0] == (_func_void_png_row_infop_png_bytep_png_const_bytep *)0x0)" ( (binary_expression "ppVar13->read_filter[0] == (_func_void_png_row_infop_png_bytep_png_const_bytep *)0x0" (subscript_expression "ppVar13->read_filter[0]" (field_expression "ppVar13->read_filter" identifier -> field_identifier) [ number_literal ]) == (cast_expression "(_func_void_png_row_infop_png_bytep_png_const_bytep *)0x0" ( (type_descriptor "_func_void_png_row_infop_png_bytep_png_const_bytep *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      bVar11 = ppVar13->pixel_depth;\n      ppVar13->read_filter[0] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x58a0);\n      ppVar13->read_filter[1] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5858);\n      ppVar13->read_filter[2] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5828);\n      if ((int)(bVar11 + 7) >> 3 == 1) {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x579c);\n      }\n      else {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x5704);\n      }\n    }" { (expression_statement "bVar11 = ppVar13->pixel_depth;" (assignment_expression "bVar11 = ppVar13->pixel_depth" identifier = (field_expression "ppVar13->pixel_depth" identifier -> field_identifier)) ;) (expression_statement "ppVar13->read_filter[0] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x58a0);" (assignment_expression "ppVar13->read_filter[0] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x58a0)" (subscript_expression "ppVar13->read_filter[0]" (field_expression "ppVar13->read_filter" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x58a0)" ( (type_descriptor "_func_void_png_row_infop_png_bytep_png_const_bytep *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar33 + 0x22c14) + -0x58a0)" ( (binary_expression "*(int *)(pcVar33 + 0x22c14) + -0x58a0" (pointer_expression "*(int *)(pcVar33 + 0x22c14)" * (cast_expression "(int *)(pcVar33 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar33 + 0x22c14)" ( (binary_expression "pcVar33 + 0x22c14" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "ppVar13->read_filter[1] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5858);" (assignment_expression "ppVar13->read_filter[1] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5858)" (subscript_expression "ppVar13->read_filter[1]" (field_expression "ppVar13->read_filter" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5858)" ( (type_descriptor "_func_void_png_row_infop_png_bytep_png_const_bytep *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar33 + 0x22c14) + -0x5858)" ( (binary_expression "*(int *)(pcVar33 + 0x22c14) + -0x5858" (pointer_expression "*(int *)(pcVar33 + 0x22c14)" * (cast_expression "(int *)(pcVar33 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar33 + 0x22c14)" ( (binary_expression "pcVar33 + 0x22c14" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "ppVar13->read_filter[2] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5828);" (assignment_expression "ppVar13->read_filter[2] =\n           (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5828)" (subscript_expression "ppVar13->read_filter[2]" (field_expression "ppVar13->read_filter" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(_func_void_png_row_infop_png_bytep_png_const_bytep *)\n           (*(int *)(pcVar33 + 0x22c14) + -0x5828)" ( (type_descriptor "_func_void_png_row_infop_png_bytep_png_const_bytep *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar33 + 0x22c14) + -0x5828)" ( (binary_expression "*(int *)(pcVar33 + 0x22c14) + -0x5828" (pointer_expression "*(int *)(pcVar33 + 0x22c14)" * (cast_expression "(int *)(pcVar33 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar33 + 0x22c14)" ( (binary_expression "pcVar33 + 0x22c14" identifier + number_literal) )))) + number_literal) )))) ;) (if_statement "if ((int)(bVar11 + 7) >> 3 == 1) {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x579c);\n      }\n      else {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x5704);\n      }" if (parenthesized_expression "((int)(bVar11 + 7) >> 3 == 1)" ( (binary_expression "(int)(bVar11 + 7) >> 3 == 1" (binary_expression "(int)(bVar11 + 7) >> 3" (cast_expression "(int)(bVar11 + 7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(bVar11 + 7)" ( (binary_expression "bVar11 + 7" identifier + number_literal) ))) >> number_literal) == number_literal) )) (compound_statement "{\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x579c);\n      }" { (expression_statement "ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x579c);" (assignment_expression "ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x579c)" (subscript_expression "ppVar13->read_filter[3]" (field_expression "ppVar13->read_filter" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x579c)" ( (type_descriptor "_func_void_png_row_infop_png_bytep_png_const_bytep *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar33 + 0x22c14) + -0x579c)" ( (binary_expression "*(int *)(pcVar33 + 0x22c14) + -0x579c" (pointer_expression "*(int *)(pcVar33 + 0x22c14)" * (cast_expression "(int *)(pcVar33 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar33 + 0x22c14)" ( (binary_expression "pcVar33 + 0x22c14" identifier + number_literal) )))) + number_literal) )))) ;) }) (else_clause "else {\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x5704);\n      }" else (compound_statement "{\n        ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x5704);\n      }" { (expression_statement "ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x5704);" (assignment_expression "ppVar13->read_filter[3] =\n             (_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x5704)" (subscript_expression "ppVar13->read_filter[3]" (field_expression "ppVar13->read_filter" identifier -> field_identifier) [ number_literal ]) = (cast_expression "(_func_void_png_row_infop_png_bytep_png_const_bytep *)\n             (*(int *)(pcVar33 + 0x22c14) + -0x5704)" ( (type_descriptor "_func_void_png_row_infop_png_bytep_png_const_bytep *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar33 + 0x22c14) + -0x5704)" ( (binary_expression "*(int *)(pcVar33 + 0x22c14) + -0x5704" (pointer_expression "*(int *)(pcVar33 + 0x22c14)" * (cast_expression "(int *)(pcVar33 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar33 + 0x22c14)" ( (binary_expression "pcVar33 + 0x22c14" identifier + number_literal) )))) + number_literal) )))) ;) }))) })) comment comment (expression_statement "(*(code *)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs[(int)(puVar31 + 0x2afc5 + -2)])\n              (ppVar17,display,uVar18);" (call_expression "(*(code *)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs[(int)(puVar31 + 0x2afc5 + -2)])\n              (ppVar17,display,uVar18)" (parenthesized_expression "(*(code *)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs[(int)(puVar31 + 0x2afc5 + -2)])" ( (pointer_expression "*(code *)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs[(int)(puVar31 + 0x2afc5 + -2)]" * (cast_expression "(code *)ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs[(int)(puVar31 + 0x2afc5 + -2)]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs[(int)(puVar31 + 0x2afc5 + -2)]" (field_expression "ppVar13->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar13->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar13->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar13->jmp_buf_local[0]" (field_expression "ppVar13->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ (cast_expression "(int)(puVar31 + 0x2afc5 + -2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar31 + 0x2afc5 + -2)" ( (binary_expression "puVar31 + 0x2afc5 + -2" (binary_expression "puVar31 + 0x2afc5" identifier + number_literal) + number_literal) ))) ]))) )) (argument_list "(ppVar17,display,uVar18)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0002fb24(uint *param_1,byte *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  byte bVar9;\n  uint extraout_v1;\n  uint *puVar8;\n  uint *puVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  uint uVar14;\n  uint uVar15;\n  uint in_t2;\n  byte *pbVar16;\n  uint in_t3;\n  int iVar17;\n  uint *puVar18;\n  byte *unaff_s0;\n  uint uVar19;\n  byte *pbVar20;\n  uint unaff_s1;\n  byte bVar22;\n  int *piVar21;\n  uint unaff_s2;\n  uint uVar23;\n  uint unaff_s3;\n  uint *puVar24;\n  int iVar25;\n  byte *pbVar26;\n  undefined *puVar27;\n  code *pcVar28;\n  undefined8 uVar29;\n  uint *puStack_74;\n  uint auStack_64 [2];\n  int iStack_5c;\n  byte *pbStack_58;\n  uint uStack_54;\n  uint uStack_50;\n  \n  uVar14 = param_1[0x6c];\n  bVar9 = *(byte *)((int)param_1 + 0x207);\n  uVar3 = (uint)bVar9;\n  if (uVar3 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }\n  pbVar11 = (byte *)(param_1[0x75] + 1);\n  if (param_1[0x78] == 0) {\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }\n  if (uVar3 < 8) {\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }\n  else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }\n  if (param_1[0x78] == uVar15) goto LAB_0002fb8c;\n  pbVar11 = PTR_s_nt_0005301c + 0xb58;\n  uVar29 = (*(code *)PTR_png_error_0005340c)(param_1);\n  uVar3 = (uint)((ulonglong)uVar29 >> 0x20);\n  param_1 = (uint *)uVar29;\nLAB_0002fd9c:\n  uVar15 = uVar3 >> 3;\n  if ((uVar3 & 7) == 0) {\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }\n  puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98);\n  puVar27 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)();\n  piVar21 = *(int **)(puVar27 + 0x233b0);\n  iStack_5c = *piVar21;\n  puVar10 = param_1;\n  pbStack_58 = unaff_s0;\n  uStack_54 = uVar15;\n  uStack_50 = unaff_s2;\n  if ((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)) goto LAB_00030268;\n  uVar3 = *param_1;\n  uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n  uVar23 = uVar3 - 1;\n  param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40);\n  iVar7 = *(int *)param_3;\n  puVar5 = (uint *)(uVar3 * iVar7);\n  pbVar11 = (byte *)((int)puVar5 + -1);\n  if (uVar15 == 2) {\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }\n  else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }\n  param_1[1] = uVar15 * (int)puVar5 + 7 >> 3;\nLAB_00030268:\n  if (iStack_5c == *piVar21) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar27 + 0x23378);\n  (*pcVar28)();\n  if (puVar27 + 0x2aee3 < &DAT_00000004) {\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    \n                    \n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }\n  return;\n}\n\n" (function_definition "void FUN_0002fb24(uint *param_1,byte *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  byte bVar9;\n  uint extraout_v1;\n  uint *puVar8;\n  uint *puVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  uint uVar14;\n  uint uVar15;\n  uint in_t2;\n  byte *pbVar16;\n  uint in_t3;\n  int iVar17;\n  uint *puVar18;\n  byte *unaff_s0;\n  uint uVar19;\n  byte *pbVar20;\n  uint unaff_s1;\n  byte bVar22;\n  int *piVar21;\n  uint unaff_s2;\n  uint uVar23;\n  uint unaff_s3;\n  uint *puVar24;\n  int iVar25;\n  byte *pbVar26;\n  undefined *puVar27;\n  code *pcVar28;\n  undefined8 uVar29;\n  uint *puStack_74;\n  uint auStack_64 [2];\n  int iStack_5c;\n  byte *pbStack_58;\n  uint uStack_54;\n  uint uStack_50;\n  \n  uVar14 = param_1[0x6c];\n  bVar9 = *(byte *)((int)param_1 + 0x207);\n  uVar3 = (uint)bVar9;\n  if (uVar3 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }\n  pbVar11 = (byte *)(param_1[0x75] + 1);\n  if (param_1[0x78] == 0) {\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }\n  if (uVar3 < 8) {\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }\n  else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }\n  if (param_1[0x78] == uVar15) goto LAB_0002fb8c;\n  pbVar11 = PTR_s_nt_0005301c + 0xb58;\n  uVar29 = (*(code *)PTR_png_error_0005340c)(param_1);\n  uVar3 = (uint)((ulonglong)uVar29 >> 0x20);\n  param_1 = (uint *)uVar29;\nLAB_0002fd9c:\n  uVar15 = uVar3 >> 3;\n  if ((uVar3 & 7) == 0) {\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }\n  puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98);\n  puVar27 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)();\n  piVar21 = *(int **)(puVar27 + 0x233b0);\n  iStack_5c = *piVar21;\n  puVar10 = param_1;\n  pbStack_58 = unaff_s0;\n  uStack_54 = uVar15;\n  uStack_50 = unaff_s2;\n  if ((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)) goto LAB_00030268;\n  uVar3 = *param_1;\n  uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n  uVar23 = uVar3 - 1;\n  param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40);\n  iVar7 = *(int *)param_3;\n  puVar5 = (uint *)(uVar3 * iVar7);\n  pbVar11 = (byte *)((int)puVar5 + -1);\n  if (uVar15 == 2) {\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }\n  else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }\n  param_1[1] = uVar15 * (int)puVar5 + 7 >> 3;\nLAB_00030268:\n  if (iStack_5c == *piVar21) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar27 + 0x23378);\n  (*pcVar28)();\n  if (puVar27 + 0x2aee3 < &DAT_00000004) {\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    \n                    \n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0002fb24(uint *param_1,byte *param_2,byte *param_3)" identifier (parameter_list "(uint *param_1,byte *param_2,byte *param_3)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  byte bVar9;\n  uint extraout_v1;\n  uint *puVar8;\n  uint *puVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  uint uVar14;\n  uint uVar15;\n  uint in_t2;\n  byte *pbVar16;\n  uint in_t3;\n  int iVar17;\n  uint *puVar18;\n  byte *unaff_s0;\n  uint uVar19;\n  byte *pbVar20;\n  uint unaff_s1;\n  byte bVar22;\n  int *piVar21;\n  uint unaff_s2;\n  uint uVar23;\n  uint unaff_s3;\n  uint *puVar24;\n  int iVar25;\n  byte *pbVar26;\n  undefined *puVar27;\n  code *pcVar28;\n  undefined8 uVar29;\n  uint *puStack_74;\n  uint auStack_64 [2];\n  int iStack_5c;\n  byte *pbStack_58;\n  uint uStack_54;\n  uint uStack_50;\n  \n  uVar14 = param_1[0x6c];\n  bVar9 = *(byte *)((int)param_1 + 0x207);\n  uVar3 = (uint)bVar9;\n  if (uVar3 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }\n  pbVar11 = (byte *)(param_1[0x75] + 1);\n  if (param_1[0x78] == 0) {\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }\n  if (uVar3 < 8) {\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }\n  else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }\n  if (param_1[0x78] == uVar15) goto LAB_0002fb8c;\n  pbVar11 = PTR_s_nt_0005301c + 0xb58;\n  uVar29 = (*(code *)PTR_png_error_0005340c)(param_1);\n  uVar3 = (uint)((ulonglong)uVar29 >> 0x20);\n  param_1 = (uint *)uVar29;\nLAB_0002fd9c:\n  uVar15 = uVar3 >> 3;\n  if ((uVar3 & 7) == 0) {\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }\n  puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98);\n  puVar27 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)();\n  piVar21 = *(int **)(puVar27 + 0x233b0);\n  iStack_5c = *piVar21;\n  puVar10 = param_1;\n  pbStack_58 = unaff_s0;\n  uStack_54 = uVar15;\n  uStack_50 = unaff_s2;\n  if ((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)) goto LAB_00030268;\n  uVar3 = *param_1;\n  uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n  uVar23 = uVar3 - 1;\n  param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40);\n  iVar7 = *(int *)param_3;\n  puVar5 = (uint *)(uVar3 * iVar7);\n  pbVar11 = (byte *)((int)puVar5 + -1);\n  if (uVar15 == 2) {\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }\n  else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }\n  param_1[1] = uVar15 * (int)puVar5 + 7 >> 3;\nLAB_00030268:\n  if (iStack_5c == *piVar21) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar27 + 0x23378);\n  (*pcVar28)();\n  if (puVar27 + 0x2aee3 < &DAT_00000004) {\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    \n                    \n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "uint *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "uint extraout_v1;" type_identifier identifier ;) (declaration "uint *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "uint *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "uint *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint in_t2;" type_identifier identifier ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "uint in_t3;" type_identifier identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "byte *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "byte *pbVar20;" type_identifier (pointer_declarator "*pbVar20" * identifier) ;) (declaration "uint unaff_s1;" type_identifier identifier ;) (declaration "byte bVar22;" type_identifier identifier ;) (declaration "int *piVar21;" primitive_type (pointer_declarator "*piVar21" * identifier) ;) (declaration "uint unaff_s2;" type_identifier identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "uint unaff_s3;" type_identifier identifier ;) (declaration "uint *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "byte *pbVar26;" type_identifier (pointer_declarator "*pbVar26" * identifier) ;) (declaration "undefined *puVar27;" type_identifier (pointer_declarator "*puVar27" * identifier) ;) (declaration "code *pcVar28;" type_identifier (pointer_declarator "*pcVar28" * identifier) ;) (declaration "undefined8 uVar29;" type_identifier identifier ;) (declaration "uint *puStack_74;" type_identifier (pointer_declarator "*puStack_74" * identifier) ;) (declaration "uint auStack_64 [2];" type_identifier (array_declarator "auStack_64 [2]" identifier [ number_literal ]) ;) (declaration "int iStack_5c;" primitive_type identifier ;) (declaration "byte *pbStack_58;" type_identifier (pointer_declarator "*pbStack_58" * identifier) ;) (declaration "uint uStack_54;" type_identifier identifier ;) (declaration "uint uStack_50;" type_identifier identifier ;) (expression_statement "uVar14 = param_1[0x6c];" (assignment_expression "uVar14 = param_1[0x6c]" identifier = (subscript_expression "param_1[0x6c]" identifier [ number_literal ])) ;) (expression_statement "bVar9 = *(byte *)((int)param_1 + 0x207);" (assignment_expression "bVar9 = *(byte *)((int)param_1 + 0x207)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x207)" * (cast_expression "(byte *)((int)param_1 + 0x207)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x207)" ( (binary_expression "(int)param_1 + 0x207" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar3 = (uint)bVar9;" (assignment_expression "uVar3 = (uint)bVar9" identifier = (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar3 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }" { (labeled_statement "LAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();" statement_identifier : (expression_statement "(*(code *)PTR_png_error_0005340c)();" (call_expression "(*(code *)PTR_png_error_0005340c)()" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;)) (expression_statement "uVar3 = extraout_v1;" (assignment_expression "uVar3 = extraout_v1" identifier = identifier) ;) (goto_statement "goto LAB_00030094;" goto statement_identifier ;) })) (expression_statement "pbVar11 = (byte *)(param_1[0x75] + 1);" (assignment_expression "pbVar11 = (byte *)(param_1[0x75] + 1)" identifier = (cast_expression "(byte *)(param_1[0x75] + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0x75] + 1)" ( (binary_expression "param_1[0x75] + 1" (subscript_expression "param_1[0x75]" identifier [ number_literal ]) + number_literal) )))) ;) (if_statement "if (param_1[0x78] == 0) {\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }" if (parenthesized_expression "(param_1[0x78] == 0)" ( (binary_expression "param_1[0x78] == 0" (subscript_expression "param_1[0x78]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }" { (labeled_statement "LAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;" statement_identifier : (expression_statement "uVar15 = uVar3 * uVar14;" (assignment_expression "uVar15 = uVar3 * uVar14" identifier = (binary_expression "uVar3 * uVar14" identifier * identifier)) ;)) (if_statement "if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (compound_statement "{\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }" { (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_s_nt_0005301c + 0xb7c)" ( identifier , (binary_expression "PTR_s_nt_0005301c + 0xb7c" identifier + number_literal) ))) ;) (goto_statement "goto LAB_00030084;" goto statement_identifier ;) })) (expression_statement "uVar23 = uVar15 & 7;" (assignment_expression "uVar23 = uVar15 & 7" identifier = (binary_expression "uVar15 & 7" identifier & number_literal)) ;) (expression_statement "bVar22 = 0;" (assignment_expression "bVar22 = 0" identifier = number_literal) ;) (if_statement "if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }" { (expression_statement "unaff_s0 = (byte *)0x0;" (assignment_expression "unaff_s0 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s2 = 0;" (assignment_expression "unaff_s2 = 0" identifier = number_literal) ;) (labeled_statement "LAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);" statement_identifier : (expression_statement "bVar1 = *(byte *)(param_1 + 0x7f);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x7f)" identifier = (pointer_expression "*(byte *)(param_1 + 0x7f)" * (cast_expression "(byte *)(param_1 + 0x7f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7f)" ( (binary_expression "param_1 + 0x7f" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }" else (compound_statement "{\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }" { (if_statement "if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }" if (parenthesized_expression "(uVar3 < 8)" ( (binary_expression "uVar3 < 8" identifier < number_literal) )) (compound_statement "{\n        uVar19 = uVar15 + 7 >> 3;\n      }" { (expression_statement "uVar19 = uVar15 + 7 >> 3;" (assignment_expression "uVar19 = uVar15 + 7 >> 3" identifier = (binary_expression "uVar15 + 7 >> 3" (binary_expression "uVar15 + 7" identifier + number_literal) >> number_literal)) ;) }) (else_clause "else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }" else (compound_statement "{\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }" { (expression_statement "uVar19 = (bVar9 >> 3) * uVar14;" (assignment_expression "uVar19 = (bVar9 >> 3) * uVar14" identifier = (binary_expression "(bVar9 >> 3) * uVar14" (parenthesized_expression "(bVar9 >> 3)" ( (binary_expression "bVar9 >> 3" identifier >> number_literal) )) * identifier)) ;) }))) (expression_statement "unaff_s0 = param_2 + (uVar19 - 1);" (assignment_expression "unaff_s0 = param_2 + (uVar19 - 1)" identifier = (binary_expression "param_2 + (uVar19 - 1)" identifier + (parenthesized_expression "(uVar19 - 1)" ( (binary_expression "uVar19 - 1" identifier - number_literal) )))) ;) (expression_statement "bVar22 = *unaff_s0;" (assignment_expression "bVar22 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;) (if_statement "if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }" if (parenthesized_expression "(-1 < (int)(param_1[0x4b] << 0xf))" ( (binary_expression "-1 < (int)(param_1[0x4b] << 0xf)" number_literal < (cast_expression "(int)(param_1[0x4b] << 0xf)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_1[0x4b] << 0xf)" ( (binary_expression "param_1[0x4b] << 0xf" (subscript_expression "param_1[0x4b]" identifier [ number_literal ]) << number_literal) )))) )) (compound_statement "{\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }" { (expression_statement "unaff_s2 = 0xff >> uVar23;" (assignment_expression "unaff_s2 = 0xff >> uVar23" identifier = (binary_expression "0xff >> uVar23" number_literal >> identifier)) ;) (goto_statement "goto LAB_0002fc38;" goto statement_identifier ;) })) (expression_statement "unaff_s2 = 0xff << uVar23;" (assignment_expression "unaff_s2 = 0xff << uVar23" identifier = (binary_expression "0xff << uVar23" number_literal << identifier)) ;) (expression_statement "bVar1 = *(byte *)(param_1 + 0x7f);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x7f)" identifier = (pointer_expression "*(byte *)(param_1 + 0x7f)" * (cast_expression "(byte *)(param_1 + 0x7f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7f)" ( (binary_expression "param_1 + 0x7f" identifier + number_literal) ))))) ;) }))) (if_statement "if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }" if (parenthesized_expression "((bVar1 != 0) && ((param_1[0x4b] & 2) != 0))" ( (binary_expression "(bVar1 != 0) && ((param_1[0x4b] & 2) != 0)" (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) && (parenthesized_expression "((param_1[0x4b] & 2) != 0)" ( (binary_expression "(param_1[0x4b] & 2) != 0" (parenthesized_expression "(param_1[0x4b] & 2)" ( (binary_expression "param_1[0x4b] & 2" (subscript_expression "param_1[0x4b]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }" { (expression_statement "bVar1 = *(byte *)((int)param_1 + 0x1fd);" (assignment_expression "bVar1 = *(byte *)((int)param_1 + 0x1fd)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x1fd)" * (cast_expression "(byte *)((int)param_1 + 0x1fd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x1fd)" ( (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "in_t3 = (uint)bVar1;" (assignment_expression "in_t3 = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }" if (parenthesized_expression "((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0))))))" ( (binary_expression "(in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))" (parenthesized_expression "(in_t3 < 6)" ( (binary_expression "in_t3 < 6" identifier < number_literal) )) && (parenthesized_expression "((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))" ( (parenthesized_expression "(param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0))))" ( (binary_expression "param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))" (binary_expression "param_3 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))" ( (parenthesized_expression "(param_3 == (byte *)0x1 && ((bVar1 & 1) != 0))" ( (binary_expression "param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)" (binary_expression "param_3 == (byte *)0x1" identifier == (cast_expression "(byte *)0x1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "((bVar1 & 1) != 0)" ( (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) != number_literal) ))) )) ))) )) ))) )) (compound_statement "{\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }" { (expression_statement "in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;" (assignment_expression "in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7" identifier = (binary_expression "(in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7" (binary_expression "(in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f)" (parenthesized_expression "(in_t3 & 1)" ( (binary_expression "in_t3 & 1" identifier & number_literal) )) << (parenthesized_expression "(3 - (in_t3 + 1 >> 1) & 0x1f)" ( (binary_expression "3 - (in_t3 + 1 >> 1) & 0x1f" (binary_expression "3 - (in_t3 + 1 >> 1)" number_literal - (parenthesized_expression "(in_t3 + 1 >> 1)" ( (binary_expression "in_t3 + 1 >> 1" (binary_expression "in_t3 + 1" identifier + number_literal) >> number_literal) ))) & number_literal) ))) & number_literal)) ;) (if_statement "if (uVar14 <= in_t2) {\n          return;\n        }" if (parenthesized_expression "(uVar14 <= in_t2)" ( (binary_expression "uVar14 <= in_t2" identifier <= identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (if_statement "if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }" if (parenthesized_expression "(uVar3 < 8)" ( (binary_expression "uVar3 < 8" identifier < number_literal) )) (compound_statement "{\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }" { (if_statement "if (uVar3 == 0) {\n            trap(7);\n          }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            trap(7);\n          }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (if_statement "if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" if (parenthesized_expression "((int)(param_1[0x4b] << 0xf) < 0)" ( (binary_expression "(int)(param_1[0x4b] << 0xf) < 0" (cast_expression "(int)(param_1[0x4b] << 0xf)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_1[0x4b] << 0xf)" ( (binary_expression "param_1[0x4b] << 0xf" (subscript_expression "param_1[0x4b]" identifier [ number_literal ]) << number_literal) ))) < number_literal) )) (compound_statement "{\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }" { (if_statement "if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }" if (parenthesized_expression "(param_3 == (byte *)0x0)" ( (binary_expression "param_3 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (if_statement "if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }" if (parenthesized_expression "((uVar3 != 1) && (iVar7 = 2, uVar3 == 2))" ( (binary_expression "(uVar3 != 1) && (iVar7 = 2, uVar3 == 2)" (parenthesized_expression "(uVar3 != 1)" ( (binary_expression "uVar3 != 1" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = 2, uVar3 == 2)" ( (comma_expression "iVar7 = 2, uVar3 == 2" (assignment_expression "iVar7 = 2" identifier = number_literal) , (binary_expression "uVar3 == 2" identifier == number_literal)) ))) )) (compound_statement "{\n                iVar7 = 1;\n              }" { (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) })) (expression_statement "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);" (assignment_expression "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c)" identifier = (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c)" * (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c)" ( (binary_expression "PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c" (binary_expression "PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4" identifier + (binary_expression "(iVar7 * 6 + in_t3) * 4" (parenthesized_expression "(iVar7 * 6 + in_t3)" ( (binary_expression "iVar7 * 6 + in_t3" (binary_expression "iVar7 * 6" identifier * number_literal) + identifier) )) * number_literal)) + number_literal) ))))) ;) }) (else_clause "else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }" else (compound_statement "{\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }" { (if_statement "if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }" if (parenthesized_expression "(uVar3 == 1)" ( (binary_expression "uVar3 == 1" identifier == number_literal) )) (compound_statement "{\n                iVar7 = 0;\n              }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) }) (else_clause "else if (uVar3 != 2) {\n                iVar7 = 2;\n              }" else (if_statement "if (uVar3 != 2) {\n                iVar7 = 2;\n              }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n                iVar7 = 2;\n              }" { (expression_statement "iVar7 = 2;" (assignment_expression "iVar7 = 2" identifier = number_literal) ;) })))) (expression_statement "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);" (assignment_expression "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec)" identifier = (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec)" * (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec)" ( (binary_expression "PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec" (binary_expression "PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4" identifier + (binary_expression "(iVar7 * 3 + (uint)(bVar1 >> 1)) * 4" (parenthesized_expression "(iVar7 * 3 + (uint)(bVar1 >> 1))" ( (binary_expression "iVar7 * 3 + (uint)(bVar1 >> 1)" (binary_expression "iVar7 * 3" identifier * number_literal) + (call_expression "(uint)(bVar1 >> 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> 1)" ( (binary_expression "bVar1 >> 1" identifier >> number_literal) )))) )) * number_literal)) + number_literal) ))))) ;) }))) }) (else_clause "else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" else (if_statement "if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" if (parenthesized_expression "(param_3 == (byte *)0x0)" ( (binary_expression "param_3 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (if_statement "if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }" if (parenthesized_expression "((uVar3 != 1) && (iVar7 = 2, uVar3 == 2))" ( (binary_expression "(uVar3 != 1) && (iVar7 = 2, uVar3 == 2)" (parenthesized_expression "(uVar3 != 1)" ( (binary_expression "uVar3 != 1" identifier != number_literal) )) && (parenthesized_expression "(iVar7 = 2, uVar3 == 2)" ( (comma_expression "iVar7 = 2, uVar3 == 2" (assignment_expression "iVar7 = 2" identifier = number_literal) , (binary_expression "uVar3 == 2" identifier == number_literal)) ))) )) (compound_statement "{\n              iVar7 = 1;\n            }" { (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) })) (expression_statement "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);" (assignment_expression "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" identifier = (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" * (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" ( (binary_expression "PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c" (binary_expression "PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4" identifier + (binary_expression "(iVar7 * 6 + in_t3 + 0x12) * 4" (parenthesized_expression "(iVar7 * 6 + in_t3 + 0x12)" ( (binary_expression "iVar7 * 6 + in_t3 + 0x12" (binary_expression "iVar7 * 6 + in_t3" (binary_expression "iVar7 * 6" identifier * number_literal) + identifier) + number_literal) )) * number_literal)) + number_literal) ))))) ;) }) (else_clause "else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" else (compound_statement "{\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" { (if_statement "if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }" if (parenthesized_expression "(uVar3 == 1)" ( (binary_expression "uVar3 == 1" identifier == number_literal) )) (compound_statement "{\n              iVar7 = 0;\n            }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) }) (else_clause "else if (uVar3 != 2) {\n              iVar7 = 2;\n            }" else (if_statement "if (uVar3 != 2) {\n              iVar7 = 2;\n            }" if (parenthesized_expression "(uVar3 != 2)" ( (binary_expression "uVar3 != 2" identifier != number_literal) )) (compound_statement "{\n              iVar7 = 2;\n            }" { (expression_statement "iVar7 = 2;" (assignment_expression "iVar7 = 2" identifier = number_literal) ;) })))) (expression_statement "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;" (assignment_expression "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)" identifier = (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)" * (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)" ( (binary_expression "PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec" (binary_expression "PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4" identifier + (binary_expression "(iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4" (parenthesized_expression "(iVar7 * 3 + (uint)(bVar1 >> 1) + 9)" ( (binary_expression "iVar7 * 3 + (uint)(bVar1 >> 1) + 9" (binary_expression "iVar7 * 3 + (uint)(bVar1 >> 1)" (binary_expression "iVar7 * 3" identifier * number_literal) + (call_expression "(uint)(bVar1 >> 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar1 >> 1)" ( (binary_expression "bVar1 >> 1" identifier >> number_literal) )))) + number_literal) )) * number_literal)) + number_literal) ))))) ;) }))))) (while_statement "while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }" { (if_statement "if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }" if (parenthesized_expression "((uVar15 & 0xff) != 0)" ( (binary_expression "(uVar15 & 0xff) != 0" (parenthesized_expression "(uVar15 & 0xff)" ( (binary_expression "uVar15 & 0xff" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }" { (if_statement "if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }" if (parenthesized_expression "((uVar15 & 0xff) == 0xff)" ( (binary_expression "(uVar15 & 0xff) == 0xff" (parenthesized_expression "(uVar15 & 0xff)" ( (binary_expression "uVar15 & 0xff" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                *param_2 = *pbVar11;\n              }" { (expression_statement "*param_2 = *pbVar11;" (assignment_expression "*param_2 = *pbVar11" (pointer_expression "*param_2" * identifier) = (pointer_expression "*pbVar11" * identifier)) ;) }) (else_clause "else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }" else (compound_statement "{\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }" { (expression_statement "*param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;" (assignment_expression "*param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15" (pointer_expression "*param_2" * identifier) ^ (binary_expression "(*param_2 ^ *pbVar11) & (byte)uVar15" (parenthesized_expression "(*param_2 ^ *pbVar11)" ( (binary_expression "*param_2 ^ *pbVar11" (pointer_expression "*param_2" * identifier) ^ (pointer_expression "*pbVar11" * identifier)) )) & (cast_expression "(byte)uVar15" ( (type_descriptor "byte" type_identifier) ) identifier)))) ;) }))) })) (expression_statement "bVar2 = uVar14 <= 8 / uVar3;" (assignment_expression "bVar2 = uVar14 <= 8 / uVar3" identifier = (binary_expression "uVar14 <= 8 / uVar3" identifier <= (binary_expression "8 / uVar3" number_literal / identifier))) ;) (expression_statement "uVar14 = uVar14 - 8 / uVar3;" (assignment_expression "uVar14 = uVar14 - 8 / uVar3" identifier = (binary_expression "uVar14 - 8 / uVar3" identifier - (binary_expression "8 / uVar3" number_literal / identifier))) ;) (if_statement "if (bVar2) break;" if (parenthesized_expression "(bVar2)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" identifier = (binary_expression "param_2 + 1" identifier + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;" (assignment_expression "uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000" identifier = (binary_expression "(uVar15 >> 8) + uVar15 * 0x1000000" (parenthesized_expression "(uVar15 >> 8)" ( (binary_expression "uVar15 >> 8" identifier >> number_literal) )) + (binary_expression "uVar15 * 0x1000000" identifier * number_literal))) ;) })) (goto_statement "goto LAB_0002fbfc;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002fd9c;" goto statement_identifier ;) })) })) (if_statement "if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }" if (parenthesized_expression "(uVar3 < 8)" ( (binary_expression "uVar3 < 8" identifier < number_literal) )) (compound_statement "{\n      uVar14 = uVar15 + 7 >> 3;\n    }" { (expression_statement "uVar14 = uVar15 + 7 >> 3;" (assignment_expression "uVar14 = uVar15 + 7 >> 3" identifier = (binary_expression "uVar15 + 7 >> 3" (binary_expression "uVar15 + 7" identifier + number_literal) >> number_literal)) ;) }) (else_clause "else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }" else (compound_statement "{\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }" { (expression_statement "uVar14 = (bVar9 >> 3) * uVar14;" (assignment_expression "uVar14 = (bVar9 >> 3) * uVar14" identifier = (binary_expression "(bVar9 >> 3) * uVar14" (parenthesized_expression "(bVar9 >> 3)" ( (binary_expression "bVar9 >> 3" identifier >> number_literal) )) * identifier)) ;) }))) (expression_statement "(*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);" (call_expression "(*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14)" (parenthesized_expression "(*(code *)PTR_memcpy_000534c4)" ( (pointer_expression "*(code *)PTR_memcpy_000534c4" * (cast_expression "(code *)PTR_memcpy_000534c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,pbVar11,uVar14)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }" statement_identifier : (if_statement "if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }" if (parenthesized_expression "(unaff_s0 != (byte *)0x0)" ( (binary_expression "unaff_s0 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }" { (expression_statement "*unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;" (assignment_expression "*unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2" (pointer_expression "*unaff_s0" * identifier) = (binary_expression "*unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2" (pointer_expression "*unaff_s0" * identifier) ^ (binary_expression "(*unaff_s0 ^ bVar22) & (byte)unaff_s2" (parenthesized_expression "(*unaff_s0 ^ bVar22)" ( (binary_expression "*unaff_s0 ^ bVar22" (pointer_expression "*unaff_s0" * identifier) ^ identifier) )) & (cast_expression "(byte)unaff_s2" ( (type_descriptor "byte" type_identifier) ) identifier)))) ;) }))) (return_statement "return;" return ;) })) (if_statement "if (uVar3 < 8) {\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }\n  else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }" if (parenthesized_expression "(uVar3 < 8)" ( (binary_expression "uVar3 < 8" identifier < number_literal) )) (compound_statement "{\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }" { (expression_statement "uVar15 = uVar3 * uVar14 + 7 >> 3;" (assignment_expression "uVar15 = uVar3 * uVar14 + 7 >> 3" identifier = (binary_expression "uVar3 * uVar14 + 7 >> 3" (binary_expression "uVar3 * uVar14 + 7" (binary_expression "uVar3 * uVar14" identifier * identifier) + number_literal) >> number_literal)) ;) }) (else_clause "else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }" else (compound_statement "{\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }" { (expression_statement "uVar15 = (bVar9 >> 3) * uVar14;" (assignment_expression "uVar15 = (bVar9 >> 3) * uVar14" identifier = (binary_expression "(bVar9 >> 3) * uVar14" (parenthesized_expression "(bVar9 >> 3)" ( (binary_expression "bVar9 >> 3" identifier >> number_literal) )) * identifier)) ;) }))) (if_statement "if (param_1[0x78] == uVar15) goto LAB_0002fb8c;" if (parenthesized_expression "(param_1[0x78] == uVar15)" ( (binary_expression "param_1[0x78] == uVar15" (subscript_expression "param_1[0x78]" identifier [ number_literal ]) == identifier) )) (goto_statement "goto LAB_0002fb8c;" goto statement_identifier ;)) (expression_statement "pbVar11 = PTR_s_nt_0005301c + 0xb58;" (assignment_expression "pbVar11 = PTR_s_nt_0005301c + 0xb58" identifier = (binary_expression "PTR_s_nt_0005301c + 0xb58" identifier + number_literal)) ;) (expression_statement "uVar29 = (*(code *)PTR_png_error_0005340c)(param_1);" (assignment_expression "uVar29 = (*(code *)PTR_png_error_0005340c)(param_1)" identifier = (call_expression "(*(code *)PTR_png_error_0005340c)(param_1)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar3 = (uint)((ulonglong)uVar29 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)uVar29 >> 0x20)" identifier = (call_expression "(uint)((ulonglong)uVar29 >> 0x20)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((ulonglong)uVar29 >> 0x20)" ( (binary_expression "(ulonglong)uVar29 >> 0x20" (cast_expression "(ulonglong)uVar29" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "param_1 = (uint *)uVar29;" (assignment_expression "param_1 = (uint *)uVar29" identifier = (cast_expression "(uint *)uVar29" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "LAB_0002fd9c:\n  uVar15 = uVar3 >> 3;" statement_identifier : (expression_statement "uVar15 = uVar3 >> 3;" (assignment_expression "uVar15 = uVar3 >> 3" identifier = (binary_expression "uVar3 >> 3" identifier >> number_literal)) ;)) (if_statement "if ((uVar3 & 7) == 0) {\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }" if (parenthesized_expression "((uVar3 & 7) == 0)" ( (binary_expression "(uVar3 & 7) == 0" (parenthesized_expression "(uVar3 & 7)" ( (binary_expression "uVar3 & 7" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }" { (expression_statement "iVar7 = in_t2 * uVar15;" (assignment_expression "iVar7 = in_t2 * uVar15" identifier = (binary_expression "in_t2 * uVar15" identifier * identifier)) ;) (expression_statement "param_2 = param_2 + iVar7;" (assignment_expression "param_2 = param_2 + iVar7" identifier = (binary_expression "param_2 + iVar7" identifier + identifier)) ;) (expression_statement "unaff_s3 = uVar14 * uVar15 - iVar7;" (assignment_expression "unaff_s3 = uVar14 * uVar15 - iVar7" identifier = (binary_expression "uVar14 * uVar15 - iVar7" (binary_expression "uVar14 * uVar15" identifier * identifier) - identifier)) ;) (expression_statement "unaff_s0 = pbVar11 + iVar7;" (assignment_expression "unaff_s0 = pbVar11 + iVar7" identifier = (binary_expression "pbVar11 + iVar7" identifier + identifier)) ;) (expression_statement "unaff_s2 = uVar15;" (assignment_expression "unaff_s2 = uVar15" identifier = identifier) ;) (if_statement "if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }" if (parenthesized_expression "((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2))" ( (binary_expression "(param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)" (parenthesized_expression "(param_3 != (byte *)0x0)" ( (binary_expression "param_3 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)" ( (comma_expression "unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2" (assignment_expression "unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f)" identifier = (binary_expression "uVar15 << (6 - in_t3 >> 1 & 0x1f)" identifier << (parenthesized_expression "(6 - in_t3 >> 1 & 0x1f)" ( (binary_expression "6 - in_t3 >> 1 & 0x1f" (binary_expression "6 - in_t3 >> 1" (binary_expression "6 - in_t3" number_literal - identifier) >> number_literal) & number_literal) )))) , (binary_expression "unaff_s3 < unaff_s2" identifier < identifier)) ))) )) (compound_statement "{\n      unaff_s2 = unaff_s3;\n    }" { (expression_statement "unaff_s2 = unaff_s3;" (assignment_expression "unaff_s2 = unaff_s3" identifier = identifier) ;) })) (expression_statement "unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);" (assignment_expression "unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f)" identifier = (binary_expression "uVar15 << (7 - in_t3 >> 1 & 0x1f)" identifier << (parenthesized_expression "(7 - in_t3 >> 1 & 0x1f)" ( (binary_expression "7 - in_t3 >> 1 & 0x1f" (binary_expression "7 - in_t3 >> 1" (binary_expression "7 - in_t3" number_literal - identifier) >> number_literal) & number_literal) )))) ;) (if_statement "if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }" if (parenthesized_expression "(unaff_s2 == 2)" ( (binary_expression "unaff_s2 == 2" identifier == number_literal) )) (compound_statement "{\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }" { (do_statement "do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);" do (compound_statement "{\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      }" { (expression_statement "*param_2 = *unaff_s0;" (assignment_expression "*param_2 = *unaff_s0" (pointer_expression "*param_2" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) (expression_statement "param_2[1] = unaff_s0[1];" (assignment_expression "param_2[1] = unaff_s0[1]" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[1]" identifier [ number_literal ])) ;) (if_statement "if (unaff_s3 <= unaff_s1) {\n          return;\n        }" if (parenthesized_expression "(unaff_s3 <= unaff_s1)" ( (binary_expression "unaff_s3 <= unaff_s1" identifier <= identifier) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" identifier = (binary_expression "unaff_s0 + unaff_s1" identifier + identifier)) ;) (expression_statement "param_2 = param_2 + unaff_s1;" (assignment_expression "param_2 = param_2 + unaff_s1" identifier = (binary_expression "param_2 + unaff_s1" identifier + identifier)) ;) }) while (parenthesized_expression "(1 < unaff_s3)" ( (binary_expression "1 < unaff_s3" number_literal < identifier) )) ;) (expression_statement "*param_2 = *unaff_s0;" (assignment_expression "*param_2 = *unaff_s0" (pointer_expression "*param_2" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) (return_statement "return;" return ;) })) (if_statement "if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }" if (parenthesized_expression "(unaff_s2 == 3)" ( (binary_expression "unaff_s2 == 3" identifier == number_literal) )) (compound_statement "{\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }" { (expression_statement "bVar9 = *unaff_s0;" (assignment_expression "bVar9 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;) (while_statement "while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }" { (expression_statement "*param_2 = bVar9;" (assignment_expression "*param_2 = bVar9" (pointer_expression "*param_2" * identifier) = identifier) ;) (expression_statement "param_2[1] = unaff_s0[1];" (assignment_expression "param_2[1] = unaff_s0[1]" (subscript_expression "param_2[1]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[1]" identifier [ number_literal ])) ;) (expression_statement "param_2[2] = unaff_s0[2];" (assignment_expression "param_2[2] = unaff_s0[2]" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (subscript_expression "unaff_s0[2]" identifier [ number_literal ])) ;) (if_statement "if (unaff_s3 <= unaff_s1) break;" if (parenthesized_expression "(unaff_s3 <= unaff_s1)" ( (binary_expression "unaff_s3 <= unaff_s1" identifier <= identifier) )) (break_statement "break;" break ;)) (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" identifier = (binary_expression "unaff_s0 + unaff_s1" identifier + identifier)) ;) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (expression_statement "param_2 = param_2 + unaff_s1;" (assignment_expression "param_2 = param_2 + unaff_s1" identifier = (binary_expression "param_2 + unaff_s1" identifier + identifier)) ;) (expression_statement "bVar9 = *unaff_s0;" (assignment_expression "bVar9 = *unaff_s0" identifier = (pointer_expression "*unaff_s0" * identifier)) ;) })) (return_statement "return;" return ;) })) (if_statement "if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }" if (parenthesized_expression "(unaff_s2 == 1)" ( (binary_expression "unaff_s2 == 1" identifier == number_literal) )) (compound_statement "{\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }" { (expression_statement "*param_2 = *unaff_s0;" (assignment_expression "*param_2 = *unaff_s0" (pointer_expression "*param_2" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) (for_statement "for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }" for ( ; (binary_expression "unaff_s1 < unaff_s3" identifier < identifier) ; (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ) (compound_statement "{\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }" { (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" identifier = (binary_expression "unaff_s0 + unaff_s1" identifier + identifier)) ;) (expression_statement "param_2 = param_2 + unaff_s1;" (assignment_expression "param_2 = param_2 + unaff_s1" identifier = (binary_expression "param_2 + unaff_s1" identifier + identifier)) ;) (expression_statement "*param_2 = *unaff_s0;" (assignment_expression "*param_2 = *unaff_s0" (pointer_expression "*param_2" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) })) (return_statement "return;" return ;) })) (if_statement "if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }" if (parenthesized_expression "(((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0))" ( (binary_expression "((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)" (parenthesized_expression "((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0))" ( (binary_expression "(0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)" (parenthesized_expression "(0xf < unaff_s2)" ( (binary_expression "0xf < unaff_s2" number_literal < identifier) )) || (parenthesized_expression "((((uint)param_2 | (uint)unaff_s0) & 1) != 0)" ( (binary_expression "(((uint)param_2 | (uint)unaff_s0) & 1) != 0" (parenthesized_expression "(((uint)param_2 | (uint)unaff_s0) & 1)" ( (binary_expression "((uint)param_2 | (uint)unaff_s0) & 1" (parenthesized_expression "((uint)param_2 | (uint)unaff_s0)" ( (binary_expression "(uint)param_2 | (uint)unaff_s0" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) | (cast_expression "(uint)unaff_s0" ( (type_descriptor "uint" type_identifier) ) identifier)) )) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(((unaff_s2 | unaff_s1) & 1) != 0)" ( (binary_expression "((unaff_s2 | unaff_s1) & 1) != 0" (parenthesized_expression "((unaff_s2 | unaff_s1) & 1)" ( (binary_expression "(unaff_s2 | unaff_s1) & 1" (parenthesized_expression "(unaff_s2 | unaff_s1)" ( (binary_expression "unaff_s2 | unaff_s1" identifier | identifier) )) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }" { (while_statement "while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }" while (parenthesized_expression "(iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)" ( (comma_expression "iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3" (assignment_expression "iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2)" identifier = (call_expression "(*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2)" (parenthesized_expression "(*(code *)PTR_memcpy_000534c4)" ( (pointer_expression "*(code *)PTR_memcpy_000534c4" * (cast_expression "(code *)PTR_memcpy_000534c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_2,unaff_s0,unaff_s2)" ( identifier , identifier , identifier )))) , (binary_expression "unaff_s1 < unaff_s3" identifier < identifier)) )) (compound_statement "{\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }" { (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" identifier = (binary_expression "unaff_s0 + unaff_s1" identifier + identifier)) ;) (if_statement "if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }" if (parenthesized_expression "(unaff_s3 < unaff_s2)" ( (binary_expression "unaff_s3 < unaff_s2" identifier < identifier) )) (compound_statement "{\n          unaff_s2 = unaff_s3;\n        }" { (expression_statement "unaff_s2 = unaff_s3;" (assignment_expression "unaff_s2 = unaff_s3" identifier = identifier) ;) })) (expression_statement "param_2 = (byte *)(iVar7 + unaff_s1);" (assignment_expression "param_2 = (byte *)(iVar7 + unaff_s1)" identifier = (cast_expression "(byte *)(iVar7 + unaff_s1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + unaff_s1)" ( (binary_expression "iVar7 + unaff_s1" identifier + identifier) )))) ;) })) (return_statement "return;" return ;) })) (expression_statement "uVar3 = unaff_s1 - unaff_s2;" (assignment_expression "uVar3 = unaff_s1 - unaff_s2" identifier = (binary_expression "unaff_s1 - unaff_s2" identifier - identifier)) ;) (if_statement "if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }" if (parenthesized_expression "((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0)" ( (binary_expression "(((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0" (parenthesized_expression "(((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3)" ( (binary_expression "((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3" (parenthesized_expression "((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1)" ( (binary_expression "(uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1" (binary_expression "(uint)param_2 | (uint)unaff_s0 | unaff_s2" (binary_expression "(uint)param_2 | (uint)unaff_s0" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) | (cast_expression "(uint)unaff_s0" ( (type_descriptor "uint" type_identifier) ) identifier)) | identifier) | identifier) )) & number_literal) )) != number_literal) )) (compound_statement "{\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }" { (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (while_statement "while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }" { (do_statement "do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);" do (compound_statement "{\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        }" { (expression_statement "pbVar20 = unaff_s0 + 2;" (assignment_expression "pbVar20 = unaff_s0 + 2" identifier = (binary_expression "unaff_s0 + 2" identifier + number_literal)) ;) (expression_statement "pbVar4 = param_2 + 2;" (assignment_expression "pbVar4 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "*(undefined2 *)param_2 = *(undefined2 *)unaff_s0;" (assignment_expression "*(undefined2 *)param_2 = *(undefined2 *)unaff_s0" (pointer_expression "*(undefined2 *)param_2" * (cast_expression "(undefined2 *)param_2" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*(undefined2 *)unaff_s0" * (cast_expression "(undefined2 *)unaff_s0" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "param_2 = pbVar4;" (assignment_expression "param_2 = pbVar4" identifier = identifier) ;) (expression_statement "unaff_s0 = pbVar20;" (assignment_expression "unaff_s0 = pbVar20" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar4 + -unaff_s2 != pbVar11)" ( (binary_expression "pbVar4 + -unaff_s2 != pbVar11" (binary_expression "pbVar4 + -unaff_s2" identifier + (unary_expression "-unaff_s2" - identifier)) != identifier) )) ;) (expression_statement "bVar2 = unaff_s3 <= unaff_s1;" (assignment_expression "bVar2 = unaff_s3 <= unaff_s1" identifier = (binary_expression "unaff_s3 <= unaff_s1" identifier <= identifier)) ;) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (if_statement "if (bVar2) break;" if (parenthesized_expression "(bVar2)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "param_2 = pbVar4 + (uVar3 & 0xfffffffe);" (assignment_expression "param_2 = pbVar4 + (uVar3 & 0xfffffffe)" identifier = (binary_expression "pbVar4 + (uVar3 & 0xfffffffe)" identifier + (parenthesized_expression "(uVar3 & 0xfffffffe)" ( (binary_expression "uVar3 & 0xfffffffe" identifier & number_literal) )))) ;) (expression_statement "unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);" (assignment_expression "unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe)" identifier = (binary_expression "pbVar20 + (uVar3 & 0xfffffffe)" identifier + (parenthesized_expression "(uVar3 & 0xfffffffe)" ( (binary_expression "uVar3 & 0xfffffffe" identifier & number_literal) )))) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (if_statement "if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }" if (parenthesized_expression "(unaff_s3 < unaff_s2)" ( (binary_expression "unaff_s3 < unaff_s2" identifier < identifier) )) (compound_statement "{\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }" { (do_statement "do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);" do (compound_statement "{\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          }" { (expression_statement "pbVar4 = pbVar11 + 1;" (assignment_expression "pbVar4 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar11 = *unaff_s0;" (assignment_expression "*pbVar11 = *unaff_s0" (pointer_expression "*pbVar11" * identifier) = (pointer_expression "*unaff_s0" * identifier)) ;) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" identifier = identifier) ;) (expression_statement "unaff_s0 = unaff_s0 + 1;" (assignment_expression "unaff_s0 = unaff_s0 + 1" identifier = (binary_expression "unaff_s0 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(param_2 + unaff_s3 != pbVar4)" ( (binary_expression "param_2 + unaff_s3 != pbVar4" (binary_expression "param_2 + unaff_s3" identifier + identifier) != identifier) )) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })) (labeled_statement "LAB_00030094:\n    pbVar11 = param_2;" statement_identifier : (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;)) (while_statement "while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }" { (do_statement "do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);" do (compound_statement "{\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      }" { (expression_statement "pbVar4 = param_2 + 4;" (assignment_expression "pbVar4 = param_2 + 4" identifier = (binary_expression "param_2 + 4" identifier + number_literal)) ;) (expression_statement "uVar12 = *(undefined4 *)unaff_s0;" (assignment_expression "uVar12 = *(undefined4 *)unaff_s0" identifier = (pointer_expression "*(undefined4 *)unaff_s0" * (cast_expression "(undefined4 *)unaff_s0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "unaff_s0 = unaff_s0 + 4;" (assignment_expression "unaff_s0 = unaff_s0 + 4" identifier = (binary_expression "unaff_s0 + 4" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)param_2 = uVar12;" (assignment_expression "*(undefined4 *)param_2 = uVar12" (pointer_expression "*(undefined4 *)param_2" * (cast_expression "(undefined4 *)param_2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "param_2 = pbVar4;" (assignment_expression "param_2 = pbVar4" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0)" ( (binary_expression "pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0" (binary_expression "pbVar11 + (unaff_s2 - (int)pbVar4)" identifier + (parenthesized_expression "(unaff_s2 - (int)pbVar4)" ( (binary_expression "unaff_s2 - (int)pbVar4" identifier - (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ))) != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "bVar2 = unaff_s3 <= unaff_s1;" (assignment_expression "bVar2 = unaff_s3 <= unaff_s1" identifier = (binary_expression "unaff_s3 <= unaff_s1" identifier <= identifier)) ;) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" identifier = (binary_expression "unaff_s3 - unaff_s1" identifier - identifier)) ;) (if_statement "if (bVar2) break;" if (parenthesized_expression "(bVar2)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "param_2 = pbVar4 + (uVar3 & 0xfffffffc);" (assignment_expression "param_2 = pbVar4 + (uVar3 & 0xfffffffc)" identifier = (binary_expression "pbVar4 + (uVar3 & 0xfffffffc)" identifier + (parenthesized_expression "(uVar3 & 0xfffffffc)" ( (binary_expression "uVar3 & 0xfffffffc" identifier & number_literal) )))) ;) (expression_statement "unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);" (assignment_expression "unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc)" identifier = (binary_expression "unaff_s0 + (uVar3 & 0xfffffffc)" identifier + (parenthesized_expression "(uVar3 & 0xfffffffc)" ( (binary_expression "uVar3 & 0xfffffffc" identifier & number_literal) )))) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" identifier = identifier) ;) (if_statement "if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }" if (parenthesized_expression "(unaff_s3 < unaff_s2)" ( (binary_expression "unaff_s3 < unaff_s2" identifier < identifier) )) (compound_statement "{\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }" { (do_statement "do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);" do (compound_statement "{\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        }" { (expression_statement "pbVar4 = unaff_s0 + uVar14;" (assignment_expression "pbVar4 = unaff_s0 + uVar14" identifier = (binary_expression "unaff_s0 + uVar14" identifier + identifier)) ;) (expression_statement "pbVar11 = param_2 + uVar14;" (assignment_expression "pbVar11 = param_2 + uVar14" identifier = (binary_expression "param_2 + uVar14" identifier + identifier)) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar11 = *pbVar4;" (assignment_expression "*pbVar11 = *pbVar4" (pointer_expression "*pbVar11" * identifier) = (pointer_expression "*pbVar4" * identifier)) ;) }) while (parenthesized_expression "(uVar14 != unaff_s3)" ( (binary_expression "uVar14 != unaff_s3" identifier != identifier) )) ;) (return_statement "return;" return ;) })) })) (return_statement "return;" return ;) })) (expression_statement "puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98);" (assignment_expression "puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98)" identifier = (cast_expression "(uint *)(PTR_s_nt_0005301c + 0xb98)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + 0xb98)" ( (binary_expression "PTR_s_nt_0005301c + 0xb98" identifier + number_literal) )))) ;) (expression_statement "puVar27 = PTR_png_error_0005340c;" (assignment_expression "puVar27 = PTR_png_error_0005340c" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_error_0005340c)();" (call_expression "(*(code *)PTR_png_error_0005340c)()" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "piVar21 = *(int **)(puVar27 + 0x233b0);" (assignment_expression "piVar21 = *(int **)(puVar27 + 0x233b0)" identifier = (pointer_expression "*(int **)(puVar27 + 0x233b0)" * (cast_expression "(int **)(puVar27 + 0x233b0)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + 0x233b0)" ( (binary_expression "puVar27 + 0x233b0" identifier + number_literal) ))))) ;) (expression_statement "iStack_5c = *piVar21;" (assignment_expression "iStack_5c = *piVar21" identifier = (pointer_expression "*piVar21" * identifier)) ;) (expression_statement "puVar10 = param_1;" (assignment_expression "puVar10 = param_1" identifier = identifier) ;) (expression_statement "pbStack_58 = unaff_s0;" (assignment_expression "pbStack_58 = unaff_s0" identifier = identifier) ;) (expression_statement "uStack_54 = uVar15;" (assignment_expression "uStack_54 = uVar15" identifier = identifier) ;) (expression_statement "uStack_50 = unaff_s2;" (assignment_expression "uStack_50 = unaff_s2" identifier = identifier) ;) (if_statement "if ((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)) goto LAB_00030268;" if (parenthesized_expression "((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0))" ( (binary_expression "(puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)" (parenthesized_expression "(puVar13 == (uint *)0x0)" ( (binary_expression "puVar13 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(param_1 == (uint *)0x0)" ( (binary_expression "param_1 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (goto_statement "goto LAB_00030268;" goto statement_identifier ;)) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" identifier = (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xb)" ( (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "uVar23 = uVar3 - 1;" (assignment_expression "uVar23 = uVar3 - 1" identifier = (binary_expression "uVar3 - 1" identifier - number_literal)) ;) (expression_statement "param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40);" (assignment_expression "param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40)" identifier = (cast_expression "(byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40)" ( (binary_expression "(int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40" (binary_expression "(int)param_3 * 4 + *(int *)(puVar27 + 0x22f10)" (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + (pointer_expression "*(int *)(puVar27 + 0x22f10)" * (cast_expression "(int *)(puVar27 + 0x22f10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar27 + 0x22f10)" ( (binary_expression "puVar27 + 0x22f10" identifier + number_literal) ))))) + number_literal) )))) ;) (expression_statement "iVar7 = *(int *)param_3;" (assignment_expression "iVar7 = *(int *)param_3" identifier = (pointer_expression "*(int *)param_3" * (cast_expression "(int *)param_3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "puVar5 = (uint *)(uVar3 * iVar7);" (assignment_expression "puVar5 = (uint *)(uVar3 * iVar7)" identifier = (cast_expression "(uint *)(uVar3 * iVar7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 * iVar7)" ( (binary_expression "uVar3 * iVar7" identifier * identifier) )))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar5 + -1);" (assignment_expression "pbVar11 = (byte *)((int)puVar5 + -1)" identifier = (cast_expression "(byte *)((int)puVar5 + -1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + -1)" ( (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (uVar15 == 2) {\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }\n  else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }" if (parenthesized_expression "(uVar15 == 2)" ( (binary_expression "uVar15 == 2" identifier == number_literal) )) (compound_statement "{\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }" { (expression_statement "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));" (assignment_expression "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2))" identifier = (cast_expression "(byte *)((int)puVar13 + (uVar23 >> 2))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + (uVar23 >> 2))" ( (binary_expression "(int)puVar13 + (uVar23 >> 2)" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar23 >> 2)" ( (binary_expression "uVar23 >> 2" identifier >> number_literal) ))) )))) ;) (expression_statement "puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));" (assignment_expression "puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2))" identifier = (cast_expression "(uint *)((int)puVar13 + ((uint)pbVar11 >> 2))" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + ((uint)pbVar11 >> 2))" ( (binary_expression "(int)puVar13 + ((uint)pbVar11 >> 2)" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((uint)pbVar11 >> 2)" ( (binary_expression "(uint)pbVar11 >> 2" (cast_expression "(uint)pbVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (expression_statement "puVar13 = (uint *)(uVar3 + 3);" (assignment_expression "puVar13 = (uint *)(uVar3 + 3)" identifier = (cast_expression "(uint *)(uVar3 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 3)" ( (binary_expression "uVar3 + 3" identifier + number_literal) )))) ;) (if_statement "if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }" if (parenthesized_expression "((uVar14 & 0x10000) == 0)" ( (binary_expression "(uVar14 & 0x10000) == 0" (parenthesized_expression "(uVar14 & 0x10000)" ( (binary_expression "uVar14 & 0x10000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }" { (expression_statement "puVar24 = (uint *)(~(uint)puVar13 << 1);" (assignment_expression "puVar24 = (uint *)(~(uint)puVar13 << 1)" identifier = (cast_expression "(uint *)(~(uint)puVar13 << 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(~(uint)puVar13 << 1)" ( (binary_expression "~(uint)puVar13 << 1" (unary_expression "~(uint)puVar13" ~ (cast_expression "(uint)puVar13" ( (type_descriptor "uint" type_identifier) ) identifier)) << number_literal) )))) ;) (expression_statement "uVar23 = ~(uint)((int)puVar5 + 3) << 1;" (assignment_expression "uVar23 = ~(uint)((int)puVar5 + 3) << 1" identifier = (binary_expression "~(uint)((int)puVar5 + 3) << 1" (unary_expression "~(uint)((int)puVar5 + 3)" ~ (call_expression "(uint)((int)puVar5 + 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar5 + 3)" ( (binary_expression "(int)puVar5 + 3" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) << number_literal)) ;) (expression_statement "iVar17 = 2;" (assignment_expression "iVar17 = 2" identifier = number_literal) ;) (expression_statement "pbVar20 = &DAT_00000006;" (assignment_expression "pbVar20 = &DAT_00000006" identifier = (pointer_expression "&DAT_00000006" & identifier)) ;) (expression_statement "pbVar11 = (byte *)0x0;" (assignment_expression "pbVar11 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }" else (compound_statement "{\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }" { (expression_statement "puVar13 = (uint *)((int)puVar13 * 2);" (assignment_expression "puVar13 = (uint *)((int)puVar13 * 2)" identifier = (cast_expression "(uint *)((int)puVar13 * 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 * 2)" ( (binary_expression "(int)puVar13 * 2" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "uVar23 = (int)((int)puVar5 + 3) * 2;" (assignment_expression "uVar23 = (int)((int)puVar5 + 3) * 2" identifier = (binary_expression "(int)((int)puVar5 + 3) * 2" (cast_expression "(int)((int)puVar5 + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar5 + 3)" ( (binary_expression "(int)puVar5 + 3" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) * number_literal)) ;) (expression_statement "iVar17 = -2;" (assignment_expression "iVar17 = -2" identifier = number_literal) ;) (expression_statement "pbVar20 = (byte *)0x0;" (assignment_expression "pbVar20 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar11 = &DAT_00000006;" (assignment_expression "pbVar11 = &DAT_00000006" identifier = (pointer_expression "&DAT_00000006" & identifier)) ;) (expression_statement "puVar24 = puVar13;" (assignment_expression "puVar24 = puVar13" identifier = identifier) ;) }))) (expression_statement "pbVar26 = (byte *)((uint)puVar24 & 6);" (assignment_expression "pbVar26 = (byte *)((uint)puVar24 & 6)" identifier = (cast_expression "(byte *)((uint)puVar24 & 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar24 & 6)" ( (binary_expression "(uint)puVar24 & 6" (cast_expression "(uint)puVar24" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "param_3 = (byte *)(uVar23 & 6);" (assignment_expression "param_3 = (byte *)(uVar23 & 6)" identifier = (cast_expression "(byte *)(uVar23 & 6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar23 & 6)" ( (binary_expression "uVar23 & 6" identifier & number_literal) )))) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (if_statement "if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }" { (do_statement "do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);" do (compound_statement "{\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      }" { (expression_statement "bVar9 = *pbVar4;" (assignment_expression "bVar9 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (if_statement "if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }" { (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);" do (compound_statement "{\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          }" { (while_statement "while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }" { (expression_statement "iVar6 = iVar25;" (assignment_expression "iVar6 = iVar25" identifier = identifier) ;) (expression_statement "uVar14 = (uint)*(byte *)puVar10;" (assignment_expression "uVar14 = (uint)*(byte *)puVar10" identifier = (binary_expression "(uint)*(byte *)puVar10" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)puVar10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "*(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;" (assignment_expression "*(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10" (pointer_expression "*(byte *)puVar10" * (cast_expression "(byte *)puVar10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10" (call_expression "(byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f))" ( (binary_expression "((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)" (parenthesized_expression "((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U)" ( (binary_expression "(int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U" (binary_expression "(int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f)" (cast_expression "(int)(uint)bVar9" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) >> (parenthesized_expression "((uint)pbVar26 & 0x1f)" ( (binary_expression "(uint)pbVar26 & 0x1f" (cast_expression "(uint)pbVar26" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) << (parenthesized_expression "((uint)param_3 & 0x1f)" ( (binary_expression "(uint)param_3 & 0x1f" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) ))) | (binary_expression "(byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10" (call_expression "(byte)(0x3f3f >> (6U - (int)param_3 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0x3f3f >> (6U - (int)param_3 & 0x1f))" ( (binary_expression "0x3f3f >> (6U - (int)param_3 & 0x1f)" number_literal >> (parenthesized_expression "(6U - (int)param_3 & 0x1f)" ( (binary_expression "6U - (int)param_3 & 0x1f" (binary_expression "6U - (int)param_3" number_literal - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) ))) ))) & (pointer_expression "*(byte *)puVar10" * (cast_expression "(byte *)puVar10" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))))) ;) (if_statement "if (pbVar20 != param_3) break;" if (parenthesized_expression "(pbVar20 != param_3)" ( (binary_expression "pbVar20 != param_3" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "puVar10 = (uint *)((int)puVar10 + -1);" (assignment_expression "puVar10 = (uint *)((int)puVar10 + -1)" identifier = (cast_expression "(uint *)((int)puVar10 + -1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + -1)" ( (binary_expression "(int)puVar10 + -1" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = pbVar11;" (assignment_expression "param_3 = pbVar11" identifier = identifier) ;) (if_statement "if (iVar6 + 1 == iVar7) goto LAB_0003051c;" if (parenthesized_expression "(iVar6 + 1 == iVar7)" ( (binary_expression "iVar6 + 1 == iVar7" (binary_expression "iVar6 + 1" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_0003051c;" goto statement_identifier ;)) })) (expression_statement "param_3 = param_3 + iVar17;" (assignment_expression "param_3 = param_3 + iVar17" identifier = (binary_expression "param_3 + iVar17" identifier + identifier)) ;) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 + 1 != iVar7)" ( (binary_expression "iVar6 + 1 != iVar7" (binary_expression "iVar6 + 1" identifier + number_literal) != identifier) )) ;) (labeled_statement "LAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);" statement_identifier : (expression_statement "puVar13 = (uint *)(iVar6 + 1);" (assignment_expression "puVar13 = (uint *)(iVar6 + 1)" identifier = (cast_expression "(uint *)(iVar6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 1)" ( (binary_expression "iVar6 + 1" identifier + number_literal) )))) ;)) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (if_statement "if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }" if (parenthesized_expression "(pbVar20 == pbVar26)" ( (binary_expression "pbVar20 == pbVar26" identifier == identifier) )) (compound_statement "{\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }" { (expression_statement "pbVar4 = pbVar4 + -1;" (assignment_expression "pbVar4 = pbVar4 + -1" identifier = (binary_expression "pbVar4 + -1" identifier + number_literal)) ;) (expression_statement "pbVar26 = pbVar11;" (assignment_expression "pbVar26 = pbVar11" identifier = identifier) ;) }) (else_clause "else {\n          pbVar26 = pbVar26 + iVar17;\n        }" else (compound_statement "{\n          pbVar26 = pbVar26 + iVar17;\n        }" { (expression_statement "pbVar26 = pbVar26 + iVar17;" (assignment_expression "pbVar26 = pbVar26 + iVar17" identifier = (binary_expression "pbVar26 + iVar17" identifier + identifier)) ;) }))) (expression_statement "uVar23 = uVar23 + 1;" (assignment_expression "uVar23 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar23 < uVar3)" ( (binary_expression "uVar23 < uVar3" identifier < identifier) )) ;) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" identifier = (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xb)" ( (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (goto_statement "goto LAB_0003024c;" goto statement_identifier ;) })) (labeled_statement "LAB_000302a4:\n    *param_1 = (uint)puVar5;" statement_identifier : (expression_statement "*param_1 = (uint)puVar5;" (assignment_expression "*param_1 = (uint)puVar5" (pointer_expression "*param_1" * identifier) = (cast_expression "(uint)puVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) }) (else_clause "else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }" else (compound_statement "{\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }" { (if_statement "if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }" if (parenthesized_expression "(uVar15 == 4)" ( (binary_expression "uVar15 == 4" identifier == number_literal) )) (compound_statement "{\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }" { (expression_statement "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));" (assignment_expression "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1))" identifier = (cast_expression "(byte *)((int)puVar13 + (uVar23 >> 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + (uVar23 >> 1))" ( (binary_expression "(int)puVar13 + (uVar23 >> 1)" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar23 >> 1)" ( (binary_expression "uVar23 >> 1" identifier >> number_literal) ))) )))) ;) (expression_statement "pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));" (assignment_expression "pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1))" identifier = (cast_expression "(byte *)((int)puVar13 + ((uint)pbVar11 >> 1))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + ((uint)pbVar11 >> 1))" ( (binary_expression "(int)puVar13 + ((uint)pbVar11 >> 1)" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((uint)pbVar11 >> 1)" ( (binary_expression "(uint)pbVar11 >> 1" (cast_expression "(uint)pbVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (if_statement "if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }" if (parenthesized_expression "((uVar14 & 0x10000) == 0)" ( (binary_expression "(uVar14 & 0x10000) == 0" (parenthesized_expression "(uVar14 & 0x10000)" ( (binary_expression "uVar14 & 0x10000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }" { (expression_statement "puVar10 = (uint *)(uVar3 + 1 & 1);" (assignment_expression "puVar10 = (uint *)(uVar3 + 1 & 1)" identifier = (cast_expression "(uint *)(uVar3 + 1 & 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar3 + 1 & 1)" ( (binary_expression "uVar3 + 1 & 1" (binary_expression "uVar3 + 1" identifier + number_literal) & number_literal) )))) ;) (expression_statement "pbVar20 = &DAT_00000004;" (assignment_expression "pbVar20 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (if_statement "if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }" if (parenthesized_expression "(puVar10 != (uint *)0x0)" ( (binary_expression "puVar10 != (uint *)0x0" identifier != (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pbVar20 = (byte *)0x0;\n        }" { (expression_statement "pbVar20 = (byte *)0x0;" (assignment_expression "pbVar20 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (if_statement "if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }" if (parenthesized_expression "(((uint)((int)puVar5 + 1) & 1) == 0)" ( (binary_expression "((uint)((int)puVar5 + 1) & 1) == 0" (parenthesized_expression "((uint)((int)puVar5 + 1) & 1)" ( (binary_expression "(uint)((int)puVar5 + 1) & 1" (call_expression "(uint)((int)puVar5 + 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) & number_literal) )) == number_literal) )) (compound_statement "{\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }" { (expression_statement "iVar17 = 4;" (assignment_expression "iVar17 = 4" identifier = number_literal) ;) (expression_statement "pbVar16 = &DAT_00000004;" (assignment_expression "pbVar16 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (expression_statement "param_3 = &DAT_00000004;" (assignment_expression "param_3 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (expression_statement "pbVar26 = (byte *)0x0;" (assignment_expression "pbVar26 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }" else (compound_statement "{\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }" { (expression_statement "pbVar26 = (byte *)0x0;" (assignment_expression "pbVar26 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar17 = 4;" (assignment_expression "iVar17 = 4" identifier = number_literal) ;) (expression_statement "pbVar16 = &DAT_00000004;" (assignment_expression "pbVar16 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (expression_statement "param_3 = (byte *)0x0;" (assignment_expression "param_3 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) }) (else_clause "else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }" else (compound_statement "{\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }" { (expression_statement "puVar10 = (uint *)((uVar3 + 1) * 4);" (assignment_expression "puVar10 = (uint *)((uVar3 + 1) * 4)" identifier = (cast_expression "(uint *)((uVar3 + 1) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uVar3 + 1) * 4)" ( (binary_expression "(uVar3 + 1) * 4" (parenthesized_expression "(uVar3 + 1)" ( (binary_expression "uVar3 + 1" identifier + number_literal) )) * number_literal) )))) ;) (expression_statement "param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);" (assignment_expression "param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4)" identifier = (cast_expression "(byte *)((int)((int)puVar5 + 1) * 4 & 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)((int)puVar5 + 1) * 4 & 4)" ( (binary_expression "(int)((int)puVar5 + 1) * 4 & 4" (binary_expression "(int)((int)puVar5 + 1) * 4" (cast_expression "(int)((int)puVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((int)puVar5 + 1)" ( (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) * number_literal) & number_literal) )))) ;) (expression_statement "iVar17 = -4;" (assignment_expression "iVar17 = -4" identifier = number_literal) ;) (expression_statement "pbVar16 = (byte *)0x0;" (assignment_expression "pbVar16 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar26 = &DAT_00000004;" (assignment_expression "pbVar26 = &DAT_00000004" identifier = (pointer_expression "&DAT_00000004" & identifier)) ;) (expression_statement "pbVar20 = (byte *)((uint)puVar10 & 4);" (assignment_expression "pbVar20 = (byte *)((uint)puVar10 & 4)" identifier = (cast_expression "(byte *)((uint)puVar10 & 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar10 & 4)" ( (binary_expression "(uint)puVar10 & 4" (cast_expression "(uint)puVar10" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) }))) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (expression_statement "puVar13 = puVar5;" (assignment_expression "puVar13 = puVar5" identifier = identifier) ;) (if_statement "if (uVar3 == 0) goto LAB_000302a4;" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000302a4;" goto statement_identifier ;)) (do_statement "do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);" do (compound_statement "{\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      }" { (expression_statement "bVar9 = *pbVar4;" (assignment_expression "bVar9 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (if_statement "if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }" { (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);" do (compound_statement "{\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          }" { (while_statement "while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }" { (expression_statement "iVar6 = iVar25;" (assignment_expression "iVar6 = iVar25" identifier = identifier) ;) (expression_statement "uVar14 = (uint)*pbVar11;" (assignment_expression "uVar14 = (uint)*pbVar11" identifier = (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "*pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;" (assignment_expression "*pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11" (pointer_expression "*pbVar11" * identifier) = (binary_expression "(byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11" (call_expression "(byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f))" ( (binary_expression "((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)" (parenthesized_expression "((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU)" ( (binary_expression "(int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU" (binary_expression "(int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f)" (cast_expression "(int)(uint)bVar9" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) >> (parenthesized_expression "((uint)pbVar20 & 0x1f)" ( (binary_expression "(uint)pbVar20 & 0x1f" (cast_expression "(uint)pbVar20" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) << (parenthesized_expression "((uint)param_3 & 0x1f)" ( (binary_expression "(uint)param_3 & 0x1f" (cast_expression "(uint)param_3" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) ))) | (binary_expression "(byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11" (call_expression "(byte)(0xf0f >> (4U - (int)param_3 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0xf0f >> (4U - (int)param_3 & 0x1f))" ( (binary_expression "0xf0f >> (4U - (int)param_3 & 0x1f)" number_literal >> (parenthesized_expression "(4U - (int)param_3 & 0x1f)" ( (binary_expression "4U - (int)param_3 & 0x1f" (binary_expression "4U - (int)param_3" number_literal - (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) ))) ))) & (pointer_expression "*pbVar11" * identifier)))) ;) (if_statement "if (pbVar16 != param_3) break;" if (parenthesized_expression "(pbVar16 != param_3)" ( (binary_expression "pbVar16 != param_3" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" identifier = (binary_expression "pbVar11 + -1" identifier + number_literal)) ;) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "param_3 = pbVar26;" (assignment_expression "param_3 = pbVar26" identifier = identifier) ;) (if_statement "if (iVar6 + 1 == iVar7) goto LAB_00030440;" if (parenthesized_expression "(iVar6 + 1 == iVar7)" ( (binary_expression "iVar6 + 1 == iVar7" (binary_expression "iVar6 + 1" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_00030440;" goto statement_identifier ;)) })) (expression_statement "param_3 = param_3 + iVar17;" (assignment_expression "param_3 = param_3 + iVar17" identifier = (binary_expression "param_3 + iVar17" identifier + identifier)) ;) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 + 1 != iVar7)" ( (binary_expression "iVar6 + 1 != iVar7" (binary_expression "iVar6 + 1" identifier + number_literal) != identifier) )) ;) (labeled_statement "LAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);" statement_identifier : (expression_statement "puVar13 = (uint *)(iVar6 + 1);" (assignment_expression "puVar13 = (uint *)(iVar6 + 1)" identifier = (cast_expression "(uint *)(iVar6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 1)" ( (binary_expression "iVar6 + 1" identifier + number_literal) )))) ;)) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (if_statement "if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }" if (parenthesized_expression "(pbVar16 == pbVar20)" ( (binary_expression "pbVar16 == pbVar20" identifier == identifier) )) (compound_statement "{\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }" { (expression_statement "pbVar4 = pbVar4 + -1;" (assignment_expression "pbVar4 = pbVar4 + -1" identifier = (binary_expression "pbVar4 + -1" identifier + number_literal)) ;) (expression_statement "pbVar20 = pbVar26;" (assignment_expression "pbVar20 = pbVar26" identifier = identifier) ;) }) (else_clause "else {\n          pbVar20 = pbVar20 + iVar17;\n        }" else (compound_statement "{\n          pbVar20 = pbVar20 + iVar17;\n        }" { (expression_statement "pbVar20 = pbVar20 + iVar17;" (assignment_expression "pbVar20 = pbVar20 + iVar17" identifier = (binary_expression "pbVar20 + iVar17" identifier + identifier)) ;) }))) (expression_statement "uVar23 = uVar23 + 1;" (assignment_expression "uVar23 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar23 < uVar3)" ( (binary_expression "uVar23 < uVar3" identifier < identifier) )) ;) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" identifier = (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xb)" ( (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "puVar10 = (uint *)0x0;" (assignment_expression "puVar10 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }" else (compound_statement "{\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }" { (expression_statement "pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);" (assignment_expression "pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3)" identifier = (cast_expression "(byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(uint)(*(byte *)((int)param_1 + 0xb) >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(byte *)((int)param_1 + 0xb) >> 3)" ( (binary_expression "*(byte *)((int)param_1 + 0xb) >> 3" (pointer_expression "*(byte *)((int)param_1 + 0xb)" * (cast_expression "(byte *)((int)param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xb)" ( (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal) ))))) ;) (if_statement "if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }" if (parenthesized_expression "(uVar15 == 1)" ( (binary_expression "uVar15 == 1" identifier == number_literal) )) (compound_statement "{\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }" { (expression_statement "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));" (assignment_expression "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3))" identifier = (cast_expression "(byte *)((int)puVar13 + (uVar23 >> 3))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + (uVar23 >> 3))" ( (binary_expression "(int)puVar13 + (uVar23 >> 3)" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(uVar23 >> 3)" ( (binary_expression "uVar23 >> 3" identifier >> number_literal) ))) )))) ;) (expression_statement "param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));" (assignment_expression "param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3))" identifier = (cast_expression "(byte *)((int)puVar13 + ((uint)pbVar11 >> 3))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar13 + ((uint)pbVar11 >> 3))" ( (binary_expression "(int)puVar13 + ((uint)pbVar11 >> 3)" (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "((uint)pbVar11 >> 3)" ( (binary_expression "(uint)pbVar11 >> 3" (cast_expression "(uint)pbVar11" ( (type_descriptor "uint" type_identifier) ) identifier) >> number_literal) ))) )))) ;) (expression_statement "uVar23 = uVar3 + 7;" (assignment_expression "uVar23 = uVar3 + 7" identifier = (binary_expression "uVar3 + 7" identifier + number_literal)) ;) (expression_statement "pbVar11 = (byte *)((int)puVar5 + 7);" (assignment_expression "pbVar11 = (byte *)((int)puVar5 + 7)" identifier = (cast_expression "(byte *)((int)puVar5 + 7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar5 + 7)" ( (binary_expression "(int)puVar5 + 7" (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }" if (parenthesized_expression "((uVar14 & 0x10000) == 0)" ( (binary_expression "(uVar14 & 0x10000) == 0" (parenthesized_expression "(uVar14 & 0x10000)" ( (binary_expression "uVar14 & 0x10000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }" { (expression_statement "uVar23 = ~uVar23;" (assignment_expression "uVar23 = ~uVar23" identifier = (unary_expression "~uVar23" ~ identifier)) ;) (expression_statement "pbVar11 = (byte *)~(uint)pbVar11;" (assignment_expression "pbVar11 = (byte *)~(uint)pbVar11" identifier = (cast_expression "(byte *)~(uint)pbVar11" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "~(uint)pbVar11" ~ (cast_expression "(uint)pbVar11" ( (type_descriptor "uint" type_identifier) ) identifier)))) ;) (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" identifier = number_literal) ;) (expression_statement "puVar8 = (uint *)&DAT_00000007;" (assignment_expression "puVar8 = (uint *)&DAT_00000007" identifier = (cast_expression "(uint *)&DAT_00000007" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000007" & identifier))) ;) (expression_statement "puVar24 = (uint *)0x0;" (assignment_expression "puVar24 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }" else (compound_statement "{\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }" { (expression_statement "iVar17 = -1;" (assignment_expression "iVar17 = -1" identifier = number_literal) ;) (expression_statement "puVar8 = (uint *)0x0;" (assignment_expression "puVar8 = (uint *)0x0" identifier = (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "puVar24 = (uint *)&DAT_00000007;" (assignment_expression "puVar24 = (uint *)&DAT_00000007" identifier = (cast_expression "(uint *)&DAT_00000007" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000007" & identifier))) ;) }))) (expression_statement "puVar18 = (uint *)(uVar23 & 7);" (assignment_expression "puVar18 = (uint *)(uVar23 & 7)" identifier = (cast_expression "(uint *)(uVar23 & 7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar23 & 7)" ( (binary_expression "uVar23 & 7" identifier & number_literal) )))) ;) (expression_statement "puVar10 = (uint *)((uint)pbVar11 & 7);" (assignment_expression "puVar10 = (uint *)((uint)pbVar11 & 7)" identifier = (cast_expression "(uint *)((uint)pbVar11 & 7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)pbVar11 & 7)" ( (binary_expression "(uint)pbVar11 & 7" (cast_expression "(uint)pbVar11" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (if_statement "if (uVar3 == 0) goto LAB_000302a4;" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000302a4;" goto statement_identifier ;)) (do_statement "do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);" do (compound_statement "{\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        }" { (expression_statement "bVar9 = *pbVar4;" (assignment_expression "bVar9 = *pbVar4" identifier = (pointer_expression "*pbVar4" * identifier)) ;) (if_statement "if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }" { (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);" do (compound_statement "{\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            }" { (while_statement "while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }" { (expression_statement "iVar6 = iVar25;" (assignment_expression "iVar6 = iVar25" identifier = identifier) ;) (expression_statement "uVar14 = (uint)*param_3;" (assignment_expression "uVar14 = (uint)*param_3" identifier = (binary_expression "(uint)*param_3" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "*param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;" (assignment_expression "*param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3" (pointer_expression "*param_3" * identifier) = (binary_expression "(byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3" (call_expression "(byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f))" ( (binary_expression "((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)" (parenthesized_expression "((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U)" ( (binary_expression "(int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U" (binary_expression "(int)(uint)bVar9 >> ((uint)puVar18 & 0x1f)" (cast_expression "(int)(uint)bVar9" ( (type_descriptor "int" primitive_type) ) (cast_expression "(uint)bVar9" ( (type_descriptor "uint" type_identifier) ) identifier)) >> (parenthesized_expression "((uint)puVar18 & 0x1f)" ( (binary_expression "(uint)puVar18 & 0x1f" (cast_expression "(uint)puVar18" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) & number_literal) )) << (parenthesized_expression "((uint)puVar10 & 0x1f)" ( (binary_expression "(uint)puVar10 & 0x1f" (cast_expression "(uint)puVar10" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) ))) | (binary_expression "(byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3" (call_expression "(byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0x7f7f >> (7U - (int)puVar10 & 0x1f))" ( (binary_expression "0x7f7f >> (7U - (int)puVar10 & 0x1f)" number_literal >> (parenthesized_expression "(7U - (int)puVar10 & 0x1f)" ( (binary_expression "7U - (int)puVar10 & 0x1f" (binary_expression "7U - (int)puVar10" number_literal - (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier)) & number_literal) ))) ))) & (pointer_expression "*param_3" * identifier)))) ;) (if_statement "if (puVar8 != puVar10) break;" if (parenthesized_expression "(puVar8 != puVar10)" ( (binary_expression "puVar8 != puVar10" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "param_3 = param_3 + -1;" (assignment_expression "param_3 = param_3 + -1" identifier = (binary_expression "param_3 + -1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar24;" (assignment_expression "puVar10 = puVar24" identifier = identifier) ;) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (if_statement "if (iVar6 + 1 == iVar7) goto LAB_00030364;" if (parenthesized_expression "(iVar6 + 1 == iVar7)" ( (binary_expression "iVar6 + 1 == iVar7" (binary_expression "iVar6 + 1" identifier + number_literal) == identifier) )) (goto_statement "goto LAB_00030364;" goto statement_identifier ;)) })) (expression_statement "puVar10 = (uint *)((int)puVar10 + iVar17);" (assignment_expression "puVar10 = (uint *)((int)puVar10 + iVar17)" identifier = (cast_expression "(uint *)((int)puVar10 + iVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + iVar17)" ( (binary_expression "(int)puVar10 + iVar17" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar6 + 1 != iVar7)" ( (binary_expression "iVar6 + 1 != iVar7" (binary_expression "iVar6 + 1" identifier + number_literal) != identifier) )) ;) (labeled_statement "LAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);" statement_identifier : (expression_statement "puVar13 = (uint *)(iVar6 + 1);" (assignment_expression "puVar13 = (uint *)(iVar6 + 1)" identifier = (cast_expression "(uint *)(iVar6 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 1)" ( (binary_expression "iVar6 + 1" identifier + number_literal) )))) ;)) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) })) (if_statement "if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }" if (parenthesized_expression "(puVar8 == puVar18)" ( (binary_expression "puVar8 == puVar18" identifier == identifier) )) (compound_statement "{\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }" { (expression_statement "pbVar4 = pbVar4 + -1;" (assignment_expression "pbVar4 = pbVar4 + -1" identifier = (binary_expression "pbVar4 + -1" identifier + number_literal)) ;) (expression_statement "puVar18 = puVar24;" (assignment_expression "puVar18 = puVar24" identifier = identifier) ;) }) (else_clause "else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }" else (compound_statement "{\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }" { (expression_statement "puVar18 = (uint *)((int)puVar18 + iVar17);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + iVar17)" identifier = (cast_expression "(uint *)((int)puVar18 + iVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar18 + iVar17)" ( (binary_expression "(int)puVar18 + iVar17" (cast_expression "(int)puVar18" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }))) (expression_statement "uVar23 = uVar23 + 1;" (assignment_expression "uVar23 = uVar23 + 1" identifier = (binary_expression "uVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar23 < uVar3)" ( (binary_expression "uVar23 < uVar3" identifier < identifier) )) ;) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" identifier = (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xb)" ( (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) }) (else_clause "else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }" else (compound_statement "{\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }" { (expression_statement "puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);" (assignment_expression "puVar10 = (uint *)((int)pbVar4 * (int)pbVar11)" identifier = (cast_expression "(uint *)((int)pbVar4 * (int)pbVar11)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar4 * (int)pbVar11)" ( (binary_expression "(int)pbVar4 * (int)pbVar11" (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier) * (cast_expression "(int)pbVar11" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);" (assignment_expression "puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13)" identifier = (cast_expression "(uint *)((int)pbVar4 * uVar23 + (int)puVar13)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pbVar4 * uVar23 + (int)puVar13)" ( (binary_expression "(int)pbVar4 * uVar23 + (int)puVar13" (binary_expression "(int)pbVar4 * uVar23" (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier) * identifier) + (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "puStack_74 = (uint *)((int)puVar10 + (int)puVar13);" (assignment_expression "puStack_74 = (uint *)((int)puVar10 + (int)puVar13)" identifier = (cast_expression "(uint *)((int)puVar10 + (int)puVar13)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + (int)puVar13)" ( (binary_expression "(int)puVar10 + (int)puVar13" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)puVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }" if (parenthesized_expression "(uVar3 != 0)" ( (binary_expression "uVar3 != 0" identifier != number_literal) )) (compound_statement "{\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }" { (expression_statement "iVar17 = -(int)pbVar4;" (assignment_expression "iVar17 = -(int)pbVar4" identifier = (unary_expression "-(int)pbVar4" - (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);" do (compound_statement "{\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          }" { (expression_statement "uVar14 = 8;" (assignment_expression "uVar14 = 8" identifier = number_literal) ;) (expression_statement "puVar10 = auStack_64;" (assignment_expression "puVar10 = auStack_64" identifier = identifier) ;) (expression_statement "puVar13 = puVar24;" (assignment_expression "puVar13 = puVar24" identifier = identifier) ;) (expression_statement "param_3 = pbVar4;" (assignment_expression "param_3 = pbVar4" identifier = identifier) ;) (expression_statement "(**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);" (call_expression "(**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8)" (parenthesized_expression "(**(code **)(puVar27 + 0x232f4))" ( (pointer_expression "**(code **)(puVar27 + 0x232f4)" * (pointer_expression "*(code **)(puVar27 + 0x232f4)" * (cast_expression "(code **)(puVar27 + 0x232f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + 0x232f4)" ( (binary_expression "puVar27 + 0x232f4" identifier + number_literal) ))))) )) (argument_list "(auStack_64,puVar24,pbVar4,8)" ( identifier , identifier , identifier , number_literal ))) ;) (if_statement "if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }" { (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" identifier = number_literal) ;) (expression_statement "puVar8 = puStack_74;" (assignment_expression "puVar8 = puStack_74" identifier = identifier) ;) (do_statement "do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);" do (compound_statement "{\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              }" { (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" identifier = (binary_expression "iVar25 + 1" identifier + number_literal)) ;) (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" identifier = identifier) ;) (expression_statement "puVar13 = auStack_64;" (assignment_expression "puVar13 = auStack_64" identifier = identifier) ;) (expression_statement "param_3 = pbVar4;" (assignment_expression "param_3 = pbVar4" identifier = identifier) ;) (expression_statement "iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);" (assignment_expression "iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4)" identifier = (call_expression "(**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4)" (parenthesized_expression "(**(code **)(puVar27 + 0x233b8))" ( (pointer_expression "**(code **)(puVar27 + 0x233b8)" * (pointer_expression "*(code **)(puVar27 + 0x233b8)" * (cast_expression "(code **)(puVar27 + 0x233b8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + 0x233b8)" ( (binary_expression "puVar27 + 0x233b8" identifier + number_literal) ))))) )) (argument_list "(puVar8,auStack_64,pbVar4)" ( identifier , identifier , identifier )))) ;) (expression_statement "puVar8 = (uint *)(iVar6 + iVar17);" (assignment_expression "puVar8 = (uint *)(iVar6 + iVar17)" identifier = (cast_expression "(uint *)(iVar6 + iVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + iVar17)" ( (binary_expression "iVar6 + iVar17" identifier + identifier) )))) ;) }) while (parenthesized_expression "(iVar25 != iVar7)" ( (binary_expression "iVar25 != iVar7" identifier != identifier) )) ;) (expression_statement "puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);" (assignment_expression "puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17)" identifier = (cast_expression "(uint *)((int)puStack_74 + iVar7 * iVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puStack_74 + iVar7 * iVar17)" ( (binary_expression "(int)puStack_74 + iVar7 * iVar17" (cast_expression "(int)puStack_74" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar7 * iVar17" identifier * identifier)) )))) ;) })) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar24 = (uint *)((int)puVar24 + iVar17);" (assignment_expression "puVar24 = (uint *)((int)puVar24 + iVar17)" identifier = (cast_expression "(uint *)((int)puVar24 + iVar17)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar24 + iVar17)" ( (binary_expression "(int)puVar24 + iVar17" (cast_expression "(int)puVar24" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(uVar3 < *param_1)" ( (binary_expression "uVar3 < *param_1" identifier < (pointer_expression "*param_1" * identifier)) )) ;) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" identifier = (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_1 + 0xb)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0xb)" ( (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) })) }))) }))) (labeled_statement "LAB_0003024c:\n    *param_1 = (uint)puVar5;" statement_identifier : (expression_statement "*param_1 = (uint)puVar5;" (assignment_expression "*param_1 = (uint)puVar5" (pointer_expression "*param_1" * identifier) = (cast_expression "(uint)puVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;)) (if_statement "if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }" if (parenthesized_expression "(7 < uVar15)" ( (binary_expression "7 < uVar15" number_literal < identifier) )) (compound_statement "{\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }" { (expression_statement "param_1[1] = (uVar15 >> 3) * (int)puVar5;" (assignment_expression "param_1[1] = (uVar15 >> 3) * (int)puVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "(uVar15 >> 3) * (int)puVar5" (parenthesized_expression "(uVar15 >> 3)" ( (binary_expression "uVar15 >> 3" identifier >> number_literal) )) * (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_00030268;" goto statement_identifier ;) })) }))) (expression_statement "param_1[1] = uVar15 * (int)puVar5 + 7 >> 3;" (assignment_expression "param_1[1] = uVar15 * (int)puVar5 + 7 >> 3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "uVar15 * (int)puVar5 + 7 >> 3" (binary_expression "uVar15 * (int)puVar5 + 7" (binary_expression "uVar15 * (int)puVar5" identifier * (cast_expression "(int)puVar5" ( (type_descriptor "int" primitive_type) ) identifier)) + number_literal) >> number_literal)) ;) (labeled_statement "LAB_00030268:\n  if (iStack_5c == *piVar21) {\n    return;\n  }" statement_identifier : (if_statement "if (iStack_5c == *piVar21) {\n    return;\n  }" if (parenthesized_expression "(iStack_5c == *piVar21)" ( (binary_expression "iStack_5c == *piVar21" identifier == (pointer_expression "*piVar21" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "pcVar28 = *(code **)(puVar27 + 0x23378);" (assignment_expression "pcVar28 = *(code **)(puVar27 + 0x23378)" identifier = (pointer_expression "*(code **)(puVar27 + 0x23378)" * (cast_expression "(code **)(puVar27 + 0x23378)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar27 + 0x23378)" ( (binary_expression "puVar27 + 0x23378" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar28)();" (call_expression "(*pcVar28)()" (parenthesized_expression "(*pcVar28)" ( (pointer_expression "*pcVar28" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (puVar27 + 0x2aee3 < &DAT_00000004) {\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    \n                    \n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }" if (parenthesized_expression "(puVar27 + 0x2aee3 < &DAT_00000004)" ( (binary_expression "puVar27 + 0x2aee3 < &DAT_00000004" (binary_expression "puVar27 + 0x2aee3" identifier + number_literal) < (pointer_expression "&DAT_00000004" & identifier)) )) (compound_statement "{\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    \n                    \n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }" { (if_statement "if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }" if (parenthesized_expression "(puVar10[0xe2] == 0)" ( (binary_expression "puVar10[0xe2] == 0" (subscript_expression "puVar10[0xe2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }" { (expression_statement "puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;" (assignment_expression "puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0" (subscript_expression "puVar10[0xe2]" identifier [ number_literal ]) = (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x58a0" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" * (cast_expression "(int *)(pcVar28 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar28 + 0x22c14)" ( (binary_expression "pcVar28 + 0x22c14" identifier + number_literal) )))) - number_literal)) ;) (expression_statement "puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;" (assignment_expression "puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858" (subscript_expression "puVar10[0xe3]" identifier [ number_literal ]) = (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x5858" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" * (cast_expression "(int *)(pcVar28 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar28 + 0x22c14)" ( (binary_expression "pcVar28 + 0x22c14" identifier + number_literal) )))) - number_literal)) ;) (expression_statement "puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;" (assignment_expression "puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828" (subscript_expression "puVar10[0xe4]" identifier [ number_literal ]) = (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x5828" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" * (cast_expression "(int *)(pcVar28 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar28 + 0x22c14)" ( (binary_expression "pcVar28 + 0x22c14" identifier + number_literal) )))) - number_literal)) ;) (if_statement "if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }" if (parenthesized_expression "((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1)" ( (binary_expression "(int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1" (binary_expression "(int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3" (cast_expression "(int)(*(byte *)((int)puVar10 + 0x202) + 7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(*(byte *)((int)puVar10 + 0x202) + 7)" ( (binary_expression "*(byte *)((int)puVar10 + 0x202) + 7" (pointer_expression "*(byte *)((int)puVar10 + 0x202)" * (cast_expression "(byte *)((int)puVar10 + 0x202)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar10 + 0x202)" ( (binary_expression "(int)puVar10 + 0x202" (cast_expression "(int)puVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) + number_literal) ))) >> number_literal) == number_literal) )) (compound_statement "{\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }" { (expression_statement "puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;" (assignment_expression "puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c" (subscript_expression "puVar10[0xe5]" identifier [ number_literal ]) = (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x579c" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" * (cast_expression "(int *)(pcVar28 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar28 + 0x22c14)" ( (binary_expression "pcVar28 + 0x22c14" identifier + number_literal) )))) - number_literal)) ;) }) (else_clause "else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }" else (compound_statement "{\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }" { (expression_statement "puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;" (assignment_expression "puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704" (subscript_expression "puVar10[0xe5]" identifier [ number_literal ]) = (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x5704" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" * (cast_expression "(int *)(pcVar28 + 0x22c14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar28 + 0x22c14)" ( (binary_expression "pcVar28 + 0x22c14" identifier + number_literal) )))) - number_literal)) ;) }))) })) (expression_statement "(*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);" (call_expression "(*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14)" (parenthesized_expression "(*(code *)puVar10[(int)(puVar27 + 0x2afc5)])" ( (pointer_expression "*(code *)puVar10[(int)(puVar27 + 0x2afc5)]" * (cast_expression "(code *)puVar10[(int)(puVar27 + 0x2afc5)]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar10[(int)(puVar27 + 0x2afc5)]" identifier [ (cast_expression "(int)(puVar27 + 0x2afc5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(puVar27 + 0x2afc5)" ( (binary_expression "puVar27 + 0x2afc5" identifier + number_literal) ))) ]))) )) (argument_list "(puVar13,param_3,uVar14)" ( identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 (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 IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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) ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) )))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT >> IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression LIT << IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (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 (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 (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << (parenthesized_expression ( (binary_expression (binary_expression LIT - (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) >> LIT) ))) & LIT) ))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) << LIT) ))) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT == LIT)) ))) )) (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 (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + IDENT) )) * LIT)) + LIT) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (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 (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) )) * LIT)) + LIT) ))))) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression IDENT == LIT)) ))) )) (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 (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + IDENT) + LIT) )) * LIT)) + LIT) ))))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (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 (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) )))) + LIT) )) * LIT)) + LIT) ))))) ;) }))))) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) ^ (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) ^ (pointer_expression * IDENT)) )) & (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT <= (binary_expression LIT / IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (binary_expression LIT / IDENT))) ;) (if_statement if (parenthesized_expression ( IDENT )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + (binary_expression IDENT * LIT))) ;) })) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * IDENT)) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) ^ (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) ^ IDENT) )) & (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) }))) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * IDENT) + LIT) >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (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 * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression (binary_expression (binary_expression LIT - IDENT) >> LIT) & LIT) )))) , (binary_expression IDENT < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression (binary_expression (binary_expression LIT - IDENT) >> LIT) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (for_statement for ( ; (binary_expression IDENT < IDENT) ; (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) })) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) | (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) & LIT) )) != LIT) ))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT | IDENT) )) & LIT) )) != LIT) ))) )) (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) , (binary_expression IDENT < IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) })) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) | (cast_expression ( (type_descriptor TYPE) ) IDENT)) | IDENT) | IDENT) )) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + (unary_expression - IDENT)) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT <= IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) ;) (return_statement return ;) })) })) (return_statement return ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT <= IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (return_statement return ;) })) })) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)) << LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) << LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) * LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) & LIT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT >> (parenthesized_expression ( (binary_expression (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) ))) ))) & (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) * LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) & LIT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT >> (parenthesized_expression ( (binary_expression (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) ))) ))) & (pointer_expression * IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) >> LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression ~ IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (unary_expression ~ (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression & IDENT))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) & LIT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ))) | (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT >> (parenthesized_expression ( (binary_expression (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) ))) ))) & (pointer_expression * IDENT)))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * IDENT)) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) })) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (binary_expression IDENT * (cast_expression ( (type_descriptor TYPE) ) IDENT)) + LIT) >> LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < (pointer_expression & IDENT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) + LIT) ))) >> LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT)) ;) }))) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) ]))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })) (return_statement return ;) })))
(function_definition "void FUN_0002fb24(uint *param_1,byte *param_2,byte *param_3)\n\n{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  byte bVar9;\n  uint extraout_v1;\n  uint *puVar8;\n  uint *puVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  uint uVar14;\n  uint uVar15;\n  uint in_t2;\n  byte *pbVar16;\n  uint in_t3;\n  int iVar17;\n  uint *puVar18;\n  byte *unaff_s0;\n  uint uVar19;\n  byte *pbVar20;\n  uint unaff_s1;\n  byte bVar22;\n  int *piVar21;\n  uint unaff_s2;\n  uint uVar23;\n  uint unaff_s3;\n  uint *puVar24;\n  int iVar25;\n  byte *pbVar26;\n  undefined *puVar27;\n  code *pcVar28;\n  undefined8 uVar29;\n  uint *puStack_74;\n  uint auStack_64 [2];\n  int iStack_5c;\n  byte *pbStack_58;\n  uint uStack_54;\n  uint uStack_50;\n  \n  uVar14 = param_1[0x6c];\n  bVar9 = *(byte *)((int)param_1 + 0x207);\n  uVar3 = (uint)bVar9;\n  if (uVar3 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }\n  pbVar11 = (byte *)(param_1[0x75] + 1);\n  if (param_1[0x78] == 0) {\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }\n  if (uVar3 < 8) {\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }\n  else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }\n  if (param_1[0x78] == uVar15) goto LAB_0002fb8c;\n  pbVar11 = PTR_s_nt_0005301c + 0xb58;\n  uVar29 = (*(code *)PTR_png_error_0005340c)(param_1);\n  uVar3 = (uint)((ulonglong)uVar29 >> 0x20);\n  param_1 = (uint *)uVar29;\nLAB_0002fd9c:\n  uVar15 = uVar3 >> 3;\n  if ((uVar3 & 7) == 0) {\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }\n  puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98);\n  puVar27 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)();\n  piVar21 = *(int **)(puVar27 + 0x233b0);\n  iStack_5c = *piVar21;\n  puVar10 = param_1;\n  pbStack_58 = unaff_s0;\n  uStack_54 = uVar15;\n  uStack_50 = unaff_s2;\n  if ((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)) goto LAB_00030268;\n  uVar3 = *param_1;\n  uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n  uVar23 = uVar3 - 1;\n  param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40);\n  iVar7 = *(int *)param_3;\n  puVar5 = (uint *)(uVar3 * iVar7);\n  pbVar11 = (byte *)((int)puVar5 + -1);\n  if (uVar15 == 2) {\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }\n  else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }\n  param_1[1] = uVar15 * (int)puVar5 + 7 >> 3;\nLAB_00030268:\n  if (iStack_5c == *piVar21) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar27 + 0x23378);\n  (*pcVar28)();\n  if (puVar27 + 0x2aee3 < &DAT_00000004) {\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    \n                    \n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0002fb24(uint *param_1,byte *param_2,byte *param_3)" (identifier "FUN_0002fb24") (parameter_list "(uint *param_1,byte *param_2,byte *param_3)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "byte *param_3" (type_identifier "byte") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  uint uVar3;\n  byte *pbVar4;\n  uint *puVar5;\n  int iVar6;\n  int iVar7;\n  byte bVar9;\n  uint extraout_v1;\n  uint *puVar8;\n  uint *puVar10;\n  byte *pbVar11;\n  undefined4 uVar12;\n  uint *puVar13;\n  uint uVar14;\n  uint uVar15;\n  uint in_t2;\n  byte *pbVar16;\n  uint in_t3;\n  int iVar17;\n  uint *puVar18;\n  byte *unaff_s0;\n  uint uVar19;\n  byte *pbVar20;\n  uint unaff_s1;\n  byte bVar22;\n  int *piVar21;\n  uint unaff_s2;\n  uint uVar23;\n  uint unaff_s3;\n  uint *puVar24;\n  int iVar25;\n  byte *pbVar26;\n  undefined *puVar27;\n  code *pcVar28;\n  undefined8 uVar29;\n  uint *puStack_74;\n  uint auStack_64 [2];\n  int iStack_5c;\n  byte *pbStack_58;\n  uint uStack_54;\n  uint uStack_50;\n  \n  uVar14 = param_1[0x6c];\n  bVar9 = *(byte *)((int)param_1 + 0x207);\n  uVar3 = (uint)bVar9;\n  if (uVar3 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }\n  pbVar11 = (byte *)(param_1[0x75] + 1);\n  if (param_1[0x78] == 0) {\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }\n  if (uVar3 < 8) {\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }\n  else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }\n  if (param_1[0x78] == uVar15) goto LAB_0002fb8c;\n  pbVar11 = PTR_s_nt_0005301c + 0xb58;\n  uVar29 = (*(code *)PTR_png_error_0005340c)(param_1);\n  uVar3 = (uint)((ulonglong)uVar29 >> 0x20);\n  param_1 = (uint *)uVar29;\nLAB_0002fd9c:\n  uVar15 = uVar3 >> 3;\n  if ((uVar3 & 7) == 0) {\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }\n  puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98);\n  puVar27 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)();\n  piVar21 = *(int **)(puVar27 + 0x233b0);\n  iStack_5c = *piVar21;\n  puVar10 = param_1;\n  pbStack_58 = unaff_s0;\n  uStack_54 = uVar15;\n  uStack_50 = unaff_s2;\n  if ((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)) goto LAB_00030268;\n  uVar3 = *param_1;\n  uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n  uVar23 = uVar3 - 1;\n  param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40);\n  iVar7 = *(int *)param_3;\n  puVar5 = (uint *)(uVar3 * iVar7);\n  pbVar11 = (byte *)((int)puVar5 + -1);\n  if (uVar15 == 2) {\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }\n  else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }\n  param_1[1] = uVar15 * (int)puVar5 + 7 >> 3;\nLAB_00030268:\n  if (iStack_5c == *piVar21) {\n    return;\n  }\n  pcVar28 = *(code **)(puVar27 + 0x23378);\n  (*pcVar28)();\n  if (puVar27 + 0x2aee3 < &DAT_00000004) {\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    \n                    \n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "uint *puVar5;" (type_identifier "uint") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "byte bVar9;" (type_identifier "byte") (identifier "bVar9") (; ";")) (declaration "uint extraout_v1;" (type_identifier "uint") (identifier "extraout_v1") (; ";")) (declaration "uint *puVar8;" (type_identifier "uint") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "uint *puVar10;" (type_identifier "uint") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "undefined4 uVar12;" (type_identifier "undefined4") (identifier "uVar12") (; ";")) (declaration "uint *puVar13;" (type_identifier "uint") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "uint in_t2;" (type_identifier "uint") (identifier "in_t2") (; ";")) (declaration "byte *pbVar16;" (type_identifier "byte") (pointer_declarator "*pbVar16" (* "*") (identifier "pbVar16")) (; ";")) (declaration "uint in_t3;" (type_identifier "uint") (identifier "in_t3") (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "uint *puVar18;" (type_identifier "uint") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "byte *unaff_s0;" (type_identifier "byte") (pointer_declarator "*unaff_s0" (* "*") (identifier "unaff_s0")) (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "byte *pbVar20;" (type_identifier "byte") (pointer_declarator "*pbVar20" (* "*") (identifier "pbVar20")) (; ";")) (declaration "uint unaff_s1;" (type_identifier "uint") (identifier "unaff_s1") (; ";")) (declaration "byte bVar22;" (type_identifier "byte") (identifier "bVar22") (; ";")) (declaration "int *piVar21;" (primitive_type "int") (pointer_declarator "*piVar21" (* "*") (identifier "piVar21")) (; ";")) (declaration "uint unaff_s2;" (type_identifier "uint") (identifier "unaff_s2") (; ";")) (declaration "uint uVar23;" (type_identifier "uint") (identifier "uVar23") (; ";")) (declaration "uint unaff_s3;" (type_identifier "uint") (identifier "unaff_s3") (; ";")) (declaration "uint *puVar24;" (type_identifier "uint") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "int iVar25;" (primitive_type "int") (identifier "iVar25") (; ";")) (declaration "byte *pbVar26;" (type_identifier "byte") (pointer_declarator "*pbVar26" (* "*") (identifier "pbVar26")) (; ";")) (declaration "undefined *puVar27;" (type_identifier "undefined") (pointer_declarator "*puVar27" (* "*") (identifier "puVar27")) (; ";")) (declaration "code *pcVar28;" (type_identifier "code") (pointer_declarator "*pcVar28" (* "*") (identifier "pcVar28")) (; ";")) (declaration "undefined8 uVar29;" (type_identifier "undefined8") (identifier "uVar29") (; ";")) (declaration "uint *puStack_74;" (type_identifier "uint") (pointer_declarator "*puStack_74" (* "*") (identifier "puStack_74")) (; ";")) (declaration "uint auStack_64 [2];" (type_identifier "uint") (array_declarator "auStack_64 [2]" (identifier "auStack_64") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "int iStack_5c;" (primitive_type "int") (identifier "iStack_5c") (; ";")) (declaration "byte *pbStack_58;" (type_identifier "byte") (pointer_declarator "*pbStack_58" (* "*") (identifier "pbStack_58")) (; ";")) (declaration "uint uStack_54;" (type_identifier "uint") (identifier "uStack_54") (; ";")) (declaration "uint uStack_50;" (type_identifier "uint") (identifier "uStack_50") (; ";")) (expression_statement "uVar14 = param_1[0x6c];" (assignment_expression "uVar14 = param_1[0x6c]" (identifier "uVar14") (= "=") (subscript_expression "param_1[0x6c]" (identifier "param_1") ([ "[") (number_literal "0x6c") (] "]"))) (; ";")) (expression_statement "bVar9 = *(byte *)((int)param_1 + 0x207);" (assignment_expression "bVar9 = *(byte *)((int)param_1 + 0x207)" (identifier "bVar9") (= "=") (pointer_expression "*(byte *)((int)param_1 + 0x207)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x207)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x207)" (( "(") (binary_expression "(int)param_1 + 0x207" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x207")) () ")"))))) (; ";")) (expression_statement "uVar3 = (uint)bVar9;" (assignment_expression "uVar3 = (uint)bVar9" (identifier "uVar3") (= "=") (cast_expression "(uint)bVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar9"))) (; ";")) (if_statement "if (uVar3 == 0) {\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();\n    uVar3 = extraout_v1;\n    goto LAB_00030094;\n  }" ({ "{") (labeled_statement "LAB_00030084:\n    (*(code *)PTR_png_error_0005340c)();" (statement_identifier "LAB_00030084") (: ":") (expression_statement "(*(code *)PTR_png_error_0005340c)();" (call_expression "(*(code *)PTR_png_error_0005340c)()" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" (( "(") (pointer_expression "*(code *)PTR_png_error_0005340c" (* "*") (cast_expression "(code *)PTR_png_error_0005340c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_error_0005340c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "uVar3 = extraout_v1;" (assignment_expression "uVar3 = extraout_v1" (identifier "uVar3") (= "=") (identifier "extraout_v1")) (; ";")) (goto_statement "goto LAB_00030094;" (goto "goto") (statement_identifier "LAB_00030094") (; ";")) (} "}"))) (expression_statement "pbVar11 = (byte *)(param_1[0x75] + 1);" (assignment_expression "pbVar11 = (byte *)(param_1[0x75] + 1)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)(param_1[0x75] + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[0x75] + 1)" (( "(") (binary_expression "param_1[0x75] + 1" (subscript_expression "param_1[0x75]" (identifier "param_1") ([ "[") (number_literal "0x75") (] "]")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (param_1[0x78] == 0) {\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }" (if "if") (parenthesized_expression "(param_1[0x78] == 0)" (( "(") (binary_expression "param_1[0x78] == 0" (subscript_expression "param_1[0x78]" (identifier "param_1") ([ "[") (number_literal "0x78") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;\n    if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }\n    uVar23 = uVar15 & 7;\n    bVar22 = 0;\n    if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }\n    if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);\nLAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }\n    return;\n  }" ({ "{") (labeled_statement "LAB_0002fb8c:\n    uVar15 = uVar3 * uVar14;" (statement_identifier "LAB_0002fb8c") (: ":") (expression_statement "uVar15 = uVar3 * uVar14;" (assignment_expression "uVar15 = uVar3 * uVar14" (identifier "uVar15") (= "=") (binary_expression "uVar3 * uVar14" (identifier "uVar3") (* "*") (identifier "uVar14"))) (; ";"))) (if_statement "if (uVar14 == 0) {\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }" (if "if") (parenthesized_expression "(uVar14 == 0)" (( "(") (binary_expression "uVar14 == 0" (identifier "uVar14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);\n      goto LAB_00030084;\n    }" ({ "{") (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" (( "(") (pointer_expression "*(code *)PTR_png_error_0005340c" (* "*") (cast_expression "(code *)PTR_png_error_0005340c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_error_0005340c"))) () ")")) (argument_list "(param_1,PTR_s_nt_0005301c + 0xb7c)" (( "(") (identifier "param_1") (, ",") (binary_expression "PTR_s_nt_0005301c + 0xb7c" (identifier "PTR_s_nt_0005301c") (+ "+") (number_literal "0xb7c")) () ")"))) (; ";")) (goto_statement "goto LAB_00030084;" (goto "goto") (statement_identifier "LAB_00030084") (; ";")) (} "}"))) (expression_statement "uVar23 = uVar15 & 7;" (assignment_expression "uVar23 = uVar15 & 7" (identifier "uVar23") (= "=") (binary_expression "uVar15 & 7" (identifier "uVar15") (& "&") (number_literal "7"))) (; ";")) (expression_statement "bVar22 = 0;" (assignment_expression "bVar22 = 0" (identifier "bVar22") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar23 == 0) {\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }\n    else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }" (if "if") (parenthesized_expression "(uVar23 == 0)" (( "(") (binary_expression "uVar23 == 0" (identifier "uVar23") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      unaff_s0 = (byte *)0x0;\n      unaff_s2 = 0;\nLAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }" ({ "{") (expression_statement "unaff_s0 = (byte *)0x0;" (assignment_expression "unaff_s0 = (byte *)0x0" (identifier "unaff_s0") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "unaff_s2 = 0;" (assignment_expression "unaff_s2 = 0" (identifier "unaff_s2") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0002fc38:\n      bVar1 = *(byte *)(param_1 + 0x7f);" (statement_identifier "LAB_0002fc38") (: ":") (expression_statement "bVar1 = *(byte *)(param_1 + 0x7f);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x7f)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + 0x7f)" (* "*") (cast_expression "(byte *)(param_1 + 0x7f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x7f)" (( "(") (binary_expression "param_1 + 0x7f" (identifier "param_1") (+ "+") (number_literal "0x7f")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }" (else "else") (compound_statement "{\n      if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }\n      unaff_s0 = param_2 + (uVar19 - 1);\n      bVar22 = *unaff_s0;\n      if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }\n      unaff_s2 = 0xff << uVar23;\n      bVar1 = *(byte *)(param_1 + 0x7f);\n    }" ({ "{") (if_statement "if (uVar3 < 8) {\n        uVar19 = uVar15 + 7 >> 3;\n      }\n      else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }" (if "if") (parenthesized_expression "(uVar3 < 8)" (( "(") (binary_expression "uVar3 < 8" (identifier "uVar3") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n        uVar19 = uVar15 + 7 >> 3;\n      }" ({ "{") (expression_statement "uVar19 = uVar15 + 7 >> 3;" (assignment_expression "uVar19 = uVar15 + 7 >> 3" (identifier "uVar19") (= "=") (binary_expression "uVar15 + 7 >> 3" (binary_expression "uVar15 + 7" (identifier "uVar15") (+ "+") (number_literal "7")) (>> ">>") (number_literal "3"))) (; ";")) (} "}")) (else_clause "else {\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }" (else "else") (compound_statement "{\n        uVar19 = (bVar9 >> 3) * uVar14;\n      }" ({ "{") (expression_statement "uVar19 = (bVar9 >> 3) * uVar14;" (assignment_expression "uVar19 = (bVar9 >> 3) * uVar14" (identifier "uVar19") (= "=") (binary_expression "(bVar9 >> 3) * uVar14" (parenthesized_expression "(bVar9 >> 3)" (( "(") (binary_expression "bVar9 >> 3" (identifier "bVar9") (>> ">>") (number_literal "3")) () ")")) (* "*") (identifier "uVar14"))) (; ";")) (} "}")))) (expression_statement "unaff_s0 = param_2 + (uVar19 - 1);" (assignment_expression "unaff_s0 = param_2 + (uVar19 - 1)" (identifier "unaff_s0") (= "=") (binary_expression "param_2 + (uVar19 - 1)" (identifier "param_2") (+ "+") (parenthesized_expression "(uVar19 - 1)" (( "(") (binary_expression "uVar19 - 1" (identifier "uVar19") (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "bVar22 = *unaff_s0;" (assignment_expression "bVar22 = *unaff_s0" (identifier "bVar22") (= "=") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0"))) (; ";")) (if_statement "if (-1 < (int)(param_1[0x4b] << 0xf)) {\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }" (if "if") (parenthesized_expression "(-1 < (int)(param_1[0x4b] << 0xf))" (( "(") (binary_expression "-1 < (int)(param_1[0x4b] << 0xf)" (number_literal "-1") (< "<") (cast_expression "(int)(param_1[0x4b] << 0xf)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(param_1[0x4b] << 0xf)" (( "(") (binary_expression "param_1[0x4b] << 0xf" (subscript_expression "param_1[0x4b]" (identifier "param_1") ([ "[") (number_literal "0x4b") (] "]")) (<< "<<") (number_literal "0xf")) () ")")))) () ")")) (compound_statement "{\n        unaff_s2 = 0xff >> uVar23;\n        goto LAB_0002fc38;\n      }" ({ "{") (expression_statement "unaff_s2 = 0xff >> uVar23;" (assignment_expression "unaff_s2 = 0xff >> uVar23" (identifier "unaff_s2") (= "=") (binary_expression "0xff >> uVar23" (number_literal "0xff") (>> ">>") (identifier "uVar23"))) (; ";")) (goto_statement "goto LAB_0002fc38;" (goto "goto") (statement_identifier "LAB_0002fc38") (; ";")) (} "}"))) (expression_statement "unaff_s2 = 0xff << uVar23;" (assignment_expression "unaff_s2 = 0xff << uVar23" (identifier "unaff_s2") (= "=") (binary_expression "0xff << uVar23" (number_literal "0xff") (<< "<<") (identifier "uVar23"))) (; ";")) (expression_statement "bVar1 = *(byte *)(param_1 + 0x7f);" (assignment_expression "bVar1 = *(byte *)(param_1 + 0x7f)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(param_1 + 0x7f)" (* "*") (cast_expression "(byte *)(param_1 + 0x7f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x7f)" (( "(") (binary_expression "param_1 + 0x7f" (identifier "param_1") (+ "+") (number_literal "0x7f")) () ")"))))) (; ";")) (} "}")))) (if_statement "if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }" (if "if") (parenthesized_expression "((bVar1 != 0) && ((param_1[0x4b] & 2) != 0))" (( "(") (binary_expression "(bVar1 != 0) && ((param_1[0x4b] & 2) != 0)" (parenthesized_expression "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((param_1[0x4b] & 2) != 0)" (( "(") (binary_expression "(param_1[0x4b] & 2) != 0" (parenthesized_expression "(param_1[0x4b] & 2)" (( "(") (binary_expression "param_1[0x4b] & 2" (subscript_expression "param_1[0x4b]" (identifier "param_1") ([ "[") (number_literal "0x4b") (] "]")) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      bVar1 = *(byte *)((int)param_1 + 0x1fd);\n      in_t3 = (uint)bVar1;\n      if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }\n    }" ({ "{") (expression_statement "bVar1 = *(byte *)((int)param_1 + 0x1fd);" (assignment_expression "bVar1 = *(byte *)((int)param_1 + 0x1fd)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)((int)param_1 + 0x1fd)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x1fd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x1fd)" (( "(") (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1fd")) () ")"))))) (; ";")) (expression_statement "in_t3 = (uint)bVar1;" (assignment_expression "in_t3 = (uint)bVar1" (identifier "in_t3") (= "=") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) (; ";")) (if_statement "if ((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }" (if "if") (parenthesized_expression "((in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0))))))" (( "(") (binary_expression "(in_t3 < 6) &&\n         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))" (parenthesized_expression "(in_t3 < 6)" (( "(") (binary_expression "in_t3 < 6" (identifier "in_t3") (< "<") (number_literal "6")) () ")")) (&& "&&") (parenthesized_expression "((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))" (( "(") (parenthesized_expression "(param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0))))" (( "(") (binary_expression "param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))" (binary_expression "param_3 == (byte *)0x0" (identifier "param_3") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (|| "||") (parenthesized_expression "((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))" (( "(") (parenthesized_expression "(param_3 == (byte *)0x1 && ((bVar1 & 1) != 0))" (( "(") (binary_expression "param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)" (binary_expression "param_3 == (byte *)0x1" (identifier "param_3") (== "==") (cast_expression "(byte *)0x1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (&& "&&") (parenthesized_expression "((bVar1 & 1) != 0)" (( "(") (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" (( "(") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;\n        if (uVar14 <= in_t2) {\n          return;\n        }\n        if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }\n        goto LAB_0002fd9c;\n      }" ({ "{") (expression_statement "in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;" (assignment_expression "in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7" (identifier "in_t2") (= "=") (binary_expression "(in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7" (binary_expression "(in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f)" (parenthesized_expression "(in_t3 & 1)" (( "(") (binary_expression "in_t3 & 1" (identifier "in_t3") (& "&") (number_literal "1")) () ")")) (<< "<<") (parenthesized_expression "(3 - (in_t3 + 1 >> 1) & 0x1f)" (( "(") (binary_expression "3 - (in_t3 + 1 >> 1) & 0x1f" (binary_expression "3 - (in_t3 + 1 >> 1)" (number_literal "3") (- "-") (parenthesized_expression "(in_t3 + 1 >> 1)" (( "(") (binary_expression "in_t3 + 1 >> 1" (binary_expression "in_t3 + 1" (identifier "in_t3") (+ "+") (number_literal "1")) (>> ">>") (number_literal "1")) () ")"))) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "7"))) (; ";")) (if_statement "if (uVar14 <= in_t2) {\n          return;\n        }" (if "if") (parenthesized_expression "(uVar14 <= in_t2)" (( "(") (binary_expression "uVar14 <= in_t2" (identifier "uVar14") (<= "<=") (identifier "in_t2")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar3 < 8) {\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }" (if "if") (parenthesized_expression "(uVar3 < 8)" (( "(") (binary_expression "uVar3 < 8" (identifier "uVar3") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n          if (uVar3 == 0) {\n            trap(7);\n          }\n          iVar7 = 1;\n          if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }\n          while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }\n          goto LAB_0002fbfc;\n        }" ({ "{") (if_statement "if (uVar3 == 0) {\n            trap(7);\n          }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            trap(7);\n          }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" (identifier "iVar7") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((int)(param_1[0x4b] << 0xf) < 0) {\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }\n          else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" (if "if") (parenthesized_expression "((int)(param_1[0x4b] << 0xf) < 0)" (( "(") (binary_expression "(int)(param_1[0x4b] << 0xf) < 0" (cast_expression "(int)(param_1[0x4b] << 0xf)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(param_1[0x4b] << 0xf)" (( "(") (binary_expression "param_1[0x4b] << 0xf" (subscript_expression "param_1[0x4b]" (identifier "param_1") ([ "[") (number_literal "0x4b") (] "]")) (<< "<<") (number_literal "0xf")) () ")"))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }\n          }" ({ "{") (if_statement "if (param_3 == (byte *)0x0) {\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }\n            else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }" (if "if") (parenthesized_expression "(param_3 == (byte *)0x0)" (( "(") (binary_expression "param_3 == (byte *)0x0" (identifier "param_3") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              iVar7 = 0;\n              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);\n            }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n                iVar7 = 1;\n              }" (if "if") (parenthesized_expression "((uVar3 != 1) && (iVar7 = 2, uVar3 == 2))" (( "(") (binary_expression "(uVar3 != 1) && (iVar7 = 2, uVar3 == 2)" (parenthesized_expression "(uVar3 != 1)" (( "(") (binary_expression "uVar3 != 1" (identifier "uVar3") (!= "!=") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 = 2, uVar3 == 2)" (( "(") (comma_expression "iVar7 = 2, uVar3 == 2" (assignment_expression "iVar7 = 2" (identifier "iVar7") (= "=") (number_literal "2")) (, ",") (binary_expression "uVar3 == 2" (identifier "uVar3") (== "==") (number_literal "2"))) () ")"))) () ")")) (compound_statement "{\n                iVar7 = 1;\n              }" ({ "{") (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" (identifier "iVar7") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);" (assignment_expression "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c)" (identifier "uVar15") (= "=") (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c)" (* "*") (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c)" (( "(") (binary_expression "PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c" (binary_expression "PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4" (identifier "PTR_s_nt_0005301c") (+ "+") (binary_expression "(iVar7 * 6 + in_t3) * 4" (parenthesized_expression "(iVar7 * 6 + in_t3)" (( "(") (binary_expression "iVar7 * 6 + in_t3" (binary_expression "iVar7 * 6" (identifier "iVar7") (* "*") (number_literal "6")) (+ "+") (identifier "in_t3")) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "0xd5c")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }" (else "else") (compound_statement "{\n              if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }\n              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);\n            }" ({ "{") (if_statement "if (uVar3 == 1) {\n                iVar7 = 0;\n              }\n              else if (uVar3 != 2) {\n                iVar7 = 2;\n              }" (if "if") (parenthesized_expression "(uVar3 == 1)" (( "(") (binary_expression "uVar3 == 1" (identifier "uVar3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n                iVar7 = 0;\n              }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (uVar3 != 2) {\n                iVar7 = 2;\n              }" (else "else") (if_statement "if (uVar3 != 2) {\n                iVar7 = 2;\n              }" (if "if") (parenthesized_expression "(uVar3 != 2)" (( "(") (binary_expression "uVar3 != 2" (identifier "uVar3") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n                iVar7 = 2;\n              }" ({ "{") (expression_statement "iVar7 = 2;" (assignment_expression "iVar7 = 2" (identifier "iVar7") (= "=") (number_literal "2")) (; ";")) (} "}"))))) (expression_statement "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);" (assignment_expression "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec)" (identifier "uVar15") (= "=") (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec)" (* "*") (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec)" (( "(") (binary_expression "PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec" (binary_expression "PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4" (identifier "PTR_s_nt_0005301c") (+ "+") (binary_expression "(iVar7 * 3 + (uint)(bVar1 >> 1)) * 4" (parenthesized_expression "(iVar7 * 3 + (uint)(bVar1 >> 1))" (( "(") (binary_expression "iVar7 * 3 + (uint)(bVar1 >> 1)" (binary_expression "iVar7 * 3" (identifier "iVar7") (* "*") (number_literal "3")) (+ "+") (call_expression "(uint)(bVar1 >> 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar1 >> 1)" (( "(") (binary_expression "bVar1 >> 1" (identifier "bVar1") (>> ">>") (number_literal "1")) () ")")))) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "0xdec")) () ")"))))) (; ";")) (} "}")))) (} "}")) (else_clause "else if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" (else "else") (if_statement "if (param_3 == (byte *)0x0) {\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }\n          else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" (if "if") (parenthesized_expression "(param_3 == (byte *)0x0)" (( "(") (binary_expression "param_3 == (byte *)0x0" (identifier "param_3") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            iVar7 = 0;\n            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);\n          }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {\n              iVar7 = 1;\n            }" (if "if") (parenthesized_expression "((uVar3 != 1) && (iVar7 = 2, uVar3 == 2))" (( "(") (binary_expression "(uVar3 != 1) && (iVar7 = 2, uVar3 == 2)" (parenthesized_expression "(uVar3 != 1)" (( "(") (binary_expression "uVar3 != 1" (identifier "uVar3") (!= "!=") (number_literal "1")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 = 2, uVar3 == 2)" (( "(") (comma_expression "iVar7 = 2, uVar3 == 2" (assignment_expression "iVar7 = 2" (identifier "iVar7") (= "=") (number_literal "2")) (, ",") (binary_expression "uVar3 == 2" (identifier "uVar3") (== "==") (number_literal "2"))) () ")"))) () ")")) (compound_statement "{\n              iVar7 = 1;\n            }" ({ "{") (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" (identifier "iVar7") (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);" (assignment_expression "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" (identifier "uVar15") (= "=") (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" (* "*") (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c)" (( "(") (binary_expression "PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c" (binary_expression "PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4" (identifier "PTR_s_nt_0005301c") (+ "+") (binary_expression "(iVar7 * 6 + in_t3 + 0x12) * 4" (parenthesized_expression "(iVar7 * 6 + in_t3 + 0x12)" (( "(") (binary_expression "iVar7 * 6 + in_t3 + 0x12" (binary_expression "iVar7 * 6 + in_t3" (binary_expression "iVar7 * 6" (identifier "iVar7") (* "*") (number_literal "6")) (+ "+") (identifier "in_t3")) (+ "+") (number_literal "0x12")) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "0xd5c")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" (else "else") (compound_statement "{\n            if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }\n            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;\n          }" ({ "{") (if_statement "if (uVar3 == 1) {\n              iVar7 = 0;\n            }\n            else if (uVar3 != 2) {\n              iVar7 = 2;\n            }" (if "if") (parenthesized_expression "(uVar3 == 1)" (( "(") (binary_expression "uVar3 == 1" (identifier "uVar3") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n              iVar7 = 0;\n            }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (uVar3 != 2) {\n              iVar7 = 2;\n            }" (else "else") (if_statement "if (uVar3 != 2) {\n              iVar7 = 2;\n            }" (if "if") (parenthesized_expression "(uVar3 != 2)" (( "(") (binary_expression "uVar3 != 2" (identifier "uVar3") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n              iVar7 = 2;\n            }" ({ "{") (expression_statement "iVar7 = 2;" (assignment_expression "iVar7 = 2" (identifier "iVar7") (= "=") (number_literal "2")) (; ";")) (} "}"))))) (expression_statement "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)\n            ;" (assignment_expression "uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)" (identifier "uVar15") (= "=") (pointer_expression "*(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)" (* "*") (cast_expression "(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)" (( "(") (binary_expression "PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec" (binary_expression "PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4" (identifier "PTR_s_nt_0005301c") (+ "+") (binary_expression "(iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4" (parenthesized_expression "(iVar7 * 3 + (uint)(bVar1 >> 1) + 9)" (( "(") (binary_expression "iVar7 * 3 + (uint)(bVar1 >> 1) + 9" (binary_expression "iVar7 * 3 + (uint)(bVar1 >> 1)" (binary_expression "iVar7 * 3" (identifier "iVar7") (* "*") (number_literal "3")) (+ "+") (call_expression "(uint)(bVar1 >> 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar1 >> 1)" (( "(") (binary_expression "bVar1 >> 1" (identifier "bVar1") (>> ">>") (number_literal "1")) () ")")))) (+ "+") (number_literal "9")) () ")")) (* "*") (number_literal "4"))) (+ "+") (number_literal "0xdec")) () ")"))))) (; ";")) (} "}")))))) (while_statement "while( true ) {\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }\n            bVar2 = uVar14 <= 8 / uVar3;\n            uVar14 = uVar14 - 8 / uVar3;\n            if (bVar2) break;\n            param_2 = param_2 + 1;\n            pbVar11 = pbVar11 + 1;\n            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;\n          }" ({ "{") (if_statement "if ((uVar15 & 0xff) != 0) {\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }" (if "if") (parenthesized_expression "((uVar15 & 0xff) != 0)" (( "(") (binary_expression "(uVar15 & 0xff) != 0" (parenthesized_expression "(uVar15 & 0xff)" (( "(") (binary_expression "uVar15 & 0xff" (identifier "uVar15") (& "&") (number_literal "0xff")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }\n            }" ({ "{") (if_statement "if ((uVar15 & 0xff) == 0xff) {\n                *param_2 = *pbVar11;\n              }\n              else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }" (if "if") (parenthesized_expression "((uVar15 & 0xff) == 0xff)" (( "(") (binary_expression "(uVar15 & 0xff) == 0xff" (parenthesized_expression "(uVar15 & 0xff)" (( "(") (binary_expression "uVar15 & 0xff" (identifier "uVar15") (& "&") (number_literal "0xff")) () ")")) (== "==") (number_literal "0xff")) () ")")) (compound_statement "{\n                *param_2 = *pbVar11;\n              }" ({ "{") (expression_statement "*param_2 = *pbVar11;" (assignment_expression "*param_2 = *pbVar11" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11"))) (; ";")) (} "}")) (else_clause "else {\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }" (else "else") (compound_statement "{\n                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;\n              }" ({ "{") (expression_statement "*param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;" (assignment_expression "*param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "*param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (^ "^") (binary_expression "(*param_2 ^ *pbVar11) & (byte)uVar15" (parenthesized_expression "(*param_2 ^ *pbVar11)" (( "(") (binary_expression "*param_2 ^ *pbVar11" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (^ "^") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11"))) () ")")) (& "&") (cast_expression "(byte)uVar15" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar15"))))) (; ";")) (} "}")))) (} "}"))) (expression_statement "bVar2 = uVar14 <= 8 / uVar3;" (assignment_expression "bVar2 = uVar14 <= 8 / uVar3" (identifier "bVar2") (= "=") (binary_expression "uVar14 <= 8 / uVar3" (identifier "uVar14") (<= "<=") (binary_expression "8 / uVar3" (number_literal "8") (/ "/") (identifier "uVar3")))) (; ";")) (expression_statement "uVar14 = uVar14 - 8 / uVar3;" (assignment_expression "uVar14 = uVar14 - 8 / uVar3" (identifier "uVar14") (= "=") (binary_expression "uVar14 - 8 / uVar3" (identifier "uVar14") (- "-") (binary_expression "8 / uVar3" (number_literal "8") (/ "/") (identifier "uVar3")))) (; ";")) (if_statement "if (bVar2) break;" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_2 = param_2 + 1;" (assignment_expression "param_2 = param_2 + 1" (identifier "param_2") (= "=") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;" (assignment_expression "uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000" (identifier "uVar15") (= "=") (binary_expression "(uVar15 >> 8) + uVar15 * 0x1000000" (parenthesized_expression "(uVar15 >> 8)" (( "(") (binary_expression "uVar15 >> 8" (identifier "uVar15") (>> ">>") (number_literal "8")) () ")")) (+ "+") (binary_expression "uVar15 * 0x1000000" (identifier "uVar15") (* "*") (number_literal "0x1000000")))) (; ";")) (} "}"))) (goto_statement "goto LAB_0002fbfc;" (goto "goto") (statement_identifier "LAB_0002fbfc") (; ";")) (} "}"))) (goto_statement "goto LAB_0002fd9c;" (goto "goto") (statement_identifier "LAB_0002fd9c") (; ";")) (} "}"))) (} "}"))) (if_statement "if (uVar3 < 8) {\n      uVar14 = uVar15 + 7 >> 3;\n    }\n    else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }" (if "if") (parenthesized_expression "(uVar3 < 8)" (( "(") (binary_expression "uVar3 < 8" (identifier "uVar3") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n      uVar14 = uVar15 + 7 >> 3;\n    }" ({ "{") (expression_statement "uVar14 = uVar15 + 7 >> 3;" (assignment_expression "uVar14 = uVar15 + 7 >> 3" (identifier "uVar14") (= "=") (binary_expression "uVar15 + 7 >> 3" (binary_expression "uVar15 + 7" (identifier "uVar15") (+ "+") (number_literal "7")) (>> ">>") (number_literal "3"))) (; ";")) (} "}")) (else_clause "else {\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }" (else "else") (compound_statement "{\n      uVar14 = (bVar9 >> 3) * uVar14;\n    }" ({ "{") (expression_statement "uVar14 = (bVar9 >> 3) * uVar14;" (assignment_expression "uVar14 = (bVar9 >> 3) * uVar14" (identifier "uVar14") (= "=") (binary_expression "(bVar9 >> 3) * uVar14" (parenthesized_expression "(bVar9 >> 3)" (( "(") (binary_expression "bVar9 >> 3" (identifier "bVar9") (>> ">>") (number_literal "3")) () ")")) (* "*") (identifier "uVar14"))) (; ";")) (} "}")))) (expression_statement "(*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);" (call_expression "(*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14)" (parenthesized_expression "(*(code *)PTR_memcpy_000534c4)" (( "(") (pointer_expression "*(code *)PTR_memcpy_000534c4" (* "*") (cast_expression "(code *)PTR_memcpy_000534c4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_000534c4"))) () ")")) (argument_list "(param_2,pbVar11,uVar14)" (( "(") (identifier "param_2") (, ",") (identifier "pbVar11") (, ",") (identifier "uVar14") () ")"))) (; ";")) (labeled_statement "LAB_0002fbfc:\n    if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }" (statement_identifier "LAB_0002fbfc") (: ":") (if_statement "if (unaff_s0 != (byte *)0x0) {\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }" (if "if") (parenthesized_expression "(unaff_s0 != (byte *)0x0)" (( "(") (binary_expression "unaff_s0 != (byte *)0x0" (identifier "unaff_s0") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;\n    }" ({ "{") (expression_statement "*unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;" (assignment_expression "*unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2" (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0")) (= "=") (binary_expression "*unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2" (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0")) (^ "^") (binary_expression "(*unaff_s0 ^ bVar22) & (byte)unaff_s2" (parenthesized_expression "(*unaff_s0 ^ bVar22)" (( "(") (binary_expression "*unaff_s0 ^ bVar22" (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0")) (^ "^") (identifier "bVar22")) () ")")) (& "&") (cast_expression "(byte)unaff_s2" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "unaff_s2"))))) (; ";")) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (uVar3 < 8) {\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }\n  else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }" (if "if") (parenthesized_expression "(uVar3 < 8)" (( "(") (binary_expression "uVar3 < 8" (identifier "uVar3") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n    uVar15 = uVar3 * uVar14 + 7 >> 3;\n  }" ({ "{") (expression_statement "uVar15 = uVar3 * uVar14 + 7 >> 3;" (assignment_expression "uVar15 = uVar3 * uVar14 + 7 >> 3" (identifier "uVar15") (= "=") (binary_expression "uVar3 * uVar14 + 7 >> 3" (binary_expression "uVar3 * uVar14 + 7" (binary_expression "uVar3 * uVar14" (identifier "uVar3") (* "*") (identifier "uVar14")) (+ "+") (number_literal "7")) (>> ">>") (number_literal "3"))) (; ";")) (} "}")) (else_clause "else {\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }" (else "else") (compound_statement "{\n    uVar15 = (bVar9 >> 3) * uVar14;\n  }" ({ "{") (expression_statement "uVar15 = (bVar9 >> 3) * uVar14;" (assignment_expression "uVar15 = (bVar9 >> 3) * uVar14" (identifier "uVar15") (= "=") (binary_expression "(bVar9 >> 3) * uVar14" (parenthesized_expression "(bVar9 >> 3)" (( "(") (binary_expression "bVar9 >> 3" (identifier "bVar9") (>> ">>") (number_literal "3")) () ")")) (* "*") (identifier "uVar14"))) (; ";")) (} "}")))) (if_statement "if (param_1[0x78] == uVar15) goto LAB_0002fb8c;" (if "if") (parenthesized_expression "(param_1[0x78] == uVar15)" (( "(") (binary_expression "param_1[0x78] == uVar15" (subscript_expression "param_1[0x78]" (identifier "param_1") ([ "[") (number_literal "0x78") (] "]")) (== "==") (identifier "uVar15")) () ")")) (goto_statement "goto LAB_0002fb8c;" (goto "goto") (statement_identifier "LAB_0002fb8c") (; ";"))) (expression_statement "pbVar11 = PTR_s_nt_0005301c + 0xb58;" (assignment_expression "pbVar11 = PTR_s_nt_0005301c + 0xb58" (identifier "pbVar11") (= "=") (binary_expression "PTR_s_nt_0005301c + 0xb58" (identifier "PTR_s_nt_0005301c") (+ "+") (number_literal "0xb58"))) (; ";")) (expression_statement "uVar29 = (*(code *)PTR_png_error_0005340c)(param_1);" (assignment_expression "uVar29 = (*(code *)PTR_png_error_0005340c)(param_1)" (identifier "uVar29") (= "=") (call_expression "(*(code *)PTR_png_error_0005340c)(param_1)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" (( "(") (pointer_expression "*(code *)PTR_png_error_0005340c" (* "*") (cast_expression "(code *)PTR_png_error_0005340c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_error_0005340c"))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar3 = (uint)((ulonglong)uVar29 >> 0x20);" (assignment_expression "uVar3 = (uint)((ulonglong)uVar29 >> 0x20)" (identifier "uVar3") (= "=") (call_expression "(uint)((ulonglong)uVar29 >> 0x20)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((ulonglong)uVar29 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar29 >> 0x20" (cast_expression "(ulonglong)uVar29" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar29")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "param_1 = (uint *)uVar29;" (assignment_expression "param_1 = (uint *)uVar29" (identifier "param_1") (= "=") (cast_expression "(uint *)uVar29" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar29"))) (; ";")) (labeled_statement "LAB_0002fd9c:\n  uVar15 = uVar3 >> 3;" (statement_identifier "LAB_0002fd9c") (: ":") (expression_statement "uVar15 = uVar3 >> 3;" (assignment_expression "uVar15 = uVar3 >> 3" (identifier "uVar15") (= "=") (binary_expression "uVar3 >> 3" (identifier "uVar3") (>> ">>") (number_literal "3"))) (; ";"))) (if_statement "if ((uVar3 & 7) == 0) {\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }" (if "if") (parenthesized_expression "((uVar3 & 7) == 0)" (( "(") (binary_expression "(uVar3 & 7) == 0" (parenthesized_expression "(uVar3 & 7)" (( "(") (binary_expression "uVar3 & 7" (identifier "uVar3") (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar7 = in_t2 * uVar15;\n    param_2 = param_2 + iVar7;\n    unaff_s3 = uVar14 * uVar15 - iVar7;\n    unaff_s0 = pbVar11 + iVar7;\n    unaff_s2 = uVar15;\n    if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }\n    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);\n    if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }\n    if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }\n    if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }\n    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }\n    uVar3 = unaff_s1 - unaff_s2;\n    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }\nLAB_00030094:\n    pbVar11 = param_2;\n    while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }\n    return;\n  }" ({ "{") (expression_statement "iVar7 = in_t2 * uVar15;" (assignment_expression "iVar7 = in_t2 * uVar15" (identifier "iVar7") (= "=") (binary_expression "in_t2 * uVar15" (identifier "in_t2") (* "*") (identifier "uVar15"))) (; ";")) (expression_statement "param_2 = param_2 + iVar7;" (assignment_expression "param_2 = param_2 + iVar7" (identifier "param_2") (= "=") (binary_expression "param_2 + iVar7" (identifier "param_2") (+ "+") (identifier "iVar7"))) (; ";")) (expression_statement "unaff_s3 = uVar14 * uVar15 - iVar7;" (assignment_expression "unaff_s3 = uVar14 * uVar15 - iVar7" (identifier "unaff_s3") (= "=") (binary_expression "uVar14 * uVar15 - iVar7" (binary_expression "uVar14 * uVar15" (identifier "uVar14") (* "*") (identifier "uVar15")) (- "-") (identifier "iVar7"))) (; ";")) (expression_statement "unaff_s0 = pbVar11 + iVar7;" (assignment_expression "unaff_s0 = pbVar11 + iVar7" (identifier "unaff_s0") (= "=") (binary_expression "pbVar11 + iVar7" (identifier "pbVar11") (+ "+") (identifier "iVar7"))) (; ";")) (expression_statement "unaff_s2 = uVar15;" (assignment_expression "unaff_s2 = uVar15" (identifier "unaff_s2") (= "=") (identifier "uVar15")) (; ";")) (if_statement "if ((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {\n      unaff_s2 = unaff_s3;\n    }" (if "if") (parenthesized_expression "((param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2))" (( "(") (binary_expression "(param_3 != (byte *)0x0) &&\n       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)" (parenthesized_expression "(param_3 != (byte *)0x0)" (( "(") (binary_expression "param_3 != (byte *)0x0" (identifier "param_3") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)" (( "(") (comma_expression "unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2" (assignment_expression "unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f)" (identifier "unaff_s2") (= "=") (binary_expression "uVar15 << (6 - in_t3 >> 1 & 0x1f)" (identifier "uVar15") (<< "<<") (parenthesized_expression "(6 - in_t3 >> 1 & 0x1f)" (( "(") (binary_expression "6 - in_t3 >> 1 & 0x1f" (binary_expression "6 - in_t3 >> 1" (binary_expression "6 - in_t3" (number_literal "6") (- "-") (identifier "in_t3")) (>> ">>") (number_literal "1")) (& "&") (number_literal "0x1f")) () ")")))) (, ",") (binary_expression "unaff_s3 < unaff_s2" (identifier "unaff_s3") (< "<") (identifier "unaff_s2"))) () ")"))) () ")")) (compound_statement "{\n      unaff_s2 = unaff_s3;\n    }" ({ "{") (expression_statement "unaff_s2 = unaff_s3;" (assignment_expression "unaff_s2 = unaff_s3" (identifier "unaff_s2") (= "=") (identifier "unaff_s3")) (; ";")) (} "}"))) (expression_statement "unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);" (assignment_expression "unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f)" (identifier "unaff_s1") (= "=") (binary_expression "uVar15 << (7 - in_t3 >> 1 & 0x1f)" (identifier "uVar15") (<< "<<") (parenthesized_expression "(7 - in_t3 >> 1 & 0x1f)" (( "(") (binary_expression "7 - in_t3 >> 1 & 0x1f" (binary_expression "7 - in_t3 >> 1" (binary_expression "7 - in_t3" (number_literal "7") (- "-") (identifier "in_t3")) (>> ">>") (number_literal "1")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (unaff_s2 == 2) {\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }" (if "if") (parenthesized_expression "(unaff_s2 == 2)" (( "(") (binary_expression "unaff_s2 == 2" (identifier "unaff_s2") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);\n      *param_2 = *unaff_s0;\n      return;\n    }" ({ "{") (do_statement "do {\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      } while (1 < unaff_s3);" (do "do") (compound_statement "{\n        *param_2 = *unaff_s0;\n        param_2[1] = unaff_s0[1];\n        if (unaff_s3 <= unaff_s1) {\n          return;\n        }\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n      }" ({ "{") (expression_statement "*param_2 = *unaff_s0;" (assignment_expression "*param_2 = *unaff_s0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0"))) (; ";")) (expression_statement "param_2[1] = unaff_s0[1];" (assignment_expression "param_2[1] = unaff_s0[1]" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "unaff_s0[1]" (identifier "unaff_s0") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (unaff_s3 <= unaff_s1) {\n          return;\n        }" (if "if") (parenthesized_expression "(unaff_s3 <= unaff_s1)" (( "(") (binary_expression "unaff_s3 <= unaff_s1" (identifier "unaff_s3") (<= "<=") (identifier "unaff_s1")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" (identifier "unaff_s3") (= "=") (binary_expression "unaff_s3 - unaff_s1" (identifier "unaff_s3") (- "-") (identifier "unaff_s1"))) (; ";")) (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" (identifier "unaff_s0") (= "=") (binary_expression "unaff_s0 + unaff_s1" (identifier "unaff_s0") (+ "+") (identifier "unaff_s1"))) (; ";")) (expression_statement "param_2 = param_2 + unaff_s1;" (assignment_expression "param_2 = param_2 + unaff_s1" (identifier "param_2") (= "=") (binary_expression "param_2 + unaff_s1" (identifier "param_2") (+ "+") (identifier "unaff_s1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(1 < unaff_s3)" (( "(") (binary_expression "1 < unaff_s3" (number_literal "1") (< "<") (identifier "unaff_s3")) () ")")) (; ";")) (expression_statement "*param_2 = *unaff_s0;" (assignment_expression "*param_2 = *unaff_s0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (unaff_s2 == 3) {\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }" (if "if") (parenthesized_expression "(unaff_s2 == 3)" (( "(") (binary_expression "unaff_s2 == 3" (identifier "unaff_s2") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n      bVar9 = *unaff_s0;\n      while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }\n      return;\n    }" ({ "{") (expression_statement "bVar9 = *unaff_s0;" (assignment_expression "bVar9 = *unaff_s0" (identifier "bVar9") (= "=") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0"))) (; ";")) (while_statement "while( true ) {\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        *param_2 = bVar9;\n        param_2[1] = unaff_s0[1];\n        param_2[2] = unaff_s0[2];\n        if (unaff_s3 <= unaff_s1) break;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        bVar9 = *unaff_s0;\n      }" ({ "{") (expression_statement "*param_2 = bVar9;" (assignment_expression "*param_2 = bVar9" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (identifier "bVar9")) (; ";")) (expression_statement "param_2[1] = unaff_s0[1];" (assignment_expression "param_2[1] = unaff_s0[1]" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (= "=") (subscript_expression "unaff_s0[1]" (identifier "unaff_s0") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_2[2] = unaff_s0[2];" (assignment_expression "param_2[2] = unaff_s0[2]" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "unaff_s0[2]" (identifier "unaff_s0") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (unaff_s3 <= unaff_s1) break;" (if "if") (parenthesized_expression "(unaff_s3 <= unaff_s1)" (( "(") (binary_expression "unaff_s3 <= unaff_s1" (identifier "unaff_s3") (<= "<=") (identifier "unaff_s1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" (identifier "unaff_s0") (= "=") (binary_expression "unaff_s0 + unaff_s1" (identifier "unaff_s0") (+ "+") (identifier "unaff_s1"))) (; ";")) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" (identifier "unaff_s3") (= "=") (binary_expression "unaff_s3 - unaff_s1" (identifier "unaff_s3") (- "-") (identifier "unaff_s1"))) (; ";")) (expression_statement "param_2 = param_2 + unaff_s1;" (assignment_expression "param_2 = param_2 + unaff_s1" (identifier "param_2") (= "=") (binary_expression "param_2 + unaff_s1" (identifier "param_2") (+ "+") (identifier "unaff_s1"))) (; ";")) (expression_statement "bVar9 = *unaff_s0;" (assignment_expression "bVar9 = *unaff_s0" (identifier "bVar9") (= "=") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (unaff_s2 == 1) {\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }" (if "if") (parenthesized_expression "(unaff_s2 == 1)" (( "(") (binary_expression "unaff_s2 == 1" (identifier "unaff_s2") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n      *param_2 = *unaff_s0;\n      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }\n      return;\n    }" ({ "{") (expression_statement "*param_2 = *unaff_s0;" (assignment_expression "*param_2 = *unaff_s0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0"))) (; ";")) (for_statement "for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }" (for "for") (( "(") (; ";") (binary_expression "unaff_s1 < unaff_s3" (identifier "unaff_s1") (< "<") (identifier "unaff_s3")) (; ";") (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" (identifier "unaff_s3") (= "=") (binary_expression "unaff_s3 - unaff_s1" (identifier "unaff_s3") (- "-") (identifier "unaff_s1"))) () ")") (compound_statement "{\n        unaff_s0 = unaff_s0 + unaff_s1;\n        param_2 = param_2 + unaff_s1;\n        *param_2 = *unaff_s0;\n      }" ({ "{") (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" (identifier "unaff_s0") (= "=") (binary_expression "unaff_s0 + unaff_s1" (identifier "unaff_s0") (+ "+") (identifier "unaff_s1"))) (; ";")) (expression_statement "param_2 = param_2 + unaff_s1;" (assignment_expression "param_2 = param_2 + unaff_s1" (identifier "param_2") (= "=") (binary_expression "param_2 + unaff_s1" (identifier "param_2") (+ "+") (identifier "unaff_s1"))) (; ";")) (expression_statement "*param_2 = *unaff_s0;" (assignment_expression "*param_2 = *unaff_s0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)) {\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }" (if "if") (parenthesized_expression "(((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0))" (( "(") (binary_expression "((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||\n       (((unaff_s2 | unaff_s1) & 1) != 0)" (parenthesized_expression "((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0))" (( "(") (binary_expression "(0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)" (parenthesized_expression "(0xf < unaff_s2)" (( "(") (binary_expression "0xf < unaff_s2" (number_literal "0xf") (< "<") (identifier "unaff_s2")) () ")")) (|| "||") (parenthesized_expression "((((uint)param_2 | (uint)unaff_s0) & 1) != 0)" (( "(") (binary_expression "(((uint)param_2 | (uint)unaff_s0) & 1) != 0" (parenthesized_expression "(((uint)param_2 | (uint)unaff_s0) & 1)" (( "(") (binary_expression "((uint)param_2 | (uint)unaff_s0) & 1" (parenthesized_expression "((uint)param_2 | (uint)unaff_s0)" (( "(") (binary_expression "(uint)param_2 | (uint)unaff_s0" (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2")) (| "|") (cast_expression "(uint)unaff_s0" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "unaff_s0"))) () ")")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(((unaff_s2 | unaff_s1) & 1) != 0)" (( "(") (binary_expression "((unaff_s2 | unaff_s1) & 1) != 0" (parenthesized_expression "((unaff_s2 | unaff_s1) & 1)" (( "(") (binary_expression "(unaff_s2 | unaff_s1) & 1" (parenthesized_expression "(unaff_s2 | unaff_s1)" (( "(") (binary_expression "unaff_s2 | unaff_s1" (identifier "unaff_s2") (| "|") (identifier "unaff_s1")) () ")")) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }\n      return;\n    }" ({ "{") (while_statement "while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)\n      {\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }" (while "while") (parenthesized_expression "(iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)" (( "(") (comma_expression "iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3" (assignment_expression "iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2)" (identifier "iVar7") (= "=") (call_expression "(*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2)" (parenthesized_expression "(*(code *)PTR_memcpy_000534c4)" (( "(") (pointer_expression "*(code *)PTR_memcpy_000534c4" (* "*") (cast_expression "(code *)PTR_memcpy_000534c4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_000534c4"))) () ")")) (argument_list "(param_2,unaff_s0,unaff_s2)" (( "(") (identifier "param_2") (, ",") (identifier "unaff_s0") (, ",") (identifier "unaff_s2") () ")")))) (, ",") (binary_expression "unaff_s1 < unaff_s3" (identifier "unaff_s1") (< "<") (identifier "unaff_s3"))) () ")")) (compound_statement "{\n        unaff_s3 = unaff_s3 - unaff_s1;\n        unaff_s0 = unaff_s0 + unaff_s1;\n        if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }\n        param_2 = (byte *)(iVar7 + unaff_s1);\n      }" ({ "{") (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" (identifier "unaff_s3") (= "=") (binary_expression "unaff_s3 - unaff_s1" (identifier "unaff_s3") (- "-") (identifier "unaff_s1"))) (; ";")) (expression_statement "unaff_s0 = unaff_s0 + unaff_s1;" (assignment_expression "unaff_s0 = unaff_s0 + unaff_s1" (identifier "unaff_s0") (= "=") (binary_expression "unaff_s0 + unaff_s1" (identifier "unaff_s0") (+ "+") (identifier "unaff_s1"))) (; ";")) (if_statement "if (unaff_s3 < unaff_s2) {\n          unaff_s2 = unaff_s3;\n        }" (if "if") (parenthesized_expression "(unaff_s3 < unaff_s2)" (( "(") (binary_expression "unaff_s3 < unaff_s2" (identifier "unaff_s3") (< "<") (identifier "unaff_s2")) () ")")) (compound_statement "{\n          unaff_s2 = unaff_s3;\n        }" ({ "{") (expression_statement "unaff_s2 = unaff_s3;" (assignment_expression "unaff_s2 = unaff_s3" (identifier "unaff_s2") (= "=") (identifier "unaff_s3")) (; ";")) (} "}"))) (expression_statement "param_2 = (byte *)(iVar7 + unaff_s1);" (assignment_expression "param_2 = (byte *)(iVar7 + unaff_s1)" (identifier "param_2") (= "=") (cast_expression "(byte *)(iVar7 + unaff_s1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + unaff_s1)" (( "(") (binary_expression "iVar7 + unaff_s1" (identifier "iVar7") (+ "+") (identifier "unaff_s1")) () ")")))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "uVar3 = unaff_s1 - unaff_s2;" (assignment_expression "uVar3 = unaff_s1 - unaff_s2" (identifier "uVar3") (= "=") (binary_expression "unaff_s1 - unaff_s2" (identifier "unaff_s1") (- "-") (identifier "unaff_s2"))) (; ";")) (if_statement "if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }" (if "if") (parenthesized_expression "((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0)" (( "(") (binary_expression "(((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0" (parenthesized_expression "(((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3)" (( "(") (binary_expression "((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3" (parenthesized_expression "((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1)" (( "(") (binary_expression "(uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1" (binary_expression "(uint)param_2 | (uint)unaff_s0 | unaff_s2" (binary_expression "(uint)param_2 | (uint)unaff_s0" (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2")) (| "|") (cast_expression "(uint)unaff_s0" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "unaff_s0"))) (| "|") (identifier "unaff_s2")) (| "|") (identifier "unaff_s1")) () ")")) (& "&") (number_literal "3")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pbVar11 = param_2;\n      while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }\n      return;\n    }" ({ "{") (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (while_statement "while( true ) {\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);\n        bVar2 = unaff_s3 <= unaff_s1;\n        unaff_s3 = unaff_s3 - unaff_s1;\n        if (bVar2) break;\n        param_2 = pbVar4 + (uVar3 & 0xfffffffe);\n        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);\n        pbVar11 = param_2;\n        if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }\n      }" ({ "{") (do_statement "do {\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        } while (pbVar4 + -unaff_s2 != pbVar11);" (do "do") (compound_statement "{\n          pbVar20 = unaff_s0 + 2;\n          pbVar4 = param_2 + 2;\n          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;\n          param_2 = pbVar4;\n          unaff_s0 = pbVar20;\n        }" ({ "{") (expression_statement "pbVar20 = unaff_s0 + 2;" (assignment_expression "pbVar20 = unaff_s0 + 2" (identifier "pbVar20") (= "=") (binary_expression "unaff_s0 + 2" (identifier "unaff_s0") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "pbVar4 = param_2 + 2;" (assignment_expression "pbVar4 = param_2 + 2" (identifier "pbVar4") (= "=") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "*(undefined2 *)param_2 = *(undefined2 *)unaff_s0;" (assignment_expression "*(undefined2 *)param_2 = *(undefined2 *)unaff_s0" (pointer_expression "*(undefined2 *)param_2" (* "*") (cast_expression "(undefined2 *)param_2" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (= "=") (pointer_expression "*(undefined2 *)unaff_s0" (* "*") (cast_expression "(undefined2 *)unaff_s0" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "unaff_s0")))) (; ";")) (expression_statement "param_2 = pbVar4;" (assignment_expression "param_2 = pbVar4" (identifier "param_2") (= "=") (identifier "pbVar4")) (; ";")) (expression_statement "unaff_s0 = pbVar20;" (assignment_expression "unaff_s0 = pbVar20" (identifier "unaff_s0") (= "=") (identifier "pbVar20")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar4 + -unaff_s2 != pbVar11)" (( "(") (binary_expression "pbVar4 + -unaff_s2 != pbVar11" (binary_expression "pbVar4 + -unaff_s2" (identifier "pbVar4") (+ "+") (unary_expression "-unaff_s2" (- "-") (identifier "unaff_s2"))) (!= "!=") (identifier "pbVar11")) () ")")) (; ";")) (expression_statement "bVar2 = unaff_s3 <= unaff_s1;" (assignment_expression "bVar2 = unaff_s3 <= unaff_s1" (identifier "bVar2") (= "=") (binary_expression "unaff_s3 <= unaff_s1" (identifier "unaff_s3") (<= "<=") (identifier "unaff_s1"))) (; ";")) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" (identifier "unaff_s3") (= "=") (binary_expression "unaff_s3 - unaff_s1" (identifier "unaff_s3") (- "-") (identifier "unaff_s1"))) (; ";")) (if_statement "if (bVar2) break;" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_2 = pbVar4 + (uVar3 & 0xfffffffe);" (assignment_expression "param_2 = pbVar4 + (uVar3 & 0xfffffffe)" (identifier "param_2") (= "=") (binary_expression "pbVar4 + (uVar3 & 0xfffffffe)" (identifier "pbVar4") (+ "+") (parenthesized_expression "(uVar3 & 0xfffffffe)" (( "(") (binary_expression "uVar3 & 0xfffffffe" (identifier "uVar3") (& "&") (number_literal "0xfffffffe")) () ")")))) (; ";")) (expression_statement "unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);" (assignment_expression "unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe)" (identifier "unaff_s0") (= "=") (binary_expression "pbVar20 + (uVar3 & 0xfffffffe)" (identifier "pbVar20") (+ "+") (parenthesized_expression "(uVar3 & 0xfffffffe)" (( "(") (binary_expression "uVar3 & 0xfffffffe" (identifier "uVar3") (& "&") (number_literal "0xfffffffe")) () ")")))) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (unaff_s3 < unaff_s2) {\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }" (if "if") (parenthesized_expression "(unaff_s3 < unaff_s2)" (( "(") (binary_expression "unaff_s3 < unaff_s2" (identifier "unaff_s3") (< "<") (identifier "unaff_s2")) () ")")) (compound_statement "{\n          do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);\n          return;\n        }" ({ "{") (do_statement "do {\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          } while (param_2 + unaff_s3 != pbVar4);" (do "do") (compound_statement "{\n            pbVar4 = pbVar11 + 1;\n            *pbVar11 = *unaff_s0;\n            pbVar11 = pbVar4;\n            unaff_s0 = unaff_s0 + 1;\n          }" ({ "{") (expression_statement "pbVar4 = pbVar11 + 1;" (assignment_expression "pbVar4 = pbVar11 + 1" (identifier "pbVar4") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pbVar11 = *unaff_s0;" (assignment_expression "*pbVar11 = *unaff_s0" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (pointer_expression "*unaff_s0" (* "*") (identifier "unaff_s0"))) (; ";")) (expression_statement "pbVar11 = pbVar4;" (assignment_expression "pbVar11 = pbVar4" (identifier "pbVar11") (= "=") (identifier "pbVar4")) (; ";")) (expression_statement "unaff_s0 = unaff_s0 + 1;" (assignment_expression "unaff_s0 = unaff_s0 + 1" (identifier "unaff_s0") (= "=") (binary_expression "unaff_s0 + 1" (identifier "unaff_s0") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_2 + unaff_s3 != pbVar4)" (( "(") (binary_expression "param_2 + unaff_s3 != pbVar4" (binary_expression "param_2 + unaff_s3" (identifier "param_2") (+ "+") (identifier "unaff_s3")) (!= "!=") (identifier "pbVar4")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "LAB_00030094:\n    pbVar11 = param_2;" (statement_identifier "LAB_00030094") (: ":") (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";"))) (while_statement "while( true ) {\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);\n      bVar2 = unaff_s3 <= unaff_s1;\n      unaff_s3 = unaff_s3 - unaff_s1;\n      if (bVar2) break;\n      param_2 = pbVar4 + (uVar3 & 0xfffffffc);\n      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);\n      uVar14 = 0;\n      pbVar11 = param_2;\n      if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }\n    }" ({ "{") (do_statement "do {\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);" (do "do") (compound_statement "{\n        pbVar4 = param_2 + 4;\n        uVar12 = *(undefined4 *)unaff_s0;\n        unaff_s0 = unaff_s0 + 4;\n        *(undefined4 *)param_2 = uVar12;\n        param_2 = pbVar4;\n      }" ({ "{") (expression_statement "pbVar4 = param_2 + 4;" (assignment_expression "pbVar4 = param_2 + 4" (identifier "pbVar4") (= "=") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar12 = *(undefined4 *)unaff_s0;" (assignment_expression "uVar12 = *(undefined4 *)unaff_s0" (identifier "uVar12") (= "=") (pointer_expression "*(undefined4 *)unaff_s0" (* "*") (cast_expression "(undefined4 *)unaff_s0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "unaff_s0")))) (; ";")) (expression_statement "unaff_s0 = unaff_s0 + 4;" (assignment_expression "unaff_s0 = unaff_s0 + 4" (identifier "unaff_s0") (= "=") (binary_expression "unaff_s0 + 4" (identifier "unaff_s0") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "*(undefined4 *)param_2 = uVar12;" (assignment_expression "*(undefined4 *)param_2 = uVar12" (pointer_expression "*(undefined4 *)param_2" (* "*") (cast_expression "(undefined4 *)param_2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (= "=") (identifier "uVar12")) (; ";")) (expression_statement "param_2 = pbVar4;" (assignment_expression "param_2 = pbVar4" (identifier "param_2") (= "=") (identifier "pbVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0)" (( "(") (binary_expression "pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0" (binary_expression "pbVar11 + (unaff_s2 - (int)pbVar4)" (identifier "pbVar11") (+ "+") (parenthesized_expression "(unaff_s2 - (int)pbVar4)" (( "(") (binary_expression "unaff_s2 - (int)pbVar4" (identifier "unaff_s2") (- "-") (cast_expression "(int)pbVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar4"))) () ")"))) (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "bVar2 = unaff_s3 <= unaff_s1;" (assignment_expression "bVar2 = unaff_s3 <= unaff_s1" (identifier "bVar2") (= "=") (binary_expression "unaff_s3 <= unaff_s1" (identifier "unaff_s3") (<= "<=") (identifier "unaff_s1"))) (; ";")) (expression_statement "unaff_s3 = unaff_s3 - unaff_s1;" (assignment_expression "unaff_s3 = unaff_s3 - unaff_s1" (identifier "unaff_s3") (= "=") (binary_expression "unaff_s3 - unaff_s1" (identifier "unaff_s3") (- "-") (identifier "unaff_s1"))) (; ";")) (if_statement "if (bVar2) break;" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_2 = pbVar4 + (uVar3 & 0xfffffffc);" (assignment_expression "param_2 = pbVar4 + (uVar3 & 0xfffffffc)" (identifier "param_2") (= "=") (binary_expression "pbVar4 + (uVar3 & 0xfffffffc)" (identifier "pbVar4") (+ "+") (parenthesized_expression "(uVar3 & 0xfffffffc)" (( "(") (binary_expression "uVar3 & 0xfffffffc" (identifier "uVar3") (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (expression_statement "unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);" (assignment_expression "unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc)" (identifier "unaff_s0") (= "=") (binary_expression "unaff_s0 + (uVar3 & 0xfffffffc)" (identifier "unaff_s0") (+ "+") (parenthesized_expression "(uVar3 & 0xfffffffc)" (( "(") (binary_expression "uVar3 & 0xfffffffc" (identifier "uVar3") (& "&") (number_literal "0xfffffffc")) () ")")))) (; ";")) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar11 = param_2;" (assignment_expression "pbVar11 = param_2" (identifier "pbVar11") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (unaff_s3 < unaff_s2) {\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }" (if "if") (parenthesized_expression "(unaff_s3 < unaff_s2)" (( "(") (binary_expression "unaff_s3 < unaff_s2" (identifier "unaff_s3") (< "<") (identifier "unaff_s2")) () ")")) (compound_statement "{\n        do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);\n        return;\n      }" ({ "{") (do_statement "do {\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        } while (uVar14 != unaff_s3);" (do "do") (compound_statement "{\n          pbVar4 = unaff_s0 + uVar14;\n          pbVar11 = param_2 + uVar14;\n          uVar14 = uVar14 + 1;\n          *pbVar11 = *pbVar4;\n        }" ({ "{") (expression_statement "pbVar4 = unaff_s0 + uVar14;" (assignment_expression "pbVar4 = unaff_s0 + uVar14" (identifier "pbVar4") (= "=") (binary_expression "unaff_s0 + uVar14" (identifier "unaff_s0") (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "pbVar11 = param_2 + uVar14;" (assignment_expression "pbVar11 = param_2 + uVar14" (identifier "pbVar11") (= "=") (binary_expression "param_2 + uVar14" (identifier "param_2") (+ "+") (identifier "uVar14"))) (; ";")) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pbVar11 = *pbVar4;" (assignment_expression "*pbVar11 = *pbVar4" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar14 != unaff_s3)" (( "(") (binary_expression "uVar14 != unaff_s3" (identifier "uVar14") (!= "!=") (identifier "unaff_s3")) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98);" (assignment_expression "puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98)" (identifier "puVar13") (= "=") (cast_expression "(uint *)(PTR_s_nt_0005301c + 0xb98)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_nt_0005301c + 0xb98)" (( "(") (binary_expression "PTR_s_nt_0005301c + 0xb98" (identifier "PTR_s_nt_0005301c") (+ "+") (number_literal "0xb98")) () ")")))) (; ";")) (expression_statement "puVar27 = PTR_png_error_0005340c;" (assignment_expression "puVar27 = PTR_png_error_0005340c" (identifier "puVar27") (= "=") (identifier "PTR_png_error_0005340c")) (; ";")) (expression_statement "(*(code *)PTR_png_error_0005340c)();" (call_expression "(*(code *)PTR_png_error_0005340c)()" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" (( "(") (pointer_expression "*(code *)PTR_png_error_0005340c" (* "*") (cast_expression "(code *)PTR_png_error_0005340c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_error_0005340c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "piVar21 = *(int **)(puVar27 + 0x233b0);" (assignment_expression "piVar21 = *(int **)(puVar27 + 0x233b0)" (identifier "piVar21") (= "=") (pointer_expression "*(int **)(puVar27 + 0x233b0)" (* "*") (cast_expression "(int **)(puVar27 + 0x233b0)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + 0x233b0)" (( "(") (binary_expression "puVar27 + 0x233b0" (identifier "puVar27") (+ "+") (number_literal "0x233b0")) () ")"))))) (; ";")) (expression_statement "iStack_5c = *piVar21;" (assignment_expression "iStack_5c = *piVar21" (identifier "iStack_5c") (= "=") (pointer_expression "*piVar21" (* "*") (identifier "piVar21"))) (; ";")) (expression_statement "puVar10 = param_1;" (assignment_expression "puVar10 = param_1" (identifier "puVar10") (= "=") (identifier "param_1")) (; ";")) (expression_statement "pbStack_58 = unaff_s0;" (assignment_expression "pbStack_58 = unaff_s0" (identifier "pbStack_58") (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "uStack_54 = uVar15;" (assignment_expression "uStack_54 = uVar15" (identifier "uStack_54") (= "=") (identifier "uVar15")) (; ";")) (expression_statement "uStack_50 = unaff_s2;" (assignment_expression "uStack_50 = unaff_s2" (identifier "uStack_50") (= "=") (identifier "unaff_s2")) (; ";")) (if_statement "if ((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)) goto LAB_00030268;" (if "if") (parenthesized_expression "((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0))" (( "(") (binary_expression "(puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)" (parenthesized_expression "(puVar13 == (uint *)0x0)" (( "(") (binary_expression "puVar13 == (uint *)0x0" (identifier "puVar13") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(param_1 == (uint *)0x0)" (( "(") (binary_expression "param_1 == (uint *)0x0" (identifier "param_1") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (goto_statement "goto LAB_00030268;" (goto "goto") (statement_identifier "LAB_00030268") (; ";"))) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" (identifier "uVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" (identifier "uVar15") (= "=") (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0xb)" (( "(") (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0xb")) () ")"))))) (; ";")) (expression_statement "uVar23 = uVar3 - 1;" (assignment_expression "uVar23 = uVar3 - 1" (identifier "uVar23") (= "=") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1"))) (; ";")) (expression_statement "param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40);" (assignment_expression "param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40)" (identifier "param_3") (= "=") (cast_expression "(byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40)" (( "(") (binary_expression "(int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40" (binary_expression "(int)param_3 * 4 + *(int *)(puVar27 + 0x22f10)" (binary_expression "(int)param_3 * 4" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "4")) (+ "+") (pointer_expression "*(int *)(puVar27 + 0x22f10)" (* "*") (cast_expression "(int *)(puVar27 + 0x22f10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar27 + 0x22f10)" (( "(") (binary_expression "puVar27 + 0x22f10" (identifier "puVar27") (+ "+") (number_literal "0x22f10")) () ")"))))) (+ "+") (number_literal "0xd40")) () ")")))) (; ";")) (expression_statement "iVar7 = *(int *)param_3;" (assignment_expression "iVar7 = *(int *)param_3" (identifier "iVar7") (= "=") (pointer_expression "*(int *)param_3" (* "*") (cast_expression "(int *)param_3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_3")))) (; ";")) (expression_statement "puVar5 = (uint *)(uVar3 * iVar7);" (assignment_expression "puVar5 = (uint *)(uVar3 * iVar7)" (identifier "puVar5") (= "=") (cast_expression "(uint *)(uVar3 * iVar7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 * iVar7)" (( "(") (binary_expression "uVar3 * iVar7" (identifier "uVar3") (* "*") (identifier "iVar7")) () ")")))) (; ";")) (expression_statement "pbVar11 = (byte *)((int)puVar5 + -1);" (assignment_expression "pbVar11 = (byte *)((int)puVar5 + -1)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)((int)puVar5 + -1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + -1)" (( "(") (binary_expression "(int)puVar5 + -1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (if_statement "if (uVar15 == 2) {\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }\n  else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }" (if "if") (parenthesized_expression "(uVar15 == 2)" (( "(") (binary_expression "uVar15 == 2" (identifier "uVar15") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));\n    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));\n    puVar13 = (uint *)(uVar3 + 3);\n    if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }\n    pbVar26 = (byte *)((uint)puVar24 & 6);\n    param_3 = (byte *)(uVar23 & 6);\n    uVar23 = 0;\n    if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }\nLAB_000302a4:\n    *param_1 = (uint)puVar5;\n  }" ({ "{") (expression_statement "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));" (assignment_expression "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2))" (identifier "pbVar4") (= "=") (cast_expression "(byte *)((int)puVar13 + (uVar23 >> 2))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + (uVar23 >> 2))" (( "(") (binary_expression "(int)puVar13 + (uVar23 >> 2)" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (parenthesized_expression "(uVar23 >> 2)" (( "(") (binary_expression "uVar23 >> 2" (identifier "uVar23") (>> ">>") (number_literal "2")) () ")"))) () ")")))) (; ";")) (expression_statement "puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));" (assignment_expression "puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2))" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)puVar13 + ((uint)pbVar11 >> 2))" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + ((uint)pbVar11 >> 2))" (( "(") (binary_expression "(int)puVar13 + ((uint)pbVar11 >> 2)" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (parenthesized_expression "((uint)pbVar11 >> 2)" (( "(") (binary_expression "(uint)pbVar11 >> 2" (cast_expression "(uint)pbVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar11")) (>> ">>") (number_literal "2")) () ")"))) () ")")))) (; ";")) (expression_statement "puVar13 = (uint *)(uVar3 + 3);" (assignment_expression "puVar13 = (uint *)(uVar3 + 3)" (identifier "puVar13") (= "=") (cast_expression "(uint *)(uVar3 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 + 3)" (( "(") (binary_expression "uVar3 + 3" (identifier "uVar3") (+ "+") (number_literal "3")) () ")")))) (; ";")) (if_statement "if ((uVar14 & 0x10000) == 0) {\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }\n    else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }" (if "if") (parenthesized_expression "((uVar14 & 0x10000) == 0)" (( "(") (binary_expression "(uVar14 & 0x10000) == 0" (parenthesized_expression "(uVar14 & 0x10000)" (( "(") (binary_expression "uVar14 & 0x10000" (identifier "uVar14") (& "&") (number_literal "0x10000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar24 = (uint *)(~(uint)puVar13 << 1);\n      uVar23 = ~(uint)((int)puVar5 + 3) << 1;\n      iVar17 = 2;\n      pbVar20 = &DAT_00000006;\n      pbVar11 = (byte *)0x0;\n    }" ({ "{") (expression_statement "puVar24 = (uint *)(~(uint)puVar13 << 1);" (assignment_expression "puVar24 = (uint *)(~(uint)puVar13 << 1)" (identifier "puVar24") (= "=") (cast_expression "(uint *)(~(uint)puVar13 << 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(~(uint)puVar13 << 1)" (( "(") (binary_expression "~(uint)puVar13 << 1" (unary_expression "~(uint)puVar13" (~ "~") (cast_expression "(uint)puVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar13"))) (<< "<<") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar23 = ~(uint)((int)puVar5 + 3) << 1;" (assignment_expression "uVar23 = ~(uint)((int)puVar5 + 3) << 1" (identifier "uVar23") (= "=") (binary_expression "~(uint)((int)puVar5 + 3) << 1" (unary_expression "~(uint)((int)puVar5 + 3)" (~ "~") (call_expression "(uint)((int)puVar5 + 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar5 + 3)" (( "(") (binary_expression "(int)puVar5 + 3" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "3")) () ")")))) (<< "<<") (number_literal "1"))) (; ";")) (expression_statement "iVar17 = 2;" (assignment_expression "iVar17 = 2" (identifier "iVar17") (= "=") (number_literal "2")) (; ";")) (expression_statement "pbVar20 = &DAT_00000006;" (assignment_expression "pbVar20 = &DAT_00000006" (identifier "pbVar20") (= "=") (pointer_expression "&DAT_00000006" (& "&") (identifier "DAT_00000006"))) (; ";")) (expression_statement "pbVar11 = (byte *)0x0;" (assignment_expression "pbVar11 = (byte *)0x0" (identifier "pbVar11") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }" (else "else") (compound_statement "{\n      puVar13 = (uint *)((int)puVar13 * 2);\n      uVar23 = (int)((int)puVar5 + 3) * 2;\n      iVar17 = -2;\n      pbVar20 = (byte *)0x0;\n      pbVar11 = &DAT_00000006;\n      puVar24 = puVar13;\n    }" ({ "{") (expression_statement "puVar13 = (uint *)((int)puVar13 * 2);" (assignment_expression "puVar13 = (uint *)((int)puVar13 * 2)" (identifier "puVar13") (= "=") (cast_expression "(uint *)((int)puVar13 * 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 * 2)" (( "(") (binary_expression "(int)puVar13 * 2" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (* "*") (number_literal "2")) () ")")))) (; ";")) (expression_statement "uVar23 = (int)((int)puVar5 + 3) * 2;" (assignment_expression "uVar23 = (int)((int)puVar5 + 3) * 2" (identifier "uVar23") (= "=") (binary_expression "(int)((int)puVar5 + 3) * 2" (cast_expression "(int)((int)puVar5 + 3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar5 + 3)" (( "(") (binary_expression "(int)puVar5 + 3" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "3")) () ")"))) (* "*") (number_literal "2"))) (; ";")) (expression_statement "iVar17 = -2;" (assignment_expression "iVar17 = -2" (identifier "iVar17") (= "=") (number_literal "-2")) (; ";")) (expression_statement "pbVar20 = (byte *)0x0;" (assignment_expression "pbVar20 = (byte *)0x0" (identifier "pbVar20") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pbVar11 = &DAT_00000006;" (assignment_expression "pbVar11 = &DAT_00000006" (identifier "pbVar11") (= "=") (pointer_expression "&DAT_00000006" (& "&") (identifier "DAT_00000006"))) (; ";")) (expression_statement "puVar24 = puVar13;" (assignment_expression "puVar24 = puVar13" (identifier "puVar24") (= "=") (identifier "puVar13")) (; ";")) (} "}")))) (expression_statement "pbVar26 = (byte *)((uint)puVar24 & 6);" (assignment_expression "pbVar26 = (byte *)((uint)puVar24 & 6)" (identifier "pbVar26") (= "=") (cast_expression "(byte *)((uint)puVar24 & 6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)puVar24 & 6)" (( "(") (binary_expression "(uint)puVar24 & 6" (cast_expression "(uint)puVar24" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar24")) (& "&") (number_literal "6")) () ")")))) (; ";")) (expression_statement "param_3 = (byte *)(uVar23 & 6);" (assignment_expression "param_3 = (byte *)(uVar23 & 6)" (identifier "param_3") (= "=") (cast_expression "(byte *)(uVar23 & 6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar23 & 6)" (( "(") (binary_expression "uVar23 & 6" (identifier "uVar23") (& "&") (number_literal "6")) () ")")))) (; ";")) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" (identifier "uVar23") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar3 != 0) {\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      goto LAB_0003024c;\n    }" ({ "{") (do_statement "do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);" (do "do") (compound_statement "{\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      }" ({ "{") (expression_statement "bVar9 = *pbVar4;" (assignment_expression "bVar9 = *pbVar4" (identifier "bVar9") (= "=") (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4"))) (; ";")) (if_statement "if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }" (if "if") (parenthesized_expression "(0 < iVar7)" (( "(") (binary_expression "0 < iVar7" (number_literal "0") (< "<") (identifier "iVar7")) () ")")) (compound_statement "{\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }" ({ "{") (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" (identifier "iVar25") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);" (do "do") (compound_statement "{\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          }" ({ "{") (while_statement "while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              iVar6 = iVar25;\n              uVar14 = (uint)*(byte *)puVar10;\n              *(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;\n              if (pbVar20 != param_3) break;\n              puVar10 = (uint *)((int)puVar10 + -1);\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar11;\n              if (iVar6 + 1 == iVar7) goto LAB_0003051c;\n            }" ({ "{") (expression_statement "iVar6 = iVar25;" (assignment_expression "iVar6 = iVar25" (identifier "iVar6") (= "=") (identifier "iVar25")) (; ";")) (expression_statement "uVar14 = (uint)*(byte *)puVar10;" (assignment_expression "uVar14 = (uint)*(byte *)puVar10" (identifier "uVar14") (= "=") (binary_expression "(uint)*(byte *)puVar10" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)puVar10" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar10")))) (; ";")) (expression_statement "*(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;" (assignment_expression "*(byte *)puVar10 =\n                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10" (pointer_expression "*(byte *)puVar10" (* "*") (cast_expression "(byte *)puVar10" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar10"))) (= "=") (binary_expression "(byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)) |\n                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10" (call_expression "(byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f))" (( "(") (binary_expression "((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<\n                         ((uint)param_3 & 0x1f)" (parenthesized_expression "((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U)" (( "(") (binary_expression "(int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U" (binary_expression "(int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f)" (cast_expression "(int)(uint)bVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(uint)bVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar9"))) (>> ">>") (parenthesized_expression "((uint)pbVar26 & 0x1f)" (( "(") (binary_expression "(uint)pbVar26 & 0x1f" (cast_expression "(uint)pbVar26" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar26")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "3U")) () ")")) (<< "<<") (parenthesized_expression "((uint)param_3 & 0x1f)" (( "(") (binary_expression "(uint)param_3 & 0x1f" (cast_expression "(uint)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_3")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (| "|") (binary_expression "(byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10" (call_expression "(byte)(0x3f3f >> (6U - (int)param_3 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(0x3f3f >> (6U - (int)param_3 & 0x1f))" (( "(") (binary_expression "0x3f3f >> (6U - (int)param_3 & 0x1f)" (number_literal "0x3f3f") (>> ">>") (parenthesized_expression "(6U - (int)param_3 & 0x1f)" (( "(") (binary_expression "6U - (int)param_3 & 0x1f" (binary_expression "6U - (int)param_3" (number_literal "6U") (- "-") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (pointer_expression "*(byte *)puVar10" (* "*") (cast_expression "(byte *)puVar10" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar10")))))) (; ";")) (if_statement "if (pbVar20 != param_3) break;" (if "if") (parenthesized_expression "(pbVar20 != param_3)" (( "(") (binary_expression "pbVar20 != param_3" (identifier "pbVar20") (!= "!=") (identifier "param_3")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar10 = (uint *)((int)puVar10 + -1);" (assignment_expression "puVar10 = (uint *)((int)puVar10 + -1)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)puVar10 + -1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + -1)" (( "(") (binary_expression "(int)puVar10 + -1" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "-1")) () ")")))) (; ";")) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" (identifier "iVar25") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_3 = pbVar11;" (assignment_expression "param_3 = pbVar11" (identifier "param_3") (= "=") (identifier "pbVar11")) (; ";")) (if_statement "if (iVar6 + 1 == iVar7) goto LAB_0003051c;" (if "if") (parenthesized_expression "(iVar6 + 1 == iVar7)" (( "(") (binary_expression "iVar6 + 1 == iVar7" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (== "==") (identifier "iVar7")) () ")")) (goto_statement "goto LAB_0003051c;" (goto "goto") (statement_identifier "LAB_0003051c") (; ";"))) (} "}"))) (expression_statement "param_3 = param_3 + iVar17;" (assignment_expression "param_3 = param_3 + iVar17" (identifier "param_3") (= "=") (binary_expression "param_3 + iVar17" (identifier "param_3") (+ "+") (identifier "iVar17"))) (; ";")) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" (identifier "iVar25") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 + 1 != iVar7)" (( "(") (binary_expression "iVar6 + 1 != iVar7" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (!= "!=") (identifier "iVar7")) () ")")) (; ";")) (labeled_statement "LAB_0003051c:\n          puVar13 = (uint *)(iVar6 + 1);" (statement_identifier "LAB_0003051c") (: ":") (expression_statement "puVar13 = (uint *)(iVar6 + 1);" (assignment_expression "puVar13 = (uint *)(iVar6 + 1)" (identifier "puVar13") (= "=") (cast_expression "(uint *)(iVar6 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 1)" (( "(") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) () ")")))) (; ";"))) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" (identifier "uVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}"))) (if_statement "if (pbVar20 == pbVar26) {\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }\n        else {\n          pbVar26 = pbVar26 + iVar17;\n        }" (if "if") (parenthesized_expression "(pbVar20 == pbVar26)" (( "(") (binary_expression "pbVar20 == pbVar26" (identifier "pbVar20") (== "==") (identifier "pbVar26")) () ")")) (compound_statement "{\n          pbVar4 = pbVar4 + -1;\n          pbVar26 = pbVar11;\n        }" ({ "{") (expression_statement "pbVar4 = pbVar4 + -1;" (assignment_expression "pbVar4 = pbVar4 + -1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + -1" (identifier "pbVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "pbVar26 = pbVar11;" (assignment_expression "pbVar26 = pbVar11" (identifier "pbVar26") (= "=") (identifier "pbVar11")) (; ";")) (} "}")) (else_clause "else {\n          pbVar26 = pbVar26 + iVar17;\n        }" (else "else") (compound_statement "{\n          pbVar26 = pbVar26 + iVar17;\n        }" ({ "{") (expression_statement "pbVar26 = pbVar26 + iVar17;" (assignment_expression "pbVar26 = pbVar26 + iVar17" (identifier "pbVar26") (= "=") (binary_expression "pbVar26 + iVar17" (identifier "pbVar26") (+ "+") (identifier "iVar17"))) (; ";")) (} "}")))) (expression_statement "uVar23 = uVar23 + 1;" (assignment_expression "uVar23 = uVar23 + 1" (identifier "uVar23") (= "=") (binary_expression "uVar23 + 1" (identifier "uVar23") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar23 < uVar3)" (( "(") (binary_expression "uVar23 < uVar3" (identifier "uVar23") (< "<") (identifier "uVar3")) () ")")) (; ";")) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" (identifier "uVar15") (= "=") (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0xb)" (( "(") (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0xb")) () ")"))))) (; ";")) (goto_statement "goto LAB_0003024c;" (goto "goto") (statement_identifier "LAB_0003024c") (; ";")) (} "}"))) (labeled_statement "LAB_000302a4:\n    *param_1 = (uint)puVar5;" (statement_identifier "LAB_000302a4") (: ":") (expression_statement "*param_1 = (uint)puVar5;" (assignment_expression "*param_1 = (uint)puVar5" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(uint)puVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar5"))) (; ";"))) (} "}")) (else_clause "else {\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }" (else "else") (compound_statement "{\n    if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }\nLAB_0003024c:\n    *param_1 = (uint)puVar5;\n    if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }\n  }" ({ "{") (if_statement "if (uVar15 == 4) {\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }\n    else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(uVar15 == 4)" (( "(") (binary_expression "uVar15 == 4" (identifier "uVar15") (== "==") (number_literal "4")) () ")")) (compound_statement "{\n      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));\n      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));\n      if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }\n      uVar23 = 0;\n      puVar13 = puVar5;\n      if (uVar3 == 0) goto LAB_000302a4;\n      do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);\n      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      puVar10 = (uint *)0x0;\n    }" ({ "{") (expression_statement "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));" (assignment_expression "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1))" (identifier "pbVar4") (= "=") (cast_expression "(byte *)((int)puVar13 + (uVar23 >> 1))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + (uVar23 >> 1))" (( "(") (binary_expression "(int)puVar13 + (uVar23 >> 1)" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (parenthesized_expression "(uVar23 >> 1)" (( "(") (binary_expression "uVar23 >> 1" (identifier "uVar23") (>> ">>") (number_literal "1")) () ")"))) () ")")))) (; ";")) (expression_statement "pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));" (assignment_expression "pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1))" (identifier "pbVar11") (= "=") (cast_expression "(byte *)((int)puVar13 + ((uint)pbVar11 >> 1))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + ((uint)pbVar11 >> 1))" (( "(") (binary_expression "(int)puVar13 + ((uint)pbVar11 >> 1)" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (parenthesized_expression "((uint)pbVar11 >> 1)" (( "(") (binary_expression "(uint)pbVar11 >> 1" (cast_expression "(uint)pbVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar11")) (>> ">>") (number_literal "1")) () ")"))) () ")")))) (; ";")) (if_statement "if ((uVar14 & 0x10000) == 0) {\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }\n      else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }" (if "if") (parenthesized_expression "((uVar14 & 0x10000) == 0)" (( "(") (binary_expression "(uVar14 & 0x10000) == 0" (parenthesized_expression "(uVar14 & 0x10000)" (( "(") (binary_expression "uVar14 & 0x10000" (identifier "uVar14") (& "&") (number_literal "0x10000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar10 = (uint *)(uVar3 + 1 & 1);\n        pbVar20 = &DAT_00000004;\n        if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }\n        if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }\n      }" ({ "{") (expression_statement "puVar10 = (uint *)(uVar3 + 1 & 1);" (assignment_expression "puVar10 = (uint *)(uVar3 + 1 & 1)" (identifier "puVar10") (= "=") (cast_expression "(uint *)(uVar3 + 1 & 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar3 + 1 & 1)" (( "(") (binary_expression "uVar3 + 1 & 1" (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1")) (& "&") (number_literal "1")) () ")")))) (; ";")) (expression_statement "pbVar20 = &DAT_00000004;" (assignment_expression "pbVar20 = &DAT_00000004" (identifier "pbVar20") (= "=") (pointer_expression "&DAT_00000004" (& "&") (identifier "DAT_00000004"))) (; ";")) (if_statement "if (puVar10 != (uint *)0x0) {\n          pbVar20 = (byte *)0x0;\n        }" (if "if") (parenthesized_expression "(puVar10 != (uint *)0x0)" (( "(") (binary_expression "puVar10 != (uint *)0x0" (identifier "puVar10") (!= "!=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          pbVar20 = (byte *)0x0;\n        }" ({ "{") (expression_statement "pbVar20 = (byte *)0x0;" (assignment_expression "pbVar20 = (byte *)0x0" (identifier "pbVar20") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (if_statement "if (((uint)((int)puVar5 + 1) & 1) == 0) {\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }\n        else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }" (if "if") (parenthesized_expression "(((uint)((int)puVar5 + 1) & 1) == 0)" (( "(") (binary_expression "((uint)((int)puVar5 + 1) & 1) == 0" (parenthesized_expression "((uint)((int)puVar5 + 1) & 1)" (( "(") (binary_expression "(uint)((int)puVar5 + 1) & 1" (call_expression "(uint)((int)puVar5 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = &DAT_00000004;\n          pbVar26 = (byte *)0x0;\n        }" ({ "{") (expression_statement "iVar17 = 4;" (assignment_expression "iVar17 = 4" (identifier "iVar17") (= "=") (number_literal "4")) (; ";")) (expression_statement "pbVar16 = &DAT_00000004;" (assignment_expression "pbVar16 = &DAT_00000004" (identifier "pbVar16") (= "=") (pointer_expression "&DAT_00000004" (& "&") (identifier "DAT_00000004"))) (; ";")) (expression_statement "param_3 = &DAT_00000004;" (assignment_expression "param_3 = &DAT_00000004" (identifier "param_3") (= "=") (pointer_expression "&DAT_00000004" (& "&") (identifier "DAT_00000004"))) (; ";")) (expression_statement "pbVar26 = (byte *)0x0;" (assignment_expression "pbVar26 = (byte *)0x0" (identifier "pbVar26") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }" (else "else") (compound_statement "{\n          pbVar26 = (byte *)0x0;\n          iVar17 = 4;\n          pbVar16 = &DAT_00000004;\n          param_3 = (byte *)0x0;\n        }" ({ "{") (expression_statement "pbVar26 = (byte *)0x0;" (assignment_expression "pbVar26 = (byte *)0x0" (identifier "pbVar26") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "iVar17 = 4;" (assignment_expression "iVar17 = 4" (identifier "iVar17") (= "=") (number_literal "4")) (; ";")) (expression_statement "pbVar16 = &DAT_00000004;" (assignment_expression "pbVar16 = &DAT_00000004" (identifier "pbVar16") (= "=") (pointer_expression "&DAT_00000004" (& "&") (identifier "DAT_00000004"))) (; ";")) (expression_statement "param_3 = (byte *)0x0;" (assignment_expression "param_3 = (byte *)0x0" (identifier "param_3") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }" (else "else") (compound_statement "{\n        puVar10 = (uint *)((uVar3 + 1) * 4);\n        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);\n        iVar17 = -4;\n        pbVar16 = (byte *)0x0;\n        pbVar26 = &DAT_00000004;\n        pbVar20 = (byte *)((uint)puVar10 & 4);\n      }" ({ "{") (expression_statement "puVar10 = (uint *)((uVar3 + 1) * 4);" (assignment_expression "puVar10 = (uint *)((uVar3 + 1) * 4)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((uVar3 + 1) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uVar3 + 1) * 4)" (( "(") (binary_expression "(uVar3 + 1) * 4" (parenthesized_expression "(uVar3 + 1)" (( "(") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")) () ")")))) (; ";")) (expression_statement "param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);" (assignment_expression "param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4)" (identifier "param_3") (= "=") (cast_expression "(byte *)((int)((int)puVar5 + 1) * 4 & 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)((int)puVar5 + 1) * 4 & 4)" (( "(") (binary_expression "(int)((int)puVar5 + 1) * 4 & 4" (binary_expression "(int)((int)puVar5 + 1) * 4" (cast_expression "(int)((int)puVar5 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((int)puVar5 + 1)" (( "(") (binary_expression "(int)puVar5 + 1" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "1")) () ")"))) (* "*") (number_literal "4")) (& "&") (number_literal "4")) () ")")))) (; ";")) (expression_statement "iVar17 = -4;" (assignment_expression "iVar17 = -4" (identifier "iVar17") (= "=") (number_literal "-4")) (; ";")) (expression_statement "pbVar16 = (byte *)0x0;" (assignment_expression "pbVar16 = (byte *)0x0" (identifier "pbVar16") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pbVar26 = &DAT_00000004;" (assignment_expression "pbVar26 = &DAT_00000004" (identifier "pbVar26") (= "=") (pointer_expression "&DAT_00000004" (& "&") (identifier "DAT_00000004"))) (; ";")) (expression_statement "pbVar20 = (byte *)((uint)puVar10 & 4);" (assignment_expression "pbVar20 = (byte *)((uint)puVar10 & 4)" (identifier "pbVar20") (= "=") (cast_expression "(byte *)((uint)puVar10 & 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)puVar10 & 4)" (( "(") (binary_expression "(uint)puVar10 & 4" (cast_expression "(uint)puVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar10")) (& "&") (number_literal "4")) () ")")))) (; ";")) (} "}")))) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" (identifier "uVar23") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar13 = puVar5;" (assignment_expression "puVar13 = puVar5" (identifier "puVar13") (= "=") (identifier "puVar5")) (; ";")) (if_statement "if (uVar3 == 0) goto LAB_000302a4;" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000302a4;" (goto "goto") (statement_identifier "LAB_000302a4") (; ";"))) (do_statement "do {\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      } while (uVar23 < uVar3);" (do "do") (compound_statement "{\n        bVar9 = *pbVar4;\n        if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }\n        if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }\n        uVar23 = uVar23 + 1;\n      }" ({ "{") (expression_statement "bVar9 = *pbVar4;" (assignment_expression "bVar9 = *pbVar4" (identifier "bVar9") (= "=") (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4"))) (; ";")) (if_statement "if (0 < iVar7) {\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }" (if "if") (parenthesized_expression "(0 < iVar7)" (( "(") (binary_expression "0 < iVar7" (number_literal "0") (< "<") (identifier "iVar7")) () ")")) (compound_statement "{\n          iVar25 = 0;\n          do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);\nLAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);\n          uVar3 = *param_1;\n        }" ({ "{") (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" (identifier "iVar25") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          } while (iVar6 + 1 != iVar7);" (do "do") (compound_statement "{\n            while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }\n            param_3 = param_3 + iVar17;\n            iVar25 = iVar6 + 1;\n          }" ({ "{") (while_statement "while( true ) {\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              iVar6 = iVar25;\n              uVar14 = (uint)*pbVar11;\n              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;\n              if (pbVar16 != param_3) break;\n              pbVar11 = pbVar11 + -1;\n              iVar25 = iVar6 + 1;\n              param_3 = pbVar26;\n              if (iVar6 + 1 == iVar7) goto LAB_00030440;\n            }" ({ "{") (expression_statement "iVar6 = iVar25;" (assignment_expression "iVar6 = iVar25" (identifier "iVar6") (= "=") (identifier "iVar25")) (; ";")) (expression_statement "uVar14 = (uint)*pbVar11;" (assignment_expression "uVar14 = (uint)*pbVar11" (identifier "uVar14") (= "=") (binary_expression "(uint)*pbVar11" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar11"))) (; ";")) (expression_statement "*pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;" (assignment_expression "*pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (= "=") (binary_expression "(byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)) |\n                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11" (call_expression "(byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f))" (( "(") (binary_expression "((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<\n                               ((uint)param_3 & 0x1f)" (parenthesized_expression "((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU)" (( "(") (binary_expression "(int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU" (binary_expression "(int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f)" (cast_expression "(int)(uint)bVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(uint)bVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar9"))) (>> ">>") (parenthesized_expression "((uint)pbVar20 & 0x1f)" (( "(") (binary_expression "(uint)pbVar20 & 0x1f" (cast_expression "(uint)pbVar20" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar20")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "0xfU")) () ")")) (<< "<<") (parenthesized_expression "((uint)param_3 & 0x1f)" (( "(") (binary_expression "(uint)param_3 & 0x1f" (cast_expression "(uint)param_3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_3")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (| "|") (binary_expression "(byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11" (call_expression "(byte)(0xf0f >> (4U - (int)param_3 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(0xf0f >> (4U - (int)param_3 & 0x1f))" (( "(") (binary_expression "0xf0f >> (4U - (int)param_3 & 0x1f)" (number_literal "0xf0f") (>> ">>") (parenthesized_expression "(4U - (int)param_3 & 0x1f)" (( "(") (binary_expression "4U - (int)param_3 & 0x1f" (binary_expression "4U - (int)param_3" (number_literal "4U") (- "-") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11"))))) (; ";")) (if_statement "if (pbVar16 != param_3) break;" (if "if") (parenthesized_expression "(pbVar16 != param_3)" (( "(") (binary_expression "pbVar16 != param_3" (identifier "pbVar16") (!= "!=") (identifier "param_3")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar11 = pbVar11 + -1;" (assignment_expression "pbVar11 = pbVar11 + -1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + -1" (identifier "pbVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" (identifier "iVar25") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "param_3 = pbVar26;" (assignment_expression "param_3 = pbVar26" (identifier "param_3") (= "=") (identifier "pbVar26")) (; ";")) (if_statement "if (iVar6 + 1 == iVar7) goto LAB_00030440;" (if "if") (parenthesized_expression "(iVar6 + 1 == iVar7)" (( "(") (binary_expression "iVar6 + 1 == iVar7" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (== "==") (identifier "iVar7")) () ")")) (goto_statement "goto LAB_00030440;" (goto "goto") (statement_identifier "LAB_00030440") (; ";"))) (} "}"))) (expression_statement "param_3 = param_3 + iVar17;" (assignment_expression "param_3 = param_3 + iVar17" (identifier "param_3") (= "=") (binary_expression "param_3 + iVar17" (identifier "param_3") (+ "+") (identifier "iVar17"))) (; ";")) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" (identifier "iVar25") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 + 1 != iVar7)" (( "(") (binary_expression "iVar6 + 1 != iVar7" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (!= "!=") (identifier "iVar7")) () ")")) (; ";")) (labeled_statement "LAB_00030440:\n          puVar13 = (uint *)(iVar6 + 1);" (statement_identifier "LAB_00030440") (: ":") (expression_statement "puVar13 = (uint *)(iVar6 + 1);" (assignment_expression "puVar13 = (uint *)(iVar6 + 1)" (identifier "puVar13") (= "=") (cast_expression "(uint *)(iVar6 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 1)" (( "(") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) () ")")))) (; ";"))) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" (identifier "uVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}"))) (if_statement "if (pbVar16 == pbVar20) {\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }\n        else {\n          pbVar20 = pbVar20 + iVar17;\n        }" (if "if") (parenthesized_expression "(pbVar16 == pbVar20)" (( "(") (binary_expression "pbVar16 == pbVar20" (identifier "pbVar16") (== "==") (identifier "pbVar20")) () ")")) (compound_statement "{\n          pbVar4 = pbVar4 + -1;\n          pbVar20 = pbVar26;\n        }" ({ "{") (expression_statement "pbVar4 = pbVar4 + -1;" (assignment_expression "pbVar4 = pbVar4 + -1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + -1" (identifier "pbVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "pbVar20 = pbVar26;" (assignment_expression "pbVar20 = pbVar26" (identifier "pbVar20") (= "=") (identifier "pbVar26")) (; ";")) (} "}")) (else_clause "else {\n          pbVar20 = pbVar20 + iVar17;\n        }" (else "else") (compound_statement "{\n          pbVar20 = pbVar20 + iVar17;\n        }" ({ "{") (expression_statement "pbVar20 = pbVar20 + iVar17;" (assignment_expression "pbVar20 = pbVar20 + iVar17" (identifier "pbVar20") (= "=") (binary_expression "pbVar20 + iVar17" (identifier "pbVar20") (+ "+") (identifier "iVar17"))) (; ";")) (} "}")))) (expression_statement "uVar23 = uVar23 + 1;" (assignment_expression "uVar23 = uVar23 + 1" (identifier "uVar23") (= "=") (binary_expression "uVar23 + 1" (identifier "uVar23") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar23 < uVar3)" (( "(") (binary_expression "uVar23 < uVar3" (identifier "uVar23") (< "<") (identifier "uVar3")) () ")")) (; ";")) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" (identifier "uVar15") (= "=") (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0xb)" (( "(") (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0xb")) () ")"))))) (; ";")) (expression_statement "puVar10 = (uint *)0x0;" (assignment_expression "puVar10 = (uint *)0x0" (identifier "puVar10") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }" (else "else") (compound_statement "{\n      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);\n      if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }\n    }" ({ "{") (expression_statement "pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);" (assignment_expression "pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3)" (identifier "pbVar4") (= "=") (cast_expression "(byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(uint)(*(byte *)((int)param_1 + 0xb) >> 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(byte *)((int)param_1 + 0xb) >> 3)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0xb) >> 3" (pointer_expression "*(byte *)((int)param_1 + 0xb)" (* "*") (cast_expression "(byte *)((int)param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0xb)" (( "(") (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0xb")) () ")")))) (>> ">>") (number_literal "3")) () ")"))))) (; ";")) (if_statement "if (uVar15 == 1) {\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }\n      else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }" (if "if") (parenthesized_expression "(uVar15 == 1)" (( "(") (binary_expression "uVar15 == 1" (identifier "uVar15") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));\n        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));\n        uVar23 = uVar3 + 7;\n        pbVar11 = (byte *)((int)puVar5 + 7);\n        if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }\n        puVar18 = (uint *)(uVar23 & 7);\n        puVar10 = (uint *)((uint)pbVar11 & 7);\n        uVar23 = 0;\n        if (uVar3 == 0) goto LAB_000302a4;\n        do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);\n        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n      }" ({ "{") (expression_statement "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));" (assignment_expression "pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3))" (identifier "pbVar4") (= "=") (cast_expression "(byte *)((int)puVar13 + (uVar23 >> 3))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + (uVar23 >> 3))" (( "(") (binary_expression "(int)puVar13 + (uVar23 >> 3)" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (parenthesized_expression "(uVar23 >> 3)" (( "(") (binary_expression "uVar23 >> 3" (identifier "uVar23") (>> ">>") (number_literal "3")) () ")"))) () ")")))) (; ";")) (expression_statement "param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));" (assignment_expression "param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3))" (identifier "param_3") (= "=") (cast_expression "(byte *)((int)puVar13 + ((uint)pbVar11 >> 3))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar13 + ((uint)pbVar11 >> 3))" (( "(") (binary_expression "(int)puVar13 + ((uint)pbVar11 >> 3)" (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13")) (+ "+") (parenthesized_expression "((uint)pbVar11 >> 3)" (( "(") (binary_expression "(uint)pbVar11 >> 3" (cast_expression "(uint)pbVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar11")) (>> ">>") (number_literal "3")) () ")"))) () ")")))) (; ";")) (expression_statement "uVar23 = uVar3 + 7;" (assignment_expression "uVar23 = uVar3 + 7" (identifier "uVar23") (= "=") (binary_expression "uVar3 + 7" (identifier "uVar3") (+ "+") (number_literal "7"))) (; ";")) (expression_statement "pbVar11 = (byte *)((int)puVar5 + 7);" (assignment_expression "pbVar11 = (byte *)((int)puVar5 + 7)" (identifier "pbVar11") (= "=") (cast_expression "(byte *)((int)puVar5 + 7)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar5 + 7)" (( "(") (binary_expression "(int)puVar5 + 7" (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")) (+ "+") (number_literal "7")) () ")")))) (; ";")) (if_statement "if ((uVar14 & 0x10000) == 0) {\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }\n        else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }" (if "if") (parenthesized_expression "((uVar14 & 0x10000) == 0)" (( "(") (binary_expression "(uVar14 & 0x10000) == 0" (parenthesized_expression "(uVar14 & 0x10000)" (( "(") (binary_expression "uVar14 & 0x10000" (identifier "uVar14") (& "&") (number_literal "0x10000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar23 = ~uVar23;\n          pbVar11 = (byte *)~(uint)pbVar11;\n          iVar17 = 1;\n          puVar8 = (uint *)&DAT_00000007;\n          puVar24 = (uint *)0x0;\n        }" ({ "{") (expression_statement "uVar23 = ~uVar23;" (assignment_expression "uVar23 = ~uVar23" (identifier "uVar23") (= "=") (unary_expression "~uVar23" (~ "~") (identifier "uVar23"))) (; ";")) (expression_statement "pbVar11 = (byte *)~(uint)pbVar11;" (assignment_expression "pbVar11 = (byte *)~(uint)pbVar11" (identifier "pbVar11") (= "=") (cast_expression "(byte *)~(uint)pbVar11" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (unary_expression "~(uint)pbVar11" (~ "~") (cast_expression "(uint)pbVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar11"))))) (; ";")) (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" (identifier "iVar17") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar8 = (uint *)&DAT_00000007;" (assignment_expression "puVar8 = (uint *)&DAT_00000007" (identifier "puVar8") (= "=") (cast_expression "(uint *)&DAT_00000007" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000007" (& "&") (identifier "DAT_00000007")))) (; ";")) (expression_statement "puVar24 = (uint *)0x0;" (assignment_expression "puVar24 = (uint *)0x0" (identifier "puVar24") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }" (else "else") (compound_statement "{\n          iVar17 = -1;\n          puVar8 = (uint *)0x0;\n          puVar24 = (uint *)&DAT_00000007;\n        }" ({ "{") (expression_statement "iVar17 = -1;" (assignment_expression "iVar17 = -1" (identifier "iVar17") (= "=") (number_literal "-1")) (; ";")) (expression_statement "puVar8 = (uint *)0x0;" (assignment_expression "puVar8 = (uint *)0x0" (identifier "puVar8") (= "=") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "puVar24 = (uint *)&DAT_00000007;" (assignment_expression "puVar24 = (uint *)&DAT_00000007" (identifier "puVar24") (= "=") (cast_expression "(uint *)&DAT_00000007" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "&DAT_00000007" (& "&") (identifier "DAT_00000007")))) (; ";")) (} "}")))) (expression_statement "puVar18 = (uint *)(uVar23 & 7);" (assignment_expression "puVar18 = (uint *)(uVar23 & 7)" (identifier "puVar18") (= "=") (cast_expression "(uint *)(uVar23 & 7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar23 & 7)" (( "(") (binary_expression "uVar23 & 7" (identifier "uVar23") (& "&") (number_literal "7")) () ")")))) (; ";")) (expression_statement "puVar10 = (uint *)((uint)pbVar11 & 7);" (assignment_expression "puVar10 = (uint *)((uint)pbVar11 & 7)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((uint)pbVar11 & 7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)pbVar11 & 7)" (( "(") (binary_expression "(uint)pbVar11 & 7" (cast_expression "(uint)pbVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar11")) (& "&") (number_literal "7")) () ")")))) (; ";")) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" (identifier "uVar23") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar3 == 0) goto LAB_000302a4;" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000302a4;" (goto "goto") (statement_identifier "LAB_000302a4") (; ";"))) (do_statement "do {\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        } while (uVar23 < uVar3);" (do "do") (compound_statement "{\n          bVar9 = *pbVar4;\n          if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }\n          if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }\n          uVar23 = uVar23 + 1;\n        }" ({ "{") (expression_statement "bVar9 = *pbVar4;" (assignment_expression "bVar9 = *pbVar4" (identifier "bVar9") (= "=") (pointer_expression "*pbVar4" (* "*") (identifier "pbVar4"))) (; ";")) (if_statement "if (0 < iVar7) {\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }" (if "if") (parenthesized_expression "(0 < iVar7)" (( "(") (binary_expression "0 < iVar7" (number_literal "0") (< "<") (identifier "iVar7")) () ")")) (compound_statement "{\n            iVar25 = 0;\n            do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);\nLAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);\n            uVar3 = *param_1;\n          }" ({ "{") (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" (identifier "iVar25") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            } while (iVar6 + 1 != iVar7);" (do "do") (compound_statement "{\n              while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }\n              puVar10 = (uint *)((int)puVar10 + iVar17);\n              iVar25 = iVar6 + 1;\n            }" ({ "{") (while_statement "while( true ) {\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                iVar6 = iVar25;\n                uVar14 = (uint)*param_3;\n                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;\n                if (puVar8 != puVar10) break;\n                param_3 = param_3 + -1;\n                puVar10 = puVar24;\n                iVar25 = iVar6 + 1;\n                if (iVar6 + 1 == iVar7) goto LAB_00030364;\n              }" ({ "{") (expression_statement "iVar6 = iVar25;" (assignment_expression "iVar6 = iVar25" (identifier "iVar6") (= "=") (identifier "iVar25")) (; ";")) (expression_statement "uVar14 = (uint)*param_3;" (assignment_expression "uVar14 = (uint)*param_3" (identifier "uVar14") (= "=") (binary_expression "(uint)*param_3" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_3"))) (; ";")) (expression_statement "*param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;" (assignment_expression "*param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (binary_expression "(byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)) |\n                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3" (call_expression "(byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f))" (( "(") (binary_expression "((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<\n                                 ((uint)puVar10 & 0x1f)" (parenthesized_expression "((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U)" (( "(") (binary_expression "(int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U" (binary_expression "(int)(uint)bVar9 >> ((uint)puVar18 & 0x1f)" (cast_expression "(int)(uint)bVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(uint)bVar9" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar9"))) (>> ">>") (parenthesized_expression "((uint)puVar18 & 0x1f)" (( "(") (binary_expression "(uint)puVar18 & 0x1f" (cast_expression "(uint)puVar18" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar18")) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1U")) () ")")) (<< "<<") (parenthesized_expression "((uint)puVar10 & 0x1f)" (( "(") (binary_expression "(uint)puVar10 & 0x1f" (cast_expression "(uint)puVar10" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar10")) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (| "|") (binary_expression "(byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3" (call_expression "(byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(0x7f7f >> (7U - (int)puVar10 & 0x1f))" (( "(") (binary_expression "0x7f7f >> (7U - (int)puVar10 & 0x1f)" (number_literal "0x7f7f") (>> ">>") (parenthesized_expression "(7U - (int)puVar10 & 0x1f)" (( "(") (binary_expression "7U - (int)puVar10 & 0x1f" (binary_expression "7U - (int)puVar10" (number_literal "7U") (- "-") (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10"))) (& "&") (number_literal "0x1f")) () ")"))) () ")"))) (& "&") (pointer_expression "*param_3" (* "*") (identifier "param_3"))))) (; ";")) (if_statement "if (puVar8 != puVar10) break;" (if "if") (parenthesized_expression "(puVar8 != puVar10)" (( "(") (binary_expression "puVar8 != puVar10" (identifier "puVar8") (!= "!=") (identifier "puVar10")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "param_3 = param_3 + -1;" (assignment_expression "param_3 = param_3 + -1" (identifier "param_3") (= "=") (binary_expression "param_3 + -1" (identifier "param_3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar10 = puVar24;" (assignment_expression "puVar10 = puVar24" (identifier "puVar10") (= "=") (identifier "puVar24")) (; ";")) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" (identifier "iVar25") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar6 + 1 == iVar7) goto LAB_00030364;" (if "if") (parenthesized_expression "(iVar6 + 1 == iVar7)" (( "(") (binary_expression "iVar6 + 1 == iVar7" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (== "==") (identifier "iVar7")) () ")")) (goto_statement "goto LAB_00030364;" (goto "goto") (statement_identifier "LAB_00030364") (; ";"))) (} "}"))) (expression_statement "puVar10 = (uint *)((int)puVar10 + iVar17);" (assignment_expression "puVar10 = (uint *)((int)puVar10 + iVar17)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)puVar10 + iVar17)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + iVar17)" (( "(") (binary_expression "(int)puVar10 + iVar17" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (identifier "iVar17")) () ")")))) (; ";")) (expression_statement "iVar25 = iVar6 + 1;" (assignment_expression "iVar25 = iVar6 + 1" (identifier "iVar25") (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar6 + 1 != iVar7)" (( "(") (binary_expression "iVar6 + 1 != iVar7" (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) (!= "!=") (identifier "iVar7")) () ")")) (; ";")) (labeled_statement "LAB_00030364:\n            puVar13 = (uint *)(iVar6 + 1);" (statement_identifier "LAB_00030364") (: ":") (expression_statement "puVar13 = (uint *)(iVar6 + 1);" (assignment_expression "puVar13 = (uint *)(iVar6 + 1)" (identifier "puVar13") (= "=") (cast_expression "(uint *)(iVar6 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 1)" (( "(") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) () ")")))) (; ";"))) (expression_statement "uVar3 = *param_1;" (assignment_expression "uVar3 = *param_1" (identifier "uVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (} "}"))) (if_statement "if (puVar8 == puVar18) {\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }\n          else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }" (if "if") (parenthesized_expression "(puVar8 == puVar18)" (( "(") (binary_expression "puVar8 == puVar18" (identifier "puVar8") (== "==") (identifier "puVar18")) () ")")) (compound_statement "{\n            pbVar4 = pbVar4 + -1;\n            puVar18 = puVar24;\n          }" ({ "{") (expression_statement "pbVar4 = pbVar4 + -1;" (assignment_expression "pbVar4 = pbVar4 + -1" (identifier "pbVar4") (= "=") (binary_expression "pbVar4 + -1" (identifier "pbVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar18 = puVar24;" (assignment_expression "puVar18 = puVar24" (identifier "puVar18") (= "=") (identifier "puVar24")) (; ";")) (} "}")) (else_clause "else {\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }" (else "else") (compound_statement "{\n            puVar18 = (uint *)((int)puVar18 + iVar17);\n          }" ({ "{") (expression_statement "puVar18 = (uint *)((int)puVar18 + iVar17);" (assignment_expression "puVar18 = (uint *)((int)puVar18 + iVar17)" (identifier "puVar18") (= "=") (cast_expression "(uint *)((int)puVar18 + iVar17)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar18 + iVar17)" (( "(") (binary_expression "(int)puVar18 + iVar17" (cast_expression "(int)puVar18" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar18")) (+ "+") (identifier "iVar17")) () ")")))) (; ";")) (} "}")))) (expression_statement "uVar23 = uVar23 + 1;" (assignment_expression "uVar23 = uVar23 + 1" (identifier "uVar23") (= "=") (binary_expression "uVar23 + 1" (identifier "uVar23") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar23 < uVar3)" (( "(") (binary_expression "uVar23 < uVar3" (identifier "uVar23") (< "<") (identifier "uVar3")) () ")")) (; ";")) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" (identifier "uVar15") (= "=") (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0xb)" (( "(") (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0xb")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }" (else "else") (compound_statement "{\n        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);\n        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);\n        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);\n        if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }\n      }" ({ "{") (expression_statement "puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);" (assignment_expression "puVar10 = (uint *)((int)pbVar4 * (int)pbVar11)" (identifier "puVar10") (= "=") (cast_expression "(uint *)((int)pbVar4 * (int)pbVar11)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pbVar4 * (int)pbVar11)" (( "(") (binary_expression "(int)pbVar4 * (int)pbVar11" (cast_expression "(int)pbVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar4")) (* "*") (cast_expression "(int)pbVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar11"))) () ")")))) (; ";")) (expression_statement "puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);" (assignment_expression "puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13)" (identifier "puVar24") (= "=") (cast_expression "(uint *)((int)pbVar4 * uVar23 + (int)puVar13)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)pbVar4 * uVar23 + (int)puVar13)" (( "(") (binary_expression "(int)pbVar4 * uVar23 + (int)puVar13" (binary_expression "(int)pbVar4 * uVar23" (cast_expression "(int)pbVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar4")) (* "*") (identifier "uVar23")) (+ "+") (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13"))) () ")")))) (; ";")) (expression_statement "puStack_74 = (uint *)((int)puVar10 + (int)puVar13);" (assignment_expression "puStack_74 = (uint *)((int)puVar10 + (int)puVar13)" (identifier "puStack_74") (= "=") (cast_expression "(uint *)((int)puVar10 + (int)puVar13)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + (int)puVar13)" (( "(") (binary_expression "(int)puVar10 + (int)puVar13" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (cast_expression "(int)puVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar13"))) () ")")))) (; ";")) (if_statement "if (uVar3 != 0) {\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }" (if "if") (parenthesized_expression "(uVar3 != 0)" (( "(") (binary_expression "uVar3 != 0" (identifier "uVar3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar17 = -(int)pbVar4;\n          uVar3 = 0;\n          do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);\n          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);\n        }" ({ "{") (expression_statement "iVar17 = -(int)pbVar4;" (assignment_expression "iVar17 = -(int)pbVar4" (identifier "iVar17") (= "=") (unary_expression "-(int)pbVar4" (- "-") (cast_expression "(int)pbVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar4")))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          } while (uVar3 < *param_1);" (do "do") (compound_statement "{\n            uVar14 = 8;\n            puVar10 = auStack_64;\n            puVar13 = puVar24;\n            param_3 = pbVar4;\n            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);\n            if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }\n            uVar3 = uVar3 + 1;\n            puVar24 = (uint *)((int)puVar24 + iVar17);\n          }" ({ "{") (expression_statement "uVar14 = 8;" (assignment_expression "uVar14 = 8" (identifier "uVar14") (= "=") (number_literal "8")) (; ";")) (expression_statement "puVar10 = auStack_64;" (assignment_expression "puVar10 = auStack_64" (identifier "puVar10") (= "=") (identifier "auStack_64")) (; ";")) (expression_statement "puVar13 = puVar24;" (assignment_expression "puVar13 = puVar24" (identifier "puVar13") (= "=") (identifier "puVar24")) (; ";")) (expression_statement "param_3 = pbVar4;" (assignment_expression "param_3 = pbVar4" (identifier "param_3") (= "=") (identifier "pbVar4")) (; ";")) (expression_statement "(**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);" (call_expression "(**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8)" (parenthesized_expression "(**(code **)(puVar27 + 0x232f4))" (( "(") (pointer_expression "**(code **)(puVar27 + 0x232f4)" (* "*") (pointer_expression "*(code **)(puVar27 + 0x232f4)" (* "*") (cast_expression "(code **)(puVar27 + 0x232f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + 0x232f4)" (( "(") (binary_expression "puVar27 + 0x232f4" (identifier "puVar27") (+ "+") (number_literal "0x232f4")) () ")"))))) () ")")) (argument_list "(auStack_64,puVar24,pbVar4,8)" (( "(") (identifier "auStack_64") (, ",") (identifier "puVar24") (, ",") (identifier "pbVar4") (, ",") (number_literal "8") () ")"))) (; ";")) (if_statement "if (0 < iVar7) {\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }" (if "if") (parenthesized_expression "(0 < iVar7)" (( "(") (binary_expression "0 < iVar7" (number_literal "0") (< "<") (identifier "iVar7")) () ")")) (compound_statement "{\n              iVar25 = 0;\n              puVar8 = puStack_74;\n              do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);\n              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);\n            }" ({ "{") (expression_statement "iVar25 = 0;" (assignment_expression "iVar25 = 0" (identifier "iVar25") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar8 = puStack_74;" (assignment_expression "puVar8 = puStack_74" (identifier "puVar8") (= "=") (identifier "puStack_74")) (; ";")) (do_statement "do {\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              } while (iVar25 != iVar7);" (do "do") (compound_statement "{\n                iVar25 = iVar25 + 1;\n                puVar10 = puVar8;\n                puVar13 = auStack_64;\n                param_3 = pbVar4;\n                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);\n                puVar8 = (uint *)(iVar6 + iVar17);\n              }" ({ "{") (expression_statement "iVar25 = iVar25 + 1;" (assignment_expression "iVar25 = iVar25 + 1" (identifier "iVar25") (= "=") (binary_expression "iVar25 + 1" (identifier "iVar25") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar10 = puVar8;" (assignment_expression "puVar10 = puVar8" (identifier "puVar10") (= "=") (identifier "puVar8")) (; ";")) (expression_statement "puVar13 = auStack_64;" (assignment_expression "puVar13 = auStack_64" (identifier "puVar13") (= "=") (identifier "auStack_64")) (; ";")) (expression_statement "param_3 = pbVar4;" (assignment_expression "param_3 = pbVar4" (identifier "param_3") (= "=") (identifier "pbVar4")) (; ";")) (expression_statement "iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);" (assignment_expression "iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4)" (identifier "iVar6") (= "=") (call_expression "(**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4)" (parenthesized_expression "(**(code **)(puVar27 + 0x233b8))" (( "(") (pointer_expression "**(code **)(puVar27 + 0x233b8)" (* "*") (pointer_expression "*(code **)(puVar27 + 0x233b8)" (* "*") (cast_expression "(code **)(puVar27 + 0x233b8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + 0x233b8)" (( "(") (binary_expression "puVar27 + 0x233b8" (identifier "puVar27") (+ "+") (number_literal "0x233b8")) () ")"))))) () ")")) (argument_list "(puVar8,auStack_64,pbVar4)" (( "(") (identifier "puVar8") (, ",") (identifier "auStack_64") (, ",") (identifier "pbVar4") () ")")))) (; ";")) (expression_statement "puVar8 = (uint *)(iVar6 + iVar17);" (assignment_expression "puVar8 = (uint *)(iVar6 + iVar17)" (identifier "puVar8") (= "=") (cast_expression "(uint *)(iVar6 + iVar17)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + iVar17)" (( "(") (binary_expression "iVar6 + iVar17" (identifier "iVar6") (+ "+") (identifier "iVar17")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar25 != iVar7)" (( "(") (binary_expression "iVar25 != iVar7" (identifier "iVar25") (!= "!=") (identifier "iVar7")) () ")")) (; ";")) (expression_statement "puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);" (assignment_expression "puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17)" (identifier "puStack_74") (= "=") (cast_expression "(uint *)((int)puStack_74 + iVar7 * iVar17)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puStack_74 + iVar7 * iVar17)" (( "(") (binary_expression "(int)puStack_74 + iVar7 * iVar17" (cast_expression "(int)puStack_74" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puStack_74")) (+ "+") (binary_expression "iVar7 * iVar17" (identifier "iVar7") (* "*") (identifier "iVar17"))) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar24 = (uint *)((int)puVar24 + iVar17);" (assignment_expression "puVar24 = (uint *)((int)puVar24 + iVar17)" (identifier "puVar24") (= "=") (cast_expression "(uint *)((int)puVar24 + iVar17)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar24 + iVar17)" (( "(") (binary_expression "(int)puVar24 + iVar17" (cast_expression "(int)puVar24" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar24")) (+ "+") (identifier "iVar17")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar3 < *param_1)" (( "(") (binary_expression "uVar3 < *param_1" (identifier "uVar3") (< "<") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) () ")")) (; ";")) (expression_statement "uVar15 = (uint)*(byte *)((int)param_1 + 0xb);" (assignment_expression "uVar15 = (uint)*(byte *)((int)param_1 + 0xb)" (identifier "uVar15") (= "=") (binary_expression "(uint)*(byte *)((int)param_1 + 0xb)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)param_1 + 0xb)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0xb)" (( "(") (binary_expression "(int)param_1 + 0xb" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0xb")) () ")"))))) (; ";")) (} "}"))) (} "}")))) (} "}")))) (labeled_statement "LAB_0003024c:\n    *param_1 = (uint)puVar5;" (statement_identifier "LAB_0003024c") (: ":") (expression_statement "*param_1 = (uint)puVar5;" (assignment_expression "*param_1 = (uint)puVar5" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (cast_expression "(uint)puVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "puVar5"))) (; ";"))) (if_statement "if (7 < uVar15) {\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }" (if "if") (parenthesized_expression "(7 < uVar15)" (( "(") (binary_expression "7 < uVar15" (number_literal "7") (< "<") (identifier "uVar15")) () ")")) (compound_statement "{\n      param_1[1] = (uVar15 >> 3) * (int)puVar5;\n      goto LAB_00030268;\n    }" ({ "{") (expression_statement "param_1[1] = (uVar15 >> 3) * (int)puVar5;" (assignment_expression "param_1[1] = (uVar15 >> 3) * (int)puVar5" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "(uVar15 >> 3) * (int)puVar5" (parenthesized_expression "(uVar15 >> 3)" (( "(") (binary_expression "uVar15 >> 3" (identifier "uVar15") (>> ">>") (number_literal "3")) () ")")) (* "*") (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5")))) (; ";")) (goto_statement "goto LAB_00030268;" (goto "goto") (statement_identifier "LAB_00030268") (; ";")) (} "}"))) (} "}")))) (expression_statement "param_1[1] = uVar15 * (int)puVar5 + 7 >> 3;" (assignment_expression "param_1[1] = uVar15 * (int)puVar5 + 7 >> 3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar15 * (int)puVar5 + 7 >> 3" (binary_expression "uVar15 * (int)puVar5 + 7" (binary_expression "uVar15 * (int)puVar5" (identifier "uVar15") (* "*") (cast_expression "(int)puVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar5"))) (+ "+") (number_literal "7")) (>> ">>") (number_literal "3"))) (; ";")) (labeled_statement "LAB_00030268:\n  if (iStack_5c == *piVar21) {\n    return;\n  }" (statement_identifier "LAB_00030268") (: ":") (if_statement "if (iStack_5c == *piVar21) {\n    return;\n  }" (if "if") (parenthesized_expression "(iStack_5c == *piVar21)" (( "(") (binary_expression "iStack_5c == *piVar21" (identifier "iStack_5c") (== "==") (pointer_expression "*piVar21" (* "*") (identifier "piVar21"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "pcVar28 = *(code **)(puVar27 + 0x23378);" (assignment_expression "pcVar28 = *(code **)(puVar27 + 0x23378)" (identifier "pcVar28") (= "=") (pointer_expression "*(code **)(puVar27 + 0x23378)" (* "*") (cast_expression "(code **)(puVar27 + 0x23378)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar27 + 0x23378)" (( "(") (binary_expression "puVar27 + 0x23378" (identifier "puVar27") (+ "+") (number_literal "0x23378")) () ")"))))) (; ";")) (expression_statement "(*pcVar28)();" (call_expression "(*pcVar28)()" (parenthesized_expression "(*pcVar28)" (( "(") (pointer_expression "*pcVar28" (* "*") (identifier "pcVar28")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (puVar27 + 0x2aee3 < &DAT_00000004) {\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    \n                    \n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }" (if "if") (parenthesized_expression "(puVar27 + 0x2aee3 < &DAT_00000004)" (( "(") (binary_expression "puVar27 + 0x2aee3 < &DAT_00000004" (binary_expression "puVar27 + 0x2aee3" (identifier "puVar27") (+ "+") (number_literal "0x2aee3")) (< "<") (pointer_expression "&DAT_00000004" (& "&") (identifier "DAT_00000004"))) () ")")) (compound_statement "{\n    if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }\n                    \n                    \n    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);\n    return;\n  }" ({ "{") (if_statement "if (puVar10[0xe2] == 0) {\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }" (if "if") (parenthesized_expression "(puVar10[0xe2] == 0)" (( "(") (binary_expression "puVar10[0xe2] == 0" (subscript_expression "puVar10[0xe2]" (identifier "puVar10") ([ "[") (number_literal "0xe2") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;\n      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;\n      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;\n      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }\n    }" ({ "{") (expression_statement "puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;" (assignment_expression "puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0" (subscript_expression "puVar10[0xe2]" (identifier "puVar10") ([ "[") (number_literal "0xe2") (] "]")) (= "=") (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x58a0" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" (* "*") (cast_expression "(int *)(pcVar28 + 0x22c14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar28 + 0x22c14)" (( "(") (binary_expression "pcVar28 + 0x22c14" (identifier "pcVar28") (+ "+") (number_literal "0x22c14")) () ")")))) (- "-") (number_literal "0x58a0"))) (; ";")) (expression_statement "puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;" (assignment_expression "puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858" (subscript_expression "puVar10[0xe3]" (identifier "puVar10") ([ "[") (number_literal "0xe3") (] "]")) (= "=") (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x5858" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" (* "*") (cast_expression "(int *)(pcVar28 + 0x22c14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar28 + 0x22c14)" (( "(") (binary_expression "pcVar28 + 0x22c14" (identifier "pcVar28") (+ "+") (number_literal "0x22c14")) () ")")))) (- "-") (number_literal "0x5858"))) (; ";")) (expression_statement "puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;" (assignment_expression "puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828" (subscript_expression "puVar10[0xe4]" (identifier "puVar10") ([ "[") (number_literal "0xe4") (] "]")) (= "=") (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x5828" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" (* "*") (cast_expression "(int *)(pcVar28 + 0x22c14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar28 + 0x22c14)" (( "(") (binary_expression "pcVar28 + 0x22c14" (identifier "pcVar28") (+ "+") (number_literal "0x22c14")) () ")")))) (- "-") (number_literal "0x5828"))) (; ";")) (if_statement "if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }\n      else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }" (if "if") (parenthesized_expression "((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1)" (( "(") (binary_expression "(int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1" (binary_expression "(int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3" (cast_expression "(int)(*(byte *)((int)puVar10 + 0x202) + 7)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(*(byte *)((int)puVar10 + 0x202) + 7)" (( "(") (binary_expression "*(byte *)((int)puVar10 + 0x202) + 7" (pointer_expression "*(byte *)((int)puVar10 + 0x202)" (* "*") (cast_expression "(byte *)((int)puVar10 + 0x202)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar10 + 0x202)" (( "(") (binary_expression "(int)puVar10 + 0x202" (cast_expression "(int)puVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar10")) (+ "+") (number_literal "0x202")) () ")")))) (+ "+") (number_literal "7")) () ")"))) (>> ">>") (number_literal "3")) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;\n      }" ({ "{") (expression_statement "puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;" (assignment_expression "puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c" (subscript_expression "puVar10[0xe5]" (identifier "puVar10") ([ "[") (number_literal "0xe5") (] "]")) (= "=") (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x579c" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" (* "*") (cast_expression "(int *)(pcVar28 + 0x22c14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar28 + 0x22c14)" (( "(") (binary_expression "pcVar28 + 0x22c14" (identifier "pcVar28") (+ "+") (number_literal "0x22c14")) () ")")))) (- "-") (number_literal "0x579c"))) (; ";")) (} "}")) (else_clause "else {\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }" (else "else") (compound_statement "{\n        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;\n      }" ({ "{") (expression_statement "puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;" (assignment_expression "puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704" (subscript_expression "puVar10[0xe5]" (identifier "puVar10") ([ "[") (number_literal "0xe5") (] "]")) (= "=") (binary_expression "*(int *)(pcVar28 + 0x22c14) - 0x5704" (pointer_expression "*(int *)(pcVar28 + 0x22c14)" (* "*") (cast_expression "(int *)(pcVar28 + 0x22c14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar28 + 0x22c14)" (( "(") (binary_expression "pcVar28 + 0x22c14" (identifier "pcVar28") (+ "+") (number_literal "0x22c14")) () ")")))) (- "-") (number_literal "0x5704"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "(*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);" (call_expression "(*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14)" (parenthesized_expression "(*(code *)puVar10[(int)(puVar27 + 0x2afc5)])" (( "(") (pointer_expression "*(code *)puVar10[(int)(puVar27 + 0x2afc5)]" (* "*") (cast_expression "(code *)puVar10[(int)(puVar27 + 0x2afc5)]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar10[(int)(puVar27 + 0x2afc5)]" (identifier "puVar10") ([ "[") (cast_expression "(int)(puVar27 + 0x2afc5)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(puVar27 + 0x2afc5)" (( "(") (binary_expression "puVar27 + 0x2afc5" (identifier "puVar27") (+ "+") (number_literal "0x2afc5")) () ")"))) (] "]")))) () ")")) (argument_list "(puVar13,param_3,uVar14)" (( "(") (identifier "puVar13") (, ",") (identifier "param_3") (, ",") (identifier "uVar14") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator 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: (primitive_type) 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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (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))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))))))) (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: (pointer_expression argument: (identifier)))) (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (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: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) right: (number_literal)))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (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: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) 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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) right: (number_literal))) right: (number_literal)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))) right: (number_literal))))))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))) 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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)) right: (number_literal))) right: (number_literal))) right: (number_literal)))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) 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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (number_literal)))))))))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (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: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (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: (binary_expression left: (number_literal) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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))))) (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) declarator: (abstract_pointer_declarator)) value: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (number_literal) right: (identifier)) right: (number_literal)) right: (number_literal))))) right: (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: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (number_literal) right: (identifier)) right: (number_literal)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (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: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (while_statement condition: (parenthesized_expression (true)) body: (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: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (return_statement))) (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: (pointer_expression argument: (identifier)))) (for_statement condition: (binary_expression left: (identifier) right: (identifier)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))) body: (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: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))))) (return_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) right: (number_literal))) right: (number_literal))))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (while_statement condition: (parenthesized_expression (comma_expression left: (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 (identifier) (identifier) (identifier)))) right: (binary_expression left: (identifier) right: (identifier)))) body: (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: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (identifier)) right: (identifier))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (unary_expression argument: (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)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (break_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: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (return_statement))))) (return_statement))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (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)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (break_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: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (return_statement))))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) 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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (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) declarator: (abstract_pointer_declarator)) value: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (unary_expression argument: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (goto_statement label: (statement_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: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (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: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))))) right: (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (goto_statement label: (statement_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: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (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: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (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: (unary_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (unary_expression argument: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))))) right: (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier) (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)) right: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (return_statement)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (pointer_expression argument: (identifier)))) 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: (subscript_expression argument: (identifier) index: (number_literal)) 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)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal)))) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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))))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) arguments: (argument_list (identifier) (identifier) (identifier)))) (return_statement))) (return_statement))))

void MASKED(uint *param_1,byte *param_2,byte *param_3)

{
  byte bVar1;
  bool bVar2;
  uint uVar3;
  byte *pbVar4;
  uint *puVar5;
  int iVar6;
  int iVar7;
  byte bVar9;
  uint extraout_v1;
  uint *puVar8;
  uint *puVar10;
  byte *pbVar11;
  undefined4 uVar12;
  uint *puVar13;
  uint uVar14;
  uint uVar15;
  uint in_t2;
  byte *pbVar16;
  uint in_t3;
  int iVar17;
  uint *puVar18;
  byte *unaff_s0;
  uint uVar19;
  byte *pbVar20;
  uint unaff_s1;
  byte bVar22;
  int *piVar21;
  uint unaff_s2;
  uint uVar23;
  uint unaff_s3;
  uint *puVar24;
  int iVar25;
  byte *pbVar26;
  undefined *puVar27;
  code *pcVar28;
  undefined8 uVar29;
  uint *puStack_74;
  uint auStack_64 [2];
  int iStack_5c;
  byte *pbStack_58;
  uint uStack_54;
  uint uStack_50;
  
  uVar14 = param_1[0x6c];
  bVar9 = *(byte *)((int)param_1 + 0x207);
  uVar3 = (uint)bVar9;
  if (uVar3 == 0) {
LAB_00030084:
    (*(code *)PTR_png_error_0005340c)();
    uVar3 = extraout_v1;
    goto LAB_00030094;
  }
  pbVar11 = (byte *)(param_1[0x75] + 1);
  if (param_1[0x78] == 0) {
LAB_0002fb8c:
    uVar15 = uVar3 * uVar14;
    if (uVar14 == 0) {
      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + 0xb7c);
      goto LAB_00030084;
    }
    uVar23 = uVar15 & 7;
    bVar22 = 0;
    if (uVar23 == 0) {
      unaff_s0 = (byte *)0x0;
      unaff_s2 = 0;
LAB_0002fc38:
      bVar1 = *(byte *)(param_1 + 0x7f);
    }
    else {
      if (uVar3 < 8) {
        uVar19 = uVar15 + 7 >> 3;
      }
      else {
        uVar19 = (bVar9 >> 3) * uVar14;
      }
      unaff_s0 = param_2 + (uVar19 - 1);
      bVar22 = *unaff_s0;
      if (-1 < (int)(param_1[0x4b] << 0xf)) {
        unaff_s2 = 0xff >> uVar23;
        goto LAB_0002fc38;
      }
      unaff_s2 = 0xff << uVar23;
      bVar1 = *(byte *)(param_1 + 0x7f);
    }
    if ((bVar1 != 0) && ((param_1[0x4b] & 2) != 0)) {
      bVar1 = *(byte *)((int)param_1 + 0x1fd);
      in_t3 = (uint)bVar1;
      if ((in_t3 < 6) &&
         ((param_3 == (byte *)0x0 || ((param_3 == (byte *)0x1 && ((bVar1 & 1) != 0)))))) {
        in_t2 = (in_t3 & 1) << (3 - (in_t3 + 1 >> 1) & 0x1f) & 7;
        if (uVar14 <= in_t2) {
          return;
        }
        if (uVar3 < 8) {
          if (uVar3 == 0) {
            trap(7);
          }
          iVar7 = 1;
          if ((int)(param_1[0x4b] << 0xf) < 0) {
            if (param_3 == (byte *)0x0) {
              iVar7 = 0;
              if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {
                iVar7 = 1;
              }
              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3) * 4 + 0xd5c);
            }
            else {
              if (uVar3 == 1) {
                iVar7 = 0;
              }
              else if (uVar3 != 2) {
                iVar7 = 2;
              }
              uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1)) * 4 + 0xdec);
            }
          }
          else if (param_3 == (byte *)0x0) {
            iVar7 = 0;
            if ((uVar3 != 1) && (iVar7 = 2, uVar3 == 2)) {
              iVar7 = 1;
            }
            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 6 + in_t3 + 0x12) * 4 + 0xd5c);
          }
          else {
            if (uVar3 == 1) {
              iVar7 = 0;
            }
            else if (uVar3 != 2) {
              iVar7 = 2;
            }
            uVar15 = *(uint *)(PTR_s_nt_0005301c + (iVar7 * 3 + (uint)(bVar1 >> 1) + 9) * 4 + 0xdec)
            ;
          }
          while( true ) {
            if ((uVar15 & 0xff) != 0) {
              if ((uVar15 & 0xff) == 0xff) {
                *param_2 = *pbVar11;
              }
              else {
                *param_2 = *param_2 ^ (*param_2 ^ *pbVar11) & (byte)uVar15;
              }
            }
            bVar2 = uVar14 <= 8 / uVar3;
            uVar14 = uVar14 - 8 / uVar3;
            if (bVar2) break;
            param_2 = param_2 + 1;
            pbVar11 = pbVar11 + 1;
            uVar15 = (uVar15 >> 8) + uVar15 * 0x1000000;
          }
          goto LAB_0002fbfc;
        }
        goto LAB_0002fd9c;
      }
    }
    if (uVar3 < 8) {
      uVar14 = uVar15 + 7 >> 3;
    }
    else {
      uVar14 = (bVar9 >> 3) * uVar14;
    }
    (*(code *)PTR_memcpy_000534c4)(param_2,pbVar11,uVar14);
LAB_0002fbfc:
    if (unaff_s0 != (byte *)0x0) {
      *unaff_s0 = *unaff_s0 ^ (*unaff_s0 ^ bVar22) & (byte)unaff_s2;
    }
    return;
  }
  if (uVar3 < 8) {
    uVar15 = uVar3 * uVar14 + 7 >> 3;
  }
  else {
    uVar15 = (bVar9 >> 3) * uVar14;
  }
  if (param_1[0x78] == uVar15) goto LAB_0002fb8c;
  pbVar11 = PTR_s_nt_0005301c + 0xb58;
  uVar29 = (*(code *)PTR_png_error_0005340c)(param_1);
  uVar3 = (uint)((ulonglong)uVar29 >> 0x20);
  param_1 = (uint *)uVar29;
LAB_0002fd9c:
  uVar15 = uVar3 >> 3;
  if ((uVar3 & 7) == 0) {
    iVar7 = in_t2 * uVar15;
    param_2 = param_2 + iVar7;
    unaff_s3 = uVar14 * uVar15 - iVar7;
    unaff_s0 = pbVar11 + iVar7;
    unaff_s2 = uVar15;
    if ((param_3 != (byte *)0x0) &&
       (unaff_s2 = uVar15 << (6 - in_t3 >> 1 & 0x1f), unaff_s3 < unaff_s2)) {
      unaff_s2 = unaff_s3;
    }
    unaff_s1 = uVar15 << (7 - in_t3 >> 1 & 0x1f);
    if (unaff_s2 == 2) {
      do {
        *param_2 = *unaff_s0;
        param_2[1] = unaff_s0[1];
        if (unaff_s3 <= unaff_s1) {
          return;
        }
        unaff_s3 = unaff_s3 - unaff_s1;
        unaff_s0 = unaff_s0 + unaff_s1;
        param_2 = param_2 + unaff_s1;
      } while (1 < unaff_s3);
      *param_2 = *unaff_s0;
      return;
    }
    if (unaff_s2 == 3) {
      bVar9 = *unaff_s0;
      while( true ) {
        *param_2 = bVar9;
        param_2[1] = unaff_s0[1];
        param_2[2] = unaff_s0[2];
        if (unaff_s3 <= unaff_s1) break;
        unaff_s0 = unaff_s0 + unaff_s1;
        unaff_s3 = unaff_s3 - unaff_s1;
        param_2 = param_2 + unaff_s1;
        bVar9 = *unaff_s0;
      }
      return;
    }
    if (unaff_s2 == 1) {
      *param_2 = *unaff_s0;
      for (; unaff_s1 < unaff_s3; unaff_s3 = unaff_s3 - unaff_s1) {
        unaff_s0 = unaff_s0 + unaff_s1;
        param_2 = param_2 + unaff_s1;
        *param_2 = *unaff_s0;
      }
      return;
    }
    if (((0xf < unaff_s2) || ((((uint)param_2 | (uint)unaff_s0) & 1) != 0)) ||
       (((unaff_s2 | unaff_s1) & 1) != 0)) {
      while (iVar7 = (*(code *)PTR_memcpy_000534c4)(param_2,unaff_s0,unaff_s2), unaff_s1 < unaff_s3)
      {
        unaff_s3 = unaff_s3 - unaff_s1;
        unaff_s0 = unaff_s0 + unaff_s1;
        if (unaff_s3 < unaff_s2) {
          unaff_s2 = unaff_s3;
        }
        param_2 = (byte *)(iVar7 + unaff_s1);
      }
      return;
    }
    uVar3 = unaff_s1 - unaff_s2;
    if ((((uint)param_2 | (uint)unaff_s0 | unaff_s2 | unaff_s1) & 3) != 0) {
      pbVar11 = param_2;
      while( true ) {
        do {
          pbVar20 = unaff_s0 + 2;
          pbVar4 = param_2 + 2;
          *(undefined2 *)param_2 = *(undefined2 *)unaff_s0;
          param_2 = pbVar4;
          unaff_s0 = pbVar20;
        } while (pbVar4 + -unaff_s2 != pbVar11);
        bVar2 = unaff_s3 <= unaff_s1;
        unaff_s3 = unaff_s3 - unaff_s1;
        if (bVar2) break;
        param_2 = pbVar4 + (uVar3 & 0xfffffffe);
        unaff_s0 = pbVar20 + (uVar3 & 0xfffffffe);
        pbVar11 = param_2;
        if (unaff_s3 < unaff_s2) {
          do {
            pbVar4 = pbVar11 + 1;
            *pbVar11 = *unaff_s0;
            pbVar11 = pbVar4;
            unaff_s0 = unaff_s0 + 1;
          } while (param_2 + unaff_s3 != pbVar4);
          return;
        }
      }
      return;
    }
LAB_00030094:
    pbVar11 = param_2;
    while( true ) {
      do {
        pbVar4 = param_2 + 4;
        uVar12 = *(undefined4 *)unaff_s0;
        unaff_s0 = unaff_s0 + 4;
        *(undefined4 *)param_2 = uVar12;
        param_2 = pbVar4;
      } while (pbVar11 + (unaff_s2 - (int)pbVar4) != (byte *)0x0);
      bVar2 = unaff_s3 <= unaff_s1;
      unaff_s3 = unaff_s3 - unaff_s1;
      if (bVar2) break;
      param_2 = pbVar4 + (uVar3 & 0xfffffffc);
      unaff_s0 = unaff_s0 + (uVar3 & 0xfffffffc);
      uVar14 = 0;
      pbVar11 = param_2;
      if (unaff_s3 < unaff_s2) {
        do {
          pbVar4 = unaff_s0 + uVar14;
          pbVar11 = param_2 + uVar14;
          uVar14 = uVar14 + 1;
          *pbVar11 = *pbVar4;
        } while (uVar14 != unaff_s3);
        return;
      }
    }
    return;
  }
  puVar13 = (uint *)(PTR_s_nt_0005301c + 0xb98);
  puVar27 = PTR_png_error_0005340c;
  (*(code *)PTR_png_error_0005340c)();
  piVar21 = *(int **)(puVar27 + 0x233b0);
  iStack_5c = *piVar21;
  puVar10 = param_1;
  pbStack_58 = unaff_s0;
  uStack_54 = uVar15;
  uStack_50 = unaff_s2;
  if ((puVar13 == (uint *)0x0) || (param_1 == (uint *)0x0)) goto LAB_00030268;
  uVar3 = *param_1;
  uVar15 = (uint)*(byte *)((int)param_1 + 0xb);
  uVar23 = uVar3 - 1;
  param_3 = (byte *)((int)param_3 * 4 + *(int *)(puVar27 + 0x22f10) + 0xd40);
  iVar7 = *(int *)param_3;
  puVar5 = (uint *)(uVar3 * iVar7);
  pbVar11 = (byte *)((int)puVar5 + -1);
  if (uVar15 == 2) {
    pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 2));
    puVar10 = (uint *)((int)puVar13 + ((uint)pbVar11 >> 2));
    puVar13 = (uint *)(uVar3 + 3);
    if ((uVar14 & 0x10000) == 0) {
      puVar24 = (uint *)(~(uint)puVar13 << 1);
      uVar23 = ~(uint)((int)puVar5 + 3) << 1;
      iVar17 = 2;
      pbVar20 = &DAT_00000006;
      pbVar11 = (byte *)0x0;
    }
    else {
      puVar13 = (uint *)((int)puVar13 * 2);
      uVar23 = (int)((int)puVar5 + 3) * 2;
      iVar17 = -2;
      pbVar20 = (byte *)0x0;
      pbVar11 = &DAT_00000006;
      puVar24 = puVar13;
    }
    pbVar26 = (byte *)((uint)puVar24 & 6);
    param_3 = (byte *)(uVar23 & 6);
    uVar23 = 0;
    if (uVar3 != 0) {
      do {
        bVar9 = *pbVar4;
        if (0 < iVar7) {
          iVar25 = 0;
          do {
            while( true ) {
              iVar6 = iVar25;
              uVar14 = (uint)*(byte *)puVar10;
              *(byte *)puVar10 =
                   (byte)(((int)(uint)bVar9 >> ((uint)pbVar26 & 0x1f) & 3U) <<
                         ((uint)param_3 & 0x1f)) |
                   (byte)(0x3f3f >> (6U - (int)param_3 & 0x1f)) & *(byte *)puVar10;
              if (pbVar20 != param_3) break;
              puVar10 = (uint *)((int)puVar10 + -1);
              iVar25 = iVar6 + 1;
              param_3 = pbVar11;
              if (iVar6 + 1 == iVar7) goto LAB_0003051c;
            }
            param_3 = param_3 + iVar17;
            iVar25 = iVar6 + 1;
          } while (iVar6 + 1 != iVar7);
LAB_0003051c:
          puVar13 = (uint *)(iVar6 + 1);
          uVar3 = *param_1;
        }
        if (pbVar20 == pbVar26) {
          pbVar4 = pbVar4 + -1;
          pbVar26 = pbVar11;
        }
        else {
          pbVar26 = pbVar26 + iVar17;
        }
        uVar23 = uVar23 + 1;
      } while (uVar23 < uVar3);
      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);
      goto LAB_0003024c;
    }
LAB_000302a4:
    *param_1 = (uint)puVar5;
  }
  else {
    if (uVar15 == 4) {
      pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 1));
      pbVar11 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 1));
      if ((uVar14 & 0x10000) == 0) {
        puVar10 = (uint *)(uVar3 + 1 & 1);
        pbVar20 = &DAT_00000004;
        if (puVar10 != (uint *)0x0) {
          pbVar20 = (byte *)0x0;
        }
        if (((uint)((int)puVar5 + 1) & 1) == 0) {
          iVar17 = 4;
          pbVar16 = &DAT_00000004;
          param_3 = &DAT_00000004;
          pbVar26 = (byte *)0x0;
        }
        else {
          pbVar26 = (byte *)0x0;
          iVar17 = 4;
          pbVar16 = &DAT_00000004;
          param_3 = (byte *)0x0;
        }
      }
      else {
        puVar10 = (uint *)((uVar3 + 1) * 4);
        param_3 = (byte *)((int)((int)puVar5 + 1) * 4 & 4);
        iVar17 = -4;
        pbVar16 = (byte *)0x0;
        pbVar26 = &DAT_00000004;
        pbVar20 = (byte *)((uint)puVar10 & 4);
      }
      uVar23 = 0;
      puVar13 = puVar5;
      if (uVar3 == 0) goto LAB_000302a4;
      do {
        bVar9 = *pbVar4;
        if (0 < iVar7) {
          iVar25 = 0;
          do {
            while( true ) {
              iVar6 = iVar25;
              uVar14 = (uint)*pbVar11;
              *pbVar11 = (byte)(((int)(uint)bVar9 >> ((uint)pbVar20 & 0x1f) & 0xfU) <<
                               ((uint)param_3 & 0x1f)) |
                         (byte)(0xf0f >> (4U - (int)param_3 & 0x1f)) & *pbVar11;
              if (pbVar16 != param_3) break;
              pbVar11 = pbVar11 + -1;
              iVar25 = iVar6 + 1;
              param_3 = pbVar26;
              if (iVar6 + 1 == iVar7) goto LAB_00030440;
            }
            param_3 = param_3 + iVar17;
            iVar25 = iVar6 + 1;
          } while (iVar6 + 1 != iVar7);
LAB_00030440:
          puVar13 = (uint *)(iVar6 + 1);
          uVar3 = *param_1;
        }
        if (pbVar16 == pbVar20) {
          pbVar4 = pbVar4 + -1;
          pbVar20 = pbVar26;
        }
        else {
          pbVar20 = pbVar20 + iVar17;
        }
        uVar23 = uVar23 + 1;
      } while (uVar23 < uVar3);
      uVar15 = (uint)*(byte *)((int)param_1 + 0xb);
      puVar10 = (uint *)0x0;
    }
    else {
      pbVar4 = (byte *)(uint)(*(byte *)((int)param_1 + 0xb) >> 3);
      if (uVar15 == 1) {
        pbVar4 = (byte *)((int)puVar13 + (uVar23 >> 3));
        param_3 = (byte *)((int)puVar13 + ((uint)pbVar11 >> 3));
        uVar23 = uVar3 + 7;
        pbVar11 = (byte *)((int)puVar5 + 7);
        if ((uVar14 & 0x10000) == 0) {
          uVar23 = ~uVar23;
          pbVar11 = (byte *)~(uint)pbVar11;
          iVar17 = 1;
          puVar8 = (uint *)&DAT_00000007;
          puVar24 = (uint *)0x0;
        }
        else {
          iVar17 = -1;
          puVar8 = (uint *)0x0;
          puVar24 = (uint *)&DAT_00000007;
        }
        puVar18 = (uint *)(uVar23 & 7);
        puVar10 = (uint *)((uint)pbVar11 & 7);
        uVar23 = 0;
        if (uVar3 == 0) goto LAB_000302a4;
        do {
          bVar9 = *pbVar4;
          if (0 < iVar7) {
            iVar25 = 0;
            do {
              while( true ) {
                iVar6 = iVar25;
                uVar14 = (uint)*param_3;
                *param_3 = (byte)(((int)(uint)bVar9 >> ((uint)puVar18 & 0x1f) & 1U) <<
                                 ((uint)puVar10 & 0x1f)) |
                           (byte)(0x7f7f >> (7U - (int)puVar10 & 0x1f)) & *param_3;
                if (puVar8 != puVar10) break;
                param_3 = param_3 + -1;
                puVar10 = puVar24;
                iVar25 = iVar6 + 1;
                if (iVar6 + 1 == iVar7) goto LAB_00030364;
              }
              puVar10 = (uint *)((int)puVar10 + iVar17);
              iVar25 = iVar6 + 1;
            } while (iVar6 + 1 != iVar7);
LAB_00030364:
            puVar13 = (uint *)(iVar6 + 1);
            uVar3 = *param_1;
          }
          if (puVar8 == puVar18) {
            pbVar4 = pbVar4 + -1;
            puVar18 = puVar24;
          }
          else {
            puVar18 = (uint *)((int)puVar18 + iVar17);
          }
          uVar23 = uVar23 + 1;
        } while (uVar23 < uVar3);
        uVar15 = (uint)*(byte *)((int)param_1 + 0xb);
      }
      else {
        puVar10 = (uint *)((int)pbVar4 * (int)pbVar11);
        puVar24 = (uint *)((int)pbVar4 * uVar23 + (int)puVar13);
        puStack_74 = (uint *)((int)puVar10 + (int)puVar13);
        if (uVar3 != 0) {
          iVar17 = -(int)pbVar4;
          uVar3 = 0;
          do {
            uVar14 = 8;
            puVar10 = auStack_64;
            puVar13 = puVar24;
            param_3 = pbVar4;
            (**(code **)(puVar27 + 0x232f4))(auStack_64,puVar24,pbVar4,8);
            if (0 < iVar7) {
              iVar25 = 0;
              puVar8 = puStack_74;
              do {
                iVar25 = iVar25 + 1;
                puVar10 = puVar8;
                puVar13 = auStack_64;
                param_3 = pbVar4;
                iVar6 = (**(code **)(puVar27 + 0x233b8))(puVar8,auStack_64,pbVar4);
                puVar8 = (uint *)(iVar6 + iVar17);
              } while (iVar25 != iVar7);
              puStack_74 = (uint *)((int)puStack_74 + iVar7 * iVar17);
            }
            uVar3 = uVar3 + 1;
            puVar24 = (uint *)((int)puVar24 + iVar17);
          } while (uVar3 < *param_1);
          uVar15 = (uint)*(byte *)((int)param_1 + 0xb);
        }
      }
    }
LAB_0003024c:
    *param_1 = (uint)puVar5;
    if (7 < uVar15) {
      param_1[1] = (uVar15 >> 3) * (int)puVar5;
      goto LAB_00030268;
    }
  }
  param_1[1] = uVar15 * (int)puVar5 + 7 >> 3;
LAB_00030268:
  if (iStack_5c == *piVar21) {
    return;
  }
  pcVar28 = *(code **)(puVar27 + 0x23378);
  (*pcVar28)();
  if (puVar27 + 0x2aee3 < &DAT_00000004) {
    if (puVar10[0xe2] == 0) {
      puVar10[0xe2] = *(int *)(pcVar28 + 0x22c14) - 0x58a0;
      puVar10[0xe3] = *(int *)(pcVar28 + 0x22c14) - 0x5858;
      puVar10[0xe4] = *(int *)(pcVar28 + 0x22c14) - 0x5828;
      if ((int)(*(byte *)((int)puVar10 + 0x202) + 7) >> 3 == 1) {
        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x579c;
      }
      else {
        puVar10[0xe5] = *(int *)(pcVar28 + 0x22c14) - 0x5704;
      }
    }
                    /* WARNING: Could not recover jumptable at 0x00030614. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    (*(code *)puVar10[(int)(puVar27 + 0x2afc5)])(puVar13,param_3,uVar14);
    return;
  }
  return;
}

