
void png_write_find_filter(png_structrp png_ptr,png_row_infop row_info)

{
  ulong uVar1;
  png_bytep ppVar2;
  png_bytep ppVar3;
  png_bytep ppVar4;
  byte bVar5;
  byte bVar6;
  int iVar7;
  ulong uVar8;
  ulong uVar9;
  byte *pbVar10;
  ulong uVar11;
  long lVar12;
  int iVar13;
  png_const_bytep input;
  int iVar14;
  ulong uVar15;
  uint uVar16;
  uint uVar17;
  uint uVar18;
  uint uVar19;
  png_const_bytep ppVar20;
  png_bytep ppVar21;
  png_bytep ppVar22;
  png_bytep ppVar23;
  ulong uVar24;
  png_bytep local_58;
  png_bytep local_50;
  
  bVar6 = png_ptr->do_filter;
  uVar1 = row_info->rowbytes;
  uVar16 = (int)(row_info->pixel_depth + 7) >> 3;
  input = png_ptr->row_buf;
  if (uVar1 < 0x1ffffffffffffff) {
    if (((bVar6 & 8) == 0) || (bVar6 == 8)) {
      uVar24 = 0xfffffffffffffeff;
    }
    else {
      pbVar10 = input + 1;
      uVar24 = uVar1;
      if (uVar1 != 0) {
        uVar24 = 0;
        do {
          bVar5 = *pbVar10;
          uVar8 = (ulong)bVar5;
          if (0x7f < bVar5) {
            uVar8 = (ulong)(0x100 - bVar5);
          }
          uVar24 = uVar24 + uVar8;
          pbVar10 = pbVar10 + 1;
        } while (pbVar10 != input + uVar1 + 1);
      }
    }
  }
  else {
    bVar6 = bVar6 & -bVar6;
    uVar24 = 0xfffffffffffffeff;
  }
  if (bVar6 == 0x10) {
    ppVar21 = png_ptr->try_row;
    *ppVar21 = '\x01';
    ppVar20 = input + 1;
    ppVar23 = ppVar21 + 1;
    uVar8 = (ulong)uVar16;
    if (uVar16 != 0) {
      uVar11 = 0;
      do {
        ppVar21[uVar11 + 1] = input[uVar11 + 1];
        uVar11 = uVar11 + 1;
      } while (uVar11 != uVar8);
      ppVar20 = ppVar20 + uVar8;
      ppVar23 = ppVar23 + uVar8;
    }
    if (uVar8 < uVar1) {
      lVar12 = 0;
      do {
        ppVar23[lVar12] = ppVar20[lVar12] - input[lVar12 + 1];
        lVar12 = lVar12 + 1;
      } while (uVar1 - uVar8 != lVar12);
    }
    input = png_ptr->try_row;
LAB_00126e0b:
    if (bVar6 == 0x40) {
      ppVar4 = png_ptr->try_row;
      *ppVar4 = '\x03';
      ppVar2 = png_ptr->row_buf;
      ppVar23 = ppVar2 + 1;
      ppVar21 = ppVar4 + 1;
      ppVar3 = png_ptr->prev_row;
      ppVar22 = ppVar3 + 1;
      if (uVar16 != 0) {
        lVar12 = 1;
        do {
          ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);
          lVar12 = lVar12 + 1;
        } while ((ulong)(uVar16 - 1) + 2 != lVar12);
        lVar12 = (ulong)(uVar16 - 1) + 1;
        ppVar23 = ppVar23 + lVar12;
        ppVar22 = ppVar22 + lVar12;
        ppVar21 = ppVar21 + lVar12;
      }
      if (uVar16 < uVar1) {
        lVar12 = 0;
        do {
          ppVar21[lVar12] =
               ppVar23[lVar12] -
               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);
          iVar7 = (int)lVar12;
          lVar12 = lVar12 + 1;
        } while (uVar16 + 1 + iVar7 < uVar1);
      }
      input = png_ptr->try_row;
      goto LAB_00126e34;
    }
    if ((bVar6 & 0x40) != 0) {
      ppVar22 = png_ptr->try_row;
      *ppVar22 = '\x03';
      ppVar4 = png_ptr->row_buf;
      ppVar23 = ppVar4 + 1;
      ppVar21 = ppVar22 + 1;
      ppVar2 = png_ptr->prev_row;
      local_58 = ppVar2 + 1;
      if (uVar16 == 0) {
        uVar8 = 0;
      }
      else {
        lVar12 = 1;
        uVar8 = 0;
        do {
          bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);
          ppVar22[lVar12] = bVar5;
          uVar17 = (uint)bVar5;
          if (0x7f < bVar5) {
            uVar17 = 0x100 - bVar5;
          }
          uVar8 = uVar8 + uVar17;
          lVar12 = lVar12 + 1;
        } while (lVar12 != (ulong)(uVar16 - 1) + 2);
        lVar12 = (ulong)(uVar16 - 1) + 1;
        ppVar23 = ppVar23 + lVar12;
        local_58 = local_58 + lVar12;
        ppVar21 = ppVar21 + lVar12;
      }
      if (uVar16 < uVar1) {
        lVar12 = 0;
        do {
          uVar18 = (uint)ppVar23[lVar12] -
                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1);
          ppVar21[lVar12] = (png_byte)uVar18;
          uVar17 = uVar18 & 0xff;
          if (0x7f < (uVar18 & 0xff)) {
            uVar17 = 0x100 - (uVar18 & 0xff);
          }
          uVar8 = uVar8 + uVar17;
        } while ((uVar8 <= uVar24) &&
                (iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1));
      }
      if (uVar8 < uVar24) {
        input = png_ptr->try_row;
        uVar24 = uVar8;
        if (png_ptr->tst_row != (png_bytep)0x0) {
          png_ptr->try_row = png_ptr->tst_row;
          png_ptr->tst_row = input;
        }
      }
    }
  }
  else {
    if ((bVar6 & 0x10) != 0) {
      ppVar21 = png_ptr->try_row;
      *ppVar21 = '\x01';
      ppVar20 = input + 1;
      ppVar23 = ppVar21 + 1;
      uVar8 = (ulong)uVar16;
      uVar11 = uVar8;
      if (uVar16 != 0) {
        uVar15 = 0;
        uVar11 = 0;
        do {
          bVar5 = input[uVar15 + 1];
          ppVar21[uVar15 + 1] = bVar5;
          uVar9 = (ulong)bVar5;
          if (0x7f < bVar5) {
            uVar9 = (ulong)(0x100 - bVar5);
          }
          uVar11 = uVar11 + uVar9;
          uVar15 = uVar15 + 1;
        } while (uVar15 != uVar8);
        ppVar20 = ppVar20 + uVar8;
        ppVar23 = ppVar23 + uVar8;
      }
      if (uVar8 < uVar1) {
        lVar12 = 0;
        do {
          bVar5 = ppVar20[lVar12] - input[lVar12 + 1];
          ppVar23[lVar12] = bVar5;
          uVar15 = (ulong)bVar5;
          if (0x7f < bVar5) {
            uVar15 = (ulong)(0x100 - bVar5);
          }
          uVar11 = uVar11 + uVar15;
        } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));
      }
      if (uVar11 < uVar24) {
        input = png_ptr->try_row;
        uVar24 = uVar11;
        if (png_ptr->tst_row != (png_bytep)0x0) {
          png_ptr->try_row = png_ptr->tst_row;
          png_ptr->tst_row = input;
        }
      }
    }
    if (bVar6 != 0x20) {
      if ((bVar6 & 0x20) != 0) {
        ppVar23 = png_ptr->try_row;
        *ppVar23 = '\x02';
        ppVar21 = png_ptr->row_buf;
        ppVar22 = png_ptr->prev_row;
        uVar8 = uVar1;
        if (uVar1 != 0) {
          uVar11 = 0;
          uVar8 = 0;
          do {
            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];
            ppVar23[uVar11 + 1] = bVar5;
            uVar15 = (ulong)bVar5;
            if (0x7f < bVar5) {
              uVar15 = (ulong)(0x100 - bVar5);
            }
            uVar8 = uVar8 + uVar15;
          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));
        }
        if (uVar8 < uVar24) {
          input = png_ptr->try_row;
          uVar24 = uVar8;
          if (png_ptr->tst_row != (png_bytep)0x0) {
            png_ptr->try_row = png_ptr->tst_row;
            png_ptr->tst_row = input;
          }
        }
      }
      goto LAB_00126e0b;
    }
    ppVar23 = png_ptr->try_row;
    *ppVar23 = '\x02';
    ppVar21 = png_ptr->row_buf;
    ppVar22 = png_ptr->prev_row;
    if (uVar1 != 0) {
      uVar8 = 0;
      do {
        ppVar23[uVar8 + 1] = ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1];
        uVar8 = uVar8 + 1;
      } while (uVar1 != uVar8);
    }
    input = png_ptr->try_row;
  }
  if (bVar6 == 0x80) {
    ppVar4 = png_ptr->try_row;
    *ppVar4 = '\x04';
    ppVar2 = png_ptr->row_buf;
    ppVar23 = ppVar2 + 1;
    ppVar21 = ppVar4 + 1;
    ppVar3 = png_ptr->prev_row;
    ppVar22 = ppVar3 + 1;
    uVar24 = (ulong)uVar16;
    if (uVar16 != 0) {
      uVar8 = 0;
      do {
        ppVar4[uVar8 + 1] = ppVar2[uVar8 + 1] - ppVar3[uVar8 + 1];
        uVar8 = uVar8 + 1;
      } while (uVar24 != uVar8);
      ppVar23 = ppVar23 + uVar8;
      ppVar22 = ppVar22 + uVar8;
      ppVar21 = ppVar21 + uVar8;
      uVar24 = uVar8;
    }
    if (uVar24 < uVar1) {
      lVar12 = 0;
      do {
        bVar6 = ppVar3[lVar12 + 1];
        uVar16 = (uint)ppVar22[lVar12] - (uint)bVar6;
        uVar17 = (uint)ppVar2[lVar12 + 1] - (uint)bVar6;
        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);
        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);
        uVar18 = (int)(uVar16 + uVar17) >> 0x1f;
        iVar7 = (uVar16 + uVar17 ^ uVar18) - uVar18;
        if (((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)) &&
           (bVar5 = bVar6, iVar14 <= iVar7)) {
          bVar5 = ppVar22[lVar12];
        }
        ppVar21[lVar12] = ppVar23[lVar12] - bVar5;
        lVar12 = lVar12 + 1;
      } while (uVar1 - uVar24 != lVar12);
    }
    input = png_ptr->try_row;
  }
  else if ((bVar6 & 0x80) != 0) {
    ppVar21 = png_ptr->try_row;
    *ppVar21 = '\x04';
    ppVar22 = png_ptr->row_buf;
    ppVar23 = ppVar22 + 1;
    local_50 = ppVar21 + 1;
    ppVar4 = png_ptr->prev_row;
    local_58 = ppVar4 + 1;
    uVar8 = (ulong)uVar16;
    uVar11 = uVar8;
    if (uVar16 != 0) {
      uVar15 = 0;
      uVar11 = 0;
      do {
        bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1];
        ppVar21[uVar15 + 1] = bVar6;
        uVar9 = (ulong)bVar6;
        if (0x7f < bVar6) {
          uVar9 = (ulong)(0x100 - bVar6);
        }
        uVar11 = uVar11 + uVar9;
        uVar15 = uVar15 + 1;
      } while (uVar15 != uVar8);
      ppVar23 = ppVar23 + uVar8;
      local_58 = local_58 + uVar8;
      local_50 = local_50 + uVar8;
    }
    if (uVar8 < uVar1) {
      lVar12 = 0;
      do {
        uVar18 = (uint)ppVar4[lVar12 + 1];
        uVar16 = local_58[lVar12] - uVar18;
        uVar17 = ppVar22[lVar12 + 1] - uVar18;
        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);
        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);
        uVar19 = (int)(uVar16 + uVar17) >> 0x1f;
        iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19;
        if (((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&
           (uVar16 = uVar18, iVar14 <= iVar7)) {
          uVar16 = (uint)local_58[lVar12];
        }
        uVar16 = ppVar23[lVar12] - uVar16;
        local_50[lVar12] = (png_byte)uVar16;
        uVar17 = uVar16 & 0xff;
        if (0x7f < (uVar16 & 0xff)) {
          uVar17 = 0x100 - (uVar16 & 0xff);
        }
        uVar11 = uVar11 + uVar17;
      } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));
    }
    if (uVar11 < uVar24) {
      input = png_ptr->try_row;
      if (png_ptr->tst_row != (png_bytep)0x0) {
        png_ptr->try_row = png_ptr->tst_row;
        png_ptr->tst_row = input;
      }
    }
  }
LAB_00126e34:
  png_compress_IDAT(png_ptr,input,row_info->rowbytes + 1,0);
  ppVar23 = png_ptr->prev_row;
  if (ppVar23 != (png_bytep)0x0) {
    png_ptr->prev_row = png_ptr->row_buf;
    png_ptr->row_buf = ppVar23;
  }
  png_write_finish_row(png_ptr);
  uVar16 = png_ptr->flush_rows + 1;
  png_ptr->flush_rows = uVar16;
  if ((png_ptr->flush_dist <= uVar16) && (png_ptr->flush_dist != 0)) {
    png_write_flush(png_ptr);
  }
  return;
}



void FUN_00126d89(long param_1,long param_2)

{
  ulong uVar1;
  undefined1 *puVar2;
  byte bVar3;
  byte bVar4;
  int iVar5;
  long lVar6;
  ulong uVar7;
  ulong uVar8;
  byte *pbVar9;
  ulong uVar10;
  long lVar11;
  int iVar12;
  int iVar13;
  ulong uVar14;
  uint uVar15;
  uint uVar16;
  long lVar17;
  uint uVar18;
  uint uVar19;
  undefined1 *puVar20;
  long lVar21;
  ulong uVar22;
  long lVar23;
  long local_58;
  undefined1 *local_50;
  
  bVar4 = *(byte *)(param_1 + 0x266);
  uVar1 = *(ulong *)(param_2 + 8);
  uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3;
  lVar23 = *(long *)(param_1 + 0x228);
  if (uVar1 < 0x1ffffffffffffff) {
    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {
      uVar22 = 0xfffffffffffffeff;
    }
    else {
      pbVar9 = (byte *)(lVar23 + 1);
      uVar22 = uVar1;
      if (uVar1 != 0) {
        uVar22 = 0;
        do {
          bVar3 = *pbVar9;
          uVar7 = (ulong)bVar3;
          if (0x7f < bVar3) {
            uVar7 = (ulong)(0x100 - bVar3);
          }
          uVar22 = uVar22 + uVar7;
          pbVar9 = pbVar9 + 1;
        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));
      }
    }
  }
  else {
    bVar4 = bVar4 & -bVar4;
    uVar22 = 0xfffffffffffffeff;
  }
  if (bVar4 == 0x10) {
    puVar2 = *(undefined1 **)(param_1 + 0x230);
    *puVar2 = 1;
    lVar21 = lVar23 + 1;
    puVar20 = puVar2 + 1;
    uVar7 = (ulong)uVar15;
    if (uVar15 != 0) {
      uVar10 = 0;
      do {
        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);
        uVar10 = uVar10 + 1;
      } while (uVar10 != uVar7);
      lVar21 = lVar21 + uVar7;
      puVar20 = puVar20 + uVar7;
    }
    if (uVar7 < uVar1) {
      lVar17 = 0;
      do {
        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);
        lVar17 = lVar17 + 1;
      } while (uVar1 - uVar7 != lVar17);
    }
    lVar23 = *(long *)(param_1 + 0x230);
LAB_00126e0b:
    if (bVar4 == 0x40) {
      puVar2 = *(undefined1 **)(param_1 + 0x230);
      *puVar2 = 3;
      lVar17 = *(long *)(param_1 + 0x228);
      lVar23 = lVar17 + 1;
      puVar20 = puVar2 + 1;
      lVar6 = *(long *)(param_1 + 0x220);
      lVar21 = lVar6 + 1;
      if (uVar15 != 0) {
        lVar11 = 1;
        do {
          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);
          lVar11 = lVar11 + 1;
        } while ((ulong)(uVar15 - 1) + 2 != lVar11);
        lVar6 = (ulong)(uVar15 - 1) + 1;
        lVar23 = lVar23 + lVar6;
        lVar21 = lVar21 + lVar6;
        puVar20 = puVar20 + lVar6;
      }
      if (uVar15 < uVar1) {
        lVar6 = 0;
        do {
          puVar20[lVar6] =
               *(char *)(lVar23 + lVar6) -
               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))
                     >> 1);
          iVar5 = (int)lVar6;
          lVar6 = lVar6 + 1;
        } while (uVar15 + 1 + iVar5 < uVar1);
      }
      lVar23 = *(long *)(param_1 + 0x230);
      goto LAB_00126e34;
    }
    if ((bVar4 & 0x40) != 0) {
      puVar2 = *(undefined1 **)(param_1 + 0x230);
      *puVar2 = 3;
      lVar17 = *(long *)(param_1 + 0x228);
      lVar21 = lVar17 + 1;
      puVar20 = puVar2 + 1;
      lVar6 = *(long *)(param_1 + 0x220);
      local_58 = lVar6 + 1;
      if (uVar15 == 0) {
        uVar7 = 0;
      }
      else {
        lVar11 = 1;
        uVar7 = 0;
        do {
          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);
          puVar2[lVar11] = bVar3;
          uVar10 = (ulong)bVar3;
          if (0x7f < bVar3) {
            uVar10 = (ulong)(0x100 - bVar3);
          }
          uVar7 = uVar7 + uVar10;
          lVar11 = lVar11 + 1;
        } while (lVar11 != (ulong)(uVar15 - 1) + 2);
        lVar6 = (ulong)(uVar15 - 1) + 1;
        lVar21 = lVar21 + lVar6;
        local_58 = local_58 + lVar6;
        puVar20 = puVar20 + lVar6;
      }
      if (uVar15 < uVar1) {
        lVar6 = 0;
        do {
          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -
                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))
                   >> 1);
          puVar20[lVar6] = (char)uVar18;
          uVar16 = uVar18 & 0xff;
          if (0x7f < (uVar18 & 0xff)) {
            uVar16 = 0x100 - (uVar18 & 0xff);
          }
          uVar7 = uVar7 + uVar16;
        } while ((uVar7 <= uVar22) &&
                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));
      }
      if (uVar7 < uVar22) {
        lVar23 = *(long *)(param_1 + 0x230);
        uVar22 = uVar7;
        if (*(long *)(param_1 + 0x238) != 0) {
          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);
          *(long *)(param_1 + 0x238) = lVar23;
        }
      }
    }
  }
  else {
    if ((bVar4 & 0x10) != 0) {
      puVar2 = *(undefined1 **)(param_1 + 0x230);
      *puVar2 = 1;
      lVar21 = lVar23 + 1;
      puVar20 = puVar2 + 1;
      uVar7 = (ulong)uVar15;
      uVar10 = uVar7;
      if (uVar15 != 0) {
        uVar14 = 0;
        uVar10 = 0;
        do {
          bVar3 = *(byte *)(lVar23 + 1 + uVar14);
          puVar2[uVar14 + 1] = bVar3;
          uVar8 = (ulong)bVar3;
          if (0x7f < bVar3) {
            uVar8 = (ulong)(0x100 - bVar3);
          }
          uVar10 = uVar10 + uVar8;
          uVar14 = uVar14 + 1;
        } while (uVar14 != uVar7);
        lVar21 = lVar21 + uVar7;
        puVar20 = puVar20 + uVar7;
      }
      if (uVar7 < uVar1) {
        lVar17 = 0;
        do {
          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);
          puVar20[lVar17] = bVar3;
          uVar14 = (ulong)bVar3;
          if (0x7f < bVar3) {
            uVar14 = (ulong)(0x100 - bVar3);
          }
          uVar10 = uVar10 + uVar14;
        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));
      }
      if (uVar10 < uVar22) {
        lVar23 = *(long *)(param_1 + 0x230);
        uVar22 = uVar10;
        if (*(long *)(param_1 + 0x238) != 0) {
          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);
          *(long *)(param_1 + 0x238) = lVar23;
        }
      }
    }
    if (bVar4 != 0x20) {
      if ((bVar4 & 0x20) != 0) {
        puVar20 = *(undefined1 **)(param_1 + 0x230);
        *puVar20 = 2;
        lVar21 = *(long *)(param_1 + 0x228);
        lVar17 = *(long *)(param_1 + 0x220);
        uVar7 = uVar1;
        if (uVar1 != 0) {
          uVar10 = 0;
          uVar7 = 0;
          do {
            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);
            puVar20[uVar10 + 1] = bVar3;
            uVar14 = (ulong)bVar3;
            if (0x7f < bVar3) {
              uVar14 = (ulong)(0x100 - bVar3);
            }
            uVar7 = uVar7 + uVar14;
          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));
        }
        if (uVar7 < uVar22) {
          lVar23 = *(long *)(param_1 + 0x230);
          uVar22 = uVar7;
          if (*(long *)(param_1 + 0x238) != 0) {
            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);
            *(long *)(param_1 + 0x238) = lVar23;
          }
        }
      }
      goto LAB_00126e0b;
    }
    puVar20 = *(undefined1 **)(param_1 + 0x230);
    *puVar20 = 2;
    lVar23 = *(long *)(param_1 + 0x228);
    lVar21 = *(long *)(param_1 + 0x220);
    if (uVar1 != 0) {
      uVar7 = 0;
      do {
        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);
        uVar7 = uVar7 + 1;
      } while (uVar1 != uVar7);
    }
    lVar23 = *(long *)(param_1 + 0x230);
  }
  if (bVar4 == 0x80) {
    puVar2 = *(undefined1 **)(param_1 + 0x230);
    *puVar2 = 4;
    lVar17 = *(long *)(param_1 + 0x228);
    lVar23 = lVar17 + 1;
    puVar20 = puVar2 + 1;
    lVar6 = *(long *)(param_1 + 0x220);
    lVar21 = lVar6 + 1;
    uVar22 = (ulong)uVar15;
    if (uVar15 != 0) {
      uVar7 = 0;
      do {
        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);
        uVar7 = uVar7 + 1;
      } while (uVar22 != uVar7);
      lVar23 = lVar23 + uVar7;
      lVar21 = lVar21 + uVar7;
      puVar20 = puVar20 + uVar7;
      uVar22 = uVar7;
    }
    if (uVar22 < uVar1) {
      lVar11 = 0;
      do {
        bVar3 = *(byte *)(lVar6 + 1 + lVar11);
        bVar4 = *(byte *)(lVar17 + 1 + lVar11);
        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;
        uVar16 = (uint)bVar4 - (uint)bVar3;
        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);
        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);
        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;
        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;
        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {
          bVar4 = *(byte *)(lVar21 + lVar11);
        }
        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;
        lVar11 = lVar11 + 1;
      } while (uVar1 - uVar22 != lVar11);
    }
    lVar23 = *(long *)(param_1 + 0x230);
  }
  else if ((bVar4 & 0x80) != 0) {
    puVar20 = *(undefined1 **)(param_1 + 0x230);
    *puVar20 = 4;
    lVar17 = *(long *)(param_1 + 0x228);
    lVar21 = lVar17 + 1;
    local_50 = puVar20 + 1;
    lVar6 = *(long *)(param_1 + 0x220);
    local_58 = lVar6 + 1;
    uVar7 = (ulong)uVar15;
    uVar10 = uVar7;
    if (uVar15 != 0) {
      uVar14 = 0;
      uVar10 = 0;
      do {
        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);
        puVar20[uVar14 + 1] = bVar4;
        uVar8 = (ulong)bVar4;
        if (0x7f < bVar4) {
          uVar8 = (ulong)(0x100 - bVar4);
        }
        uVar10 = uVar10 + uVar8;
        uVar14 = uVar14 + 1;
      } while (uVar14 != uVar7);
      lVar21 = lVar21 + uVar7;
      local_58 = local_58 + uVar7;
      local_50 = local_50 + uVar7;
    }
    if (uVar7 < uVar1) {
      lVar11 = 0;
      do {
        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);
        bVar4 = *(byte *)(lVar17 + 1 + lVar11);
        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;
        uVar16 = bVar4 - uVar18;
        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);
        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);
        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;
        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;
        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&
           (uVar15 = uVar18, iVar13 <= iVar5)) {
          uVar15 = (uint)*(byte *)(local_58 + lVar11);
        }
        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;
        local_50[lVar11] = (char)uVar15;
        uVar16 = uVar15 & 0xff;
        if (0x7f < (uVar15 & 0xff)) {
          uVar16 = 0x100 - (uVar15 & 0xff);
        }
        uVar10 = uVar10 + uVar16;
      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));
    }
    if (uVar10 < uVar22) {
      lVar23 = *(long *)(param_1 + 0x230);
      if (*(long *)(param_1 + 0x238) != 0) {
        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);
        *(long *)(param_1 + 0x238) = lVar23;
      }
    }
  }
LAB_00126e34:
  FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);
  lVar23 = *(long *)(param_1 + 0x220);
  if (lVar23 != 0) {
    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);
    *(long *)(param_1 + 0x228) = lVar23;
  }
  FUN_001268bf(param_1);
  uVar15 = *(int *)(param_1 + 0x29c) + 1;
  *(uint *)(param_1 + 0x29c) = uVar15;
  if ((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)) {
    png_write_flush(param_1);
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x38
MOV RBX,RDI
MOV qword ptr [RSP + 0x8],RSI
MOVZX EAX,byte ptr [RDI + 0x266]
MOVZX EDI,AL
MOV RDX,qword ptr [RSI + 0x8]
MOVZX R8D,byte ptr [RSI + 0x13]
ADD R8D,0x7
SAR R8D,0x3
MOV dword ptr [RSP],R8D
MOV RSI,qword ptr [RBX + 0x228]
MOV RCX,0x1fffffffffffffe
CMP RDX,RCX
JBE 0x00126ea7
MOV EAX,EDI
NEG EAX
AND EDI,EAX
MOV R15,-0x101
CMP EDI,0x10
JZ 0x00126f07
TEST DIL,0x10
JNZ 0x00126f76
CMP EDI,0x20
JZ 0x00127063
TEST DIL,0x20
JNZ 0x001270a9
CMP EDI,0x40
JZ 0x00127148
TEST DIL,0x40
JNZ 0x001271f6
CMP EDI,0x80
JZ 0x00127350
TEST DIL,0x80
JNZ 0x00127444
MOV RAX,qword ptr [RSP + 0x8]
MOV RDX,qword ptr [RAX + 0x8]
ADD RDX,0x1
MOV ECX,0x0
MOV RDI,RBX
CALL 0x00126469
MOV RAX,qword ptr [RBX + 0x220]
TEST RAX,RAX
JZ 0x00126e6f
MOV RDX,qword ptr [RBX + 0x228]
MOV qword ptr [RBX + 0x220],RDX
MOV qword ptr [RBX + 0x228],RAX
MOV RDI,RBX
CALL 0x001268bf
MOV EAX,dword ptr [RBX + 0x29c]
ADD EAX,0x1
MOV dword ptr [RBX + 0x29c],EAX
MOV EDX,dword ptr [RBX + 0x298]
CMP EAX,EDX
JC 0x00126e98
TEST EDX,EDX
JNZ 0x001275e2
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
TEST AL,0x8
JZ 0x00126eb0
CMP EDI,0x8
JNZ 0x00126ebc
MOV R15,-0x101
JMP 0x00126de5
LEA RCX,[RSI + 0x1]
TEST RDX,RDX
JZ 0x00126eff
LEA R11,[RSI + RDX*0x1 + 0x1]
MOV R15D,0x0
MOV R10D,0x100
MOVZX EAX,byte ptr [RCX]
MOVZX R9D,AL
MOVZX EAX,AL
MOV R8D,R10D
SUB R8D,R9D
CMP R9D,0x7f
CMOVA RAX,R8
ADD R15,RAX
ADD RCX,0x1
CMP RCX,R11
JNZ 0x00126ed6
JMP 0x00126de5
MOV R15,RDX
JMP 0x00126de5
MOV R11,qword ptr [RBX + 0x230]
MOV byte ptr [R11],0x1
LEA R10,[RSI + 0x1]
LEA R9,[R11 + 0x1]
MOV R8D,dword ptr [RSP]
TEST R8,R8
JZ 0x00126f41
MOV EAX,0x0
MOVZX ECX,byte ptr [RSI + RAX*0x1 + 0x1]
MOV byte ptr [R11 + RAX*0x1 + 0x1],CL
ADD RAX,0x1
CMP RAX,R8
JNZ 0x00126f28
ADD R10,R8
ADD R9,R8
CMP RDX,R8
JBE 0x00126f6a
MOV RAX,RDX
SUB RAX,R8
MOV R8,RAX
MOV EAX,0x0
MOVZX ECX,byte ptr [R10 + RAX*0x1]
SUB CL,byte ptr [RSI + RAX*0x1 + 0x1]
MOV byte ptr [R9 + RAX*0x1],CL
ADD RAX,0x1
CMP R8,RAX
JNZ 0x00126f54
MOV RSI,qword ptr [RBX + 0x230]
JMP 0x00126e0b
MOV RBP,qword ptr [RBX + 0x230]
MOV byte ptr [RBP],0x1
LEA R13,[RSI + 0x1]
LEA R12,[RBP + 0x1]
MOV R11D,dword ptr [RSP]
TEST R11,R11
JZ 0x0012705b
MOV R8D,0x0
MOV ECX,0x0
MOV R14D,0x100
MOVZX EAX,byte ptr [RSI + R8*0x1 + 0x1]
MOV byte ptr [RBP + R8*0x1 + 0x1],AL
MOVZX R9D,AL
MOVZX EAX,AL
MOV R10D,R14D
SUB R10D,R9D
CMP R9D,0x7f
CMOVA RAX,R10
ADD RCX,RAX
ADD R8,0x1
CMP R8,R11
JNZ 0x00126fa7
ADD R13,R11
ADD R12,R11
CMP RDX,R11
JBE 0x00127025
MOV RBP,RDX
SUB RBP,R11
MOV R8D,0x0
MOV R11D,0x100
MOVZX EAX,byte ptr [R13 + R8*0x1]
SUB AL,byte ptr [RSI + R8*0x1 + 0x1]
MOV byte ptr [R12 + R8*0x1],AL
MOVZX R10D,AL
MOVZX EAX,AL
MOV R9D,R11D
SUB R9D,R10D
CMP R10D,0x7f
CMOVA RAX,R9
ADD RCX,RAX
CMP R15,RCX
JC 0x00127025
ADD R8,0x1
CMP R8,RBP
JNZ 0x00126ff0
CMP R15,RCX
JBE 0x00126df8
MOV RSI,qword ptr [RBX + 0x230]
MOV RAX,qword ptr [RBX + 0x238]
MOV R15,RCX
TEST RAX,RAX
JZ 0x00126df8
MOV qword ptr [RBX + 0x230],RAX
MOV qword ptr [RBX + 0x238],RSI
JMP 0x00126df8
MOV RCX,R11
JMP 0x00126fd9
MOV RSI,qword ptr [RBX + 0x230]
MOV byte ptr [RSI],0x2
MOV R8,qword ptr [RBX + 0x228]
MOV R9,qword ptr [RBX + 0x220]
TEST RDX,RDX
JZ 0x0012709d
MOV EAX,0x0
MOVZX ECX,byte ptr [R8 + RAX*0x1 + 0x1]
SUB CL,byte ptr [R9 + RAX*0x1 + 0x1]
MOV byte ptr [RSI + RAX*0x1 + 0x1],CL
ADD RAX,0x1
CMP RDX,RAX
JNZ 0x00127085
MOV RSI,qword ptr [RBX + 0x230]
JMP 0x00126e1e
MOV R11,qword ptr [RBX + 0x230]
MOV byte ptr [R11],0x2
MOV RBP,qword ptr [RBX + 0x228]
MOV R12,qword ptr [RBX + 0x220]
TEST RDX,RDX
JZ 0x00127143
MOV ECX,0x0
MOV R10D,0x0
MOV R13D,0x100
MOVZX EAX,byte ptr [RBP + RCX*0x1 + 0x1]
SUB AL,byte ptr [R12 + RCX*0x1 + 0x1]
MOV byte ptr [R11 + RCX*0x1 + 0x1],AL
MOVZX R9D,AL
MOVZX EAX,AL
MOV R8D,R13D
SUB R8D,R9D
CMP R9D,0x7f
CMOVA RAX,R8
ADD R10,RAX
CMP R15,R10
JC 0x0012710d
ADD RCX,0x1
CMP RDX,RCX
JNZ 0x001270d8
CMP R15,R10
JBE 0x00126e0b
MOV RSI,qword ptr [RBX + 0x230]
MOV RAX,qword ptr [RBX + 0x238]
MOV R15,R10
TEST RAX,RAX
JZ 0x00126e0b
MOV qword ptr [RBX + 0x230],RAX
MOV qword ptr [RBX + 0x238],RSI
JMP 0x00126e0b
MOV R10,RDX
JMP 0x0012710d
MOV R8,qword ptr [RBX + 0x230]
MOV byte ptr [R8],0x3
MOV RSI,qword ptr [RBX + 0x228]
LEA R10,[RSI + 0x1]
LEA RDI,[R8 + 0x1]
MOV R11,qword ptr [RBX + 0x220]
LEA R9,[R11 + 0x1]
MOV EAX,dword ptr [RSP]
TEST EAX,EAX
JZ 0x001271ac
LEA R12D,[RAX + -0x1]
LEA RBP,[R12 + 0x2]
MOV EAX,0x1
MOVZX ECX,byte ptr [R11 + RAX*0x1]
SHR CL,0x1
MOVZX R14D,byte ptr [RSI + RAX*0x1]
SUB R14D,ECX
MOV byte ptr [R8 + RAX*0x1],R14B
ADD RAX,0x1
CMP RBP,RAX
JNZ 0x00127182
LEA RAX,[R12 + 0x1]
ADD R10,RAX
ADD R9,RAX
ADD RDI,RAX
MOV ECX,dword ptr [RSP]
MOV EAX,ECX
CMP RDX,RAX
JBE 0x001271ea
MOV EAX,0x0
ADD ECX,0x1
MOV R8D,ECX
MOVZX ECX,byte ptr [R9 + RAX*0x1]
MOVZX R11D,byte ptr [RSI + RAX*0x1 + 0x1]
ADD ECX,R11D
SAR ECX,0x1
MOVZX R14D,byte ptr [R10 + RAX*0x1]
SUB R14D,ECX
MOV byte ptr [RDI + RAX*0x1],R14B
LEA ECX,[R8 + RAX*0x1]
ADD RAX,0x1
CMP RDX,RCX
JA 0x001271c1
MOV RSI,qword ptr [RBX + 0x230]
JMP 0x00126e34
MOV RBP,qword ptr [RBX + 0x230]
MOV byte ptr [RBP],0x3
MOV R11,qword ptr [RBX + 0x228]
LEA R12,[R11 + 0x1]
LEA R14,[RBP + 0x1]
MOV R13,qword ptr [RBX + 0x220]
LEA RAX,[R13 + 0x1]
MOV qword ptr [RSP + 0x10],RAX
MOV EAX,dword ptr [RSP]
TEST EAX,EAX
JZ 0x0012730b
LEA EAX,[RAX + -0x1]
MOV qword ptr [RSP + 0x18],RAX
ADD RAX,0x2
MOV ECX,0x1
MOV R8D,0x0
MOV qword ptr [RSP + 0x20],RDX
MOV RDX,RAX
MOVZX EAX,byte ptr [R13 + RCX*0x1]
SHR AL,0x1
MOVZX R10D,byte ptr [R11 + RCX*0x1]
SUB R10D,EAX
MOV EAX,R10D
MOV byte ptr [RBP + RCX*0x1],R10B
MOVZX R10D,R10B
MOVZX EAX,AL
MOV R9D,0x100
SUB R9D,R10D
CMP R10D,0x7f
CMOVA RAX,R9
ADD R8,RAX
ADD RCX,0x1
CMP RCX,RDX
JNZ 0x0012724a
MOV RDX,qword ptr [RSP + 0x20]
MOV RAX,qword ptr [RSP + 0x18]
ADD RAX,0x1
ADD R12,RAX
ADD qword ptr [RSP + 0x10],RAX
ADD R14,RAX
MOV EBP,dword ptr [RSP]
MOV EAX,EBP
CMP RDX,RAX
JBE 0x0012731a
MOV ECX,0x0
MOV R13D,0x100
ADD EBP,0x1
MOV dword ptr [RSP + 0x18],EDI
MOV R10,qword ptr [RSP + 0x10]
MOVZX EAX,byte ptr [R10 + RCX*0x1]
MOVZX EDI,byte ptr [R11 + RCX*0x1 + 0x1]
ADD EAX,EDI
SAR EAX,0x1
MOVZX EDI,byte ptr [R12 + RCX*0x1]
SUB EDI,EAX
MOV byte ptr [R14 + RCX*0x1],DIL
MOVZX R9D,DIL
MOVZX EAX,DIL
MOV EDI,R13D
SUB EDI,R9D
CMP R9D,0x7f
CMOVA RAX,RDI
ADD R8,RAX
CMP R15,R8
JC 0x00127316
LEA EAX,[RBP + RCX*0x1]
ADD RCX,0x1
CMP RDX,RAX
JA 0x001272c0
MOV EDI,dword ptr [RSP + 0x18]
JMP 0x0012731a
MOV EBP,dword ptr [RSP]
MOV R8D,0x0
JMP 0x001272a2
MOV EDI,dword ptr [RSP + 0x18]
CMP R15,R8
JBE 0x00126e1e
MOV RSI,qword ptr [RBX + 0x230]
MOV RAX,qword ptr [RBX + 0x238]
MOV R15,R8
TEST RAX,RAX
JZ 0x00126e1e
MOV qword ptr [RBX + 0x230],RAX
MOV qword ptr [RBX + 0x238],RSI
JMP 0x00126e1e
MOV RSI,qword ptr [RBX + 0x230]
MOV byte ptr [RSI],0x4
MOV RBP,qword ptr [RBX + 0x228]
LEA R15,[RBP + 0x1]
LEA R13,[RSI + 0x1]
MOV R12,qword ptr [RBX + 0x220]
LEA R14,[R12 + 0x1]
MOV R8D,dword ptr [RSP]
TEST R8,R8
JZ 0x001273c0
MOV EAX,0x0
MOVZX ECX,byte ptr [RBP + RAX*0x1 + 0x1]
SUB CL,byte ptr [R12 + RAX*0x1 + 0x1]
MOV byte ptr [RSI + RAX*0x1 + 0x1],CL
ADD RAX,0x1
CMP R8,RAX
JNZ 0x00127383
ADD R15,RAX
ADD R14,RAX
ADD R13,RAX
CMP RDX,RAX
JBE 0x00127438
SUB RDX,RAX
MOV RAX,RDX
MOV EDX,0x0
MOV qword ptr [RSP],RBX
MOV RBX,RAX
JMP 0x001273e4
MOV RAX,R8
JMP 0x001273a3
CMP ESI,EAX
CMOVLE R9D,R11D
MOV R8D,R9D
MOVZX EAX,byte ptr [R15 + RDX*0x1]
SUB EAX,R8D
MOV byte ptr [R13 + RDX*0x1],AL
ADD RDX,0x1
CMP RBX,RDX
JZ 0x00127434
MOVZX R11D,byte ptr [R14 + RDX*0x1]
MOVZX R9D,byte ptr [R12 + RDX*0x1 + 0x1]
MOVZX R8D,byte ptr [RBP + RDX*0x1 + 0x1]
MOV EAX,R11D
SUB EAX,R9D
MOV EDI,R8D
SUB EDI,R9D
MOV ESI,EAX
SAR ESI,0x1f
MOV ECX,ESI
XOR ECX,EAX
SUB ECX,ESI
MOV R10D,EDI
SAR R10D,0x1f
MOV ESI,R10D
XOR ESI,EDI
SUB ESI,R10D
ADD EAX,EDI
MOV R10D,EAX
SAR R10D,0x1f
XOR EAX,R10D
SUB EAX,R10D
CMP ECX,ESI
JG 0x001273c5
CMP ECX,EAX
JLE 0x001273ce
JMP 0x001273c5
MOV RBX,qword ptr [RSP]
MOV RSI,qword ptr [RBX + 0x230]
JMP 0x00126e34
MOV R11,qword ptr [RBX + 0x230]
MOV byte ptr [R11],0x4
MOV R13,qword ptr [RBX + 0x228]
LEA R14,[R13 + 0x1]
LEA RAX,[R11 + 0x1]
MOV qword ptr [RSP + 0x18],RAX
MOV R9,qword ptr [RBX + 0x220]
MOV qword ptr [RSP + 0x20],R9
LEA RAX,[R9 + 0x1]
MOV qword ptr [RSP + 0x10],RAX
MOV R8D,dword ptr [RSP]
TEST R8,R8
JZ 0x001274f9
MOV EDI,0x0
MOV ECX,0x0
MOV EBP,0x100
MOVZX EAX,byte ptr [R13 + RDI*0x1 + 0x1]
SUB AL,byte ptr [R9 + RDI*0x1 + 0x1]
MOV byte ptr [R11 + RDI*0x1 + 0x1],AL
MOVZX R10D,AL
MOVZX EAX,AL
MOV R12D,EBP
SUB R12D,R10D
CMP R10D,0x7f
CMOVA RAX,R12
ADD RCX,RAX
ADD RDI,0x1
CMP RDI,R8
JNZ 0x00127490
ADD R14,R8
ADD qword ptr [RSP + 0x10],R8
ADD qword ptr [RSP + 0x18],R8
CMP RDX,R8
JBE 0x001275af
SUB RDX,R8
MOV qword ptr [RSP],RDX
MOV EDX,0x0
MOV qword ptr [RSP + 0x28],RSI
MOV RBP,qword ptr [RSP + 0x18]
MOV R12,qword ptr [RSP + 0x20]
MOV qword ptr [RSP + 0x18],RBX
JMP 0x00127539
MOV RCX,R8
JMP 0x001274ce
CMP EDI,EAX
MOV R9D,R10D
CMOVLE R9D,EBX
MOVZX EAX,byte ptr [R14 + RDX*0x1]
SUB EAX,R9D
MOV byte ptr [RBP + RDX*0x1],AL
MOVZX EDI,AL
MOVZX EAX,AL
MOV ESI,0x100
SUB ESI,EDI
CMP EDI,0x7f
CMOVA RAX,RSI
ADD RCX,RAX
CMP R15,RCX
JC 0x001275a5
ADD RDX,0x1
CMP RDX,qword ptr [RSP]
JZ 0x00127599
MOV RAX,qword ptr [RSP + 0x10]
MOVZX EBX,byte ptr [RAX + RDX*0x1]
MOVZX R10D,byte ptr [R12 + RDX*0x1 + 0x1]
MOVZX R9D,byte ptr [R13 + RDX*0x1 + 0x1]
MOV EAX,EBX
SUB EAX,R10D
MOV R8D,R9D
SUB R8D,R10D
MOV EDI,EAX
SAR EDI,0x1f
MOV ESI,EDI
XOR ESI,EAX
SUB ESI,EDI
MOV R11D,R8D
SAR R11D,0x1f
MOV EDI,R11D
XOR EDI,R8D
SUB EDI,R11D
ADD EAX,R8D
MOV R11D,EAX
SAR R11D,0x1f
XOR EAX,R11D
SUB EAX,R11D
CMP ESI,EDI
JG 0x001274fe
CMP ESI,EAX
JLE 0x00127507
JMP 0x001274fe
MOV RSI,qword ptr [RSP + 0x28]
MOV RBX,qword ptr [RSP + 0x18]
JMP 0x001275af
MOV RSI,qword ptr [RSP + 0x28]
MOV RBX,qword ptr [RSP + 0x18]
CMP R15,RCX
JBE 0x00126e34
MOV RSI,qword ptr [RBX + 0x230]
MOV RAX,qword ptr [RBX + 0x238]
TEST RAX,RAX
JZ 0x00126e34
MOV qword ptr [RBX + 0x230],RAX
MOV qword ptr [RBX + 0x238],RSI
JMP 0x00126e34
MOV RDI,RBX
CALL 0x00106900
JMP 0x00126e98
(translation_unit "void FUN_00126d89(long param_1,long param_2)\n\n{\n  ulong uVar1;\n  undefined1 *puVar2;\n  byte bVar3;\n  byte bVar4;\n  int iVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  byte *pbVar9;\n  ulong uVar10;\n  long lVar11;\n  int iVar12;\n  int iVar13;\n  ulong uVar14;\n  uint uVar15;\n  uint uVar16;\n  long lVar17;\n  uint uVar18;\n  uint uVar19;\n  undefined1 *puVar20;\n  long lVar21;\n  ulong uVar22;\n  long lVar23;\n  long local_58;\n  undefined1 *local_50;\n  \n  bVar4 = *(byte *)(param_1 + 0x266);\n  uVar1 = *(ulong *)(param_2 + 8);\n  uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3;\n  lVar23 = *(long *)(param_1 + 0x228);\n  if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }\n  else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }\n  if (bVar4 == 0x10) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  if (bVar4 == 0x80) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }\nLAB_00126e34:\n  FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);\n  lVar23 = *(long *)(param_1 + 0x220);\n  if (lVar23 != 0) {\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }\n  FUN_001268bf(param_1);\n  uVar15 = *(int *)(param_1 + 0x29c) + 1;\n  *(uint *)(param_1 + 0x29c) = uVar15;\n  if ((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)) {\n    png_write_flush(param_1);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00126d89(long param_1,long param_2)\n\n{\n  ulong uVar1;\n  undefined1 *puVar2;\n  byte bVar3;\n  byte bVar4;\n  int iVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  byte *pbVar9;\n  ulong uVar10;\n  long lVar11;\n  int iVar12;\n  int iVar13;\n  ulong uVar14;\n  uint uVar15;\n  uint uVar16;\n  long lVar17;\n  uint uVar18;\n  uint uVar19;\n  undefined1 *puVar20;\n  long lVar21;\n  ulong uVar22;\n  long lVar23;\n  long local_58;\n  undefined1 *local_50;\n  \n  bVar4 = *(byte *)(param_1 + 0x266);\n  uVar1 = *(ulong *)(param_2 + 8);\n  uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3;\n  lVar23 = *(long *)(param_1 + 0x228);\n  if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }\n  else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }\n  if (bVar4 == 0x10) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  if (bVar4 == 0x80) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }\nLAB_00126e34:\n  FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);\n  lVar23 = *(long *)(param_1 + 0x220);\n  if (lVar23 != 0) {\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }\n  FUN_001268bf(param_1);\n  uVar15 = *(int *)(param_1 + 0x29c) + 1;\n  *(uint *)(param_1 + 0x29c) = uVar15;\n  if ((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)) {\n    png_write_flush(param_1);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00126d89(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  ulong uVar1;\n  undefined1 *puVar2;\n  byte bVar3;\n  byte bVar4;\n  int iVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  byte *pbVar9;\n  ulong uVar10;\n  long lVar11;\n  int iVar12;\n  int iVar13;\n  ulong uVar14;\n  uint uVar15;\n  uint uVar16;\n  long lVar17;\n  uint uVar18;\n  uint uVar19;\n  undefined1 *puVar20;\n  long lVar21;\n  ulong uVar22;\n  long lVar23;\n  long local_58;\n  undefined1 *local_50;\n  \n  bVar4 = *(byte *)(param_1 + 0x266);\n  uVar1 = *(ulong *)(param_2 + 8);\n  uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3;\n  lVar23 = *(long *)(param_1 + 0x228);\n  if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }\n  else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }\n  if (bVar4 == 0x10) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  if (bVar4 == 0x80) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }\nLAB_00126e34:\n  FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);\n  lVar23 = *(long *)(param_1 + 0x220);\n  if (lVar23 != 0) {\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }\n  FUN_001268bf(param_1);\n  uVar15 = *(int *)(param_1 + 0x29c) + 1;\n  *(uint *)(param_1 + 0x29c) = uVar15;\n  if ((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)) {\n    png_write_flush(param_1);\n  }\n  return;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "undefined1 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "long lVar21;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar22;" type_identifier identifier ;) (declaration "long lVar23;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (expression_statement "bVar4 = *(byte *)(param_1 + 0x266);" (assignment_expression "bVar4 = *(byte *)(param_1 + 0x266)" identifier = (pointer_expression "*(byte *)(param_1 + 0x266)" * (cast_expression "(byte *)(param_1 + 0x266)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x266)" ( (binary_expression "param_1 + 0x266" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(ulong *)(param_2 + 8);" (assignment_expression "uVar1 = *(ulong *)(param_2 + 8)" identifier = (pointer_expression "*(ulong *)(param_2 + 8)" * (cast_expression "(ulong *)(param_2 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3;" (assignment_expression "uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3" identifier = (binary_expression "(int)(*(byte *)(param_2 + 0x13) + 7) >> 3" (cast_expression "(int)(*(byte *)(param_2 + 0x13) + 7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(*(byte *)(param_2 + 0x13) + 7)" ( (binary_expression "*(byte *)(param_2 + 0x13) + 7" (pointer_expression "*(byte *)(param_2 + 0x13)" * (cast_expression "(byte *)(param_2 + 0x13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x13)" ( (binary_expression "param_2 + 0x13" identifier + number_literal) )))) + number_literal) ))) >> number_literal)) ;) (expression_statement "lVar23 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (if_statement "if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }\n  else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }" if (parenthesized_expression "(uVar1 < 0x1ffffffffffffff)" ( (binary_expression "uVar1 < 0x1ffffffffffffff" identifier < number_literal) )) (compound_statement "{\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }" { (if_statement "if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }" if (parenthesized_expression "(((bVar4 & 8) == 0) || (bVar4 == 8))" ( (binary_expression "((bVar4 & 8) == 0) || (bVar4 == 8)" (parenthesized_expression "((bVar4 & 8) == 0)" ( (binary_expression "(bVar4 & 8) == 0" (parenthesized_expression "(bVar4 & 8)" ( (binary_expression "bVar4 & 8" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(bVar4 == 8)" ( (binary_expression "bVar4 == 8" identifier == number_literal) ))) )) (compound_statement "{\n      uVar22 = 0xfffffffffffffeff;\n    }" { (expression_statement "uVar22 = 0xfffffffffffffeff;" (assignment_expression "uVar22 = 0xfffffffffffffeff" identifier = number_literal) ;) }) (else_clause "else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }" else (compound_statement "{\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }" { (expression_statement "pbVar9 = (byte *)(lVar23 + 1);" (assignment_expression "pbVar9 = (byte *)(lVar23 + 1)" identifier = (cast_expression "(byte *)(lVar23 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1)" ( (binary_expression "lVar23 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar22 = uVar1;" (assignment_expression "uVar22 = uVar1" identifier = identifier) ;) (if_statement "if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }" { (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" identifier = number_literal) ;) (do_statement "do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));" do (compound_statement "{\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        }" { (expression_statement "bVar3 = *pbVar9;" (assignment_expression "bVar3 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (expression_statement "uVar7 = (ulong)bVar3;" (assignment_expression "uVar7 = (ulong)bVar3" identifier = (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }" if (parenthesized_expression "(0x7f < bVar3)" ( (binary_expression "0x7f < bVar3" number_literal < identifier) )) (compound_statement "{\n            uVar7 = (ulong)(0x100 - bVar3);\n          }" { (expression_statement "uVar7 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar7 = (ulong)(0x100 - bVar3)" identifier = (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar3)" ( (binary_expression "0x100 - bVar3" number_literal - identifier) )))) ;) })) (expression_statement "uVar22 = uVar22 + uVar7;" (assignment_expression "uVar22 = uVar22 + uVar7" identifier = (binary_expression "uVar22 + uVar7" identifier + identifier)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar9 != (byte *)(lVar23 + 1 + uVar1))" ( (binary_expression "pbVar9 != (byte *)(lVar23 + 1 + uVar1)" identifier != (cast_expression "(byte *)(lVar23 + 1 + uVar1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1 + uVar1)" ( (binary_expression "lVar23 + 1 + uVar1" (binary_expression "lVar23 + 1" identifier + number_literal) + identifier) )))) )) ;) })) }))) }) (else_clause "else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }" else (compound_statement "{\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }" { (expression_statement "bVar4 = bVar4 & -bVar4;" (assignment_expression "bVar4 = bVar4 & -bVar4" identifier = (binary_expression "bVar4 & -bVar4" identifier & (unary_expression "-bVar4" - identifier))) ;) (expression_statement "uVar22 = 0xfffffffffffffeff;" (assignment_expression "uVar22 = 0xfffffffffffffeff" identifier = number_literal) ;) }))) (if_statement "if (bVar4 == 0x10) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }" if (parenthesized_expression "(bVar4 == 0x10)" ( (binary_expression "bVar4 == 0x10" identifier == number_literal) )) (compound_statement "{\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }" { (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar2 = 1;" (assignment_expression "*puVar2 = 1" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "lVar21 = lVar23 + 1;" (assignment_expression "lVar21 = lVar23 + 1" identifier = (binary_expression "lVar23 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = (ulong)uVar15;" (assignment_expression "uVar7 = (ulong)uVar15" identifier = (cast_expression "(ulong)uVar15" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);" do (compound_statement "{\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      }" { (expression_statement "puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);" (assignment_expression "puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10)" (subscript_expression "puVar2[uVar10 + 1]" identifier [ (binary_expression "uVar10 + 1" identifier + number_literal) ]) = (pointer_expression "*(undefined1 *)(lVar23 + 1 + uVar10)" * (cast_expression "(undefined1 *)(lVar23 + 1 + uVar10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1 + uVar10)" ( (binary_expression "lVar23 + 1 + uVar10" (binary_expression "lVar23 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar10 != uVar7)" ( (binary_expression "uVar10 != uVar7" identifier != identifier) )) ;) (expression_statement "lVar21 = lVar21 + uVar7;" (assignment_expression "lVar21 = lVar21 + uVar7" identifier = (binary_expression "lVar21 + uVar7" identifier + identifier)) ;) (expression_statement "puVar20 = puVar20 + uVar7;" (assignment_expression "puVar20 = puVar20 + uVar7" identifier = (binary_expression "puVar20 + uVar7" identifier + identifier)) ;) })) (if_statement "if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }" if (parenthesized_expression "(uVar7 < uVar1)" ( (binary_expression "uVar7 < uVar1" identifier < identifier) )) (compound_statement "{\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }" { (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);" do (compound_statement "{\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      }" { (expression_statement "puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);" (assignment_expression "puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17)" (subscript_expression "puVar20[lVar17]" identifier [ identifier ]) = (binary_expression "*(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17)" (pointer_expression "*(char *)(lVar21 + lVar17)" * (cast_expression "(char *)(lVar21 + lVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar17)" ( (binary_expression "lVar21 + lVar17" identifier + identifier) )))) - (pointer_expression "*(char *)(lVar23 + 1 + lVar17)" * (cast_expression "(char *)(lVar23 + 1 + lVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1 + lVar17)" ( (binary_expression "lVar23 + 1 + lVar17" (binary_expression "lVar23 + 1" identifier + number_literal) + identifier) )))))) ;) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 - uVar7 != lVar17)" ( (binary_expression "uVar1 - uVar7 != lVar17" (binary_expression "uVar1 - uVar7" identifier - identifier) != identifier) )) ;) })) (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }" statement_identifier : (if_statement "if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }" if (parenthesized_expression "(bVar4 == 0x40)" ( (binary_expression "bVar4 == 0x40" identifier == number_literal) )) (compound_statement "{\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }" { (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar2 = 3;" (assignment_expression "*puVar2 = 3" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "lVar17 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "lVar23 = lVar17 + 1;" (assignment_expression "lVar23 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "lVar6 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = lVar6 + 1;" (assignment_expression "lVar21 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) (if_statement "if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" { (expression_statement "lVar11 = 1;" (assignment_expression "lVar11 = 1" identifier = number_literal) ;) (do_statement "do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);" do (compound_statement "{\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        }" { (expression_statement "puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);" (assignment_expression "puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1)" (subscript_expression "puVar2[lVar11]" identifier [ identifier ]) = (binary_expression "*(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1)" (pointer_expression "*(char *)(lVar17 + lVar11)" * (cast_expression "(char *)(lVar17 + lVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + lVar11)" ( (binary_expression "lVar17 + lVar11" identifier + identifier) )))) - (parenthesized_expression "(*(byte *)(lVar6 + lVar11) >> 1)" ( (binary_expression "*(byte *)(lVar6 + lVar11) >> 1" (pointer_expression "*(byte *)(lVar6 + lVar11)" * (cast_expression "(byte *)(lVar6 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + lVar11)" ( (binary_expression "lVar6 + lVar11" identifier + identifier) )))) >> number_literal) )))) ;) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((ulong)(uVar15 - 1) + 2 != lVar11)" ( (binary_expression "(ulong)(uVar15 - 1) + 2 != lVar11" (binary_expression "(ulong)(uVar15 - 1) + 2" (call_expression "(ulong)(uVar15 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) ))) + number_literal) != identifier) )) ;) (expression_statement "lVar6 = (ulong)(uVar15 - 1) + 1;" (assignment_expression "lVar6 = (ulong)(uVar15 - 1) + 1" identifier = (binary_expression "(ulong)(uVar15 - 1) + 1" (call_expression "(ulong)(uVar15 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) ))) + number_literal)) ;) (expression_statement "lVar23 = lVar23 + lVar6;" (assignment_expression "lVar23 = lVar23 + lVar6" identifier = (binary_expression "lVar23 + lVar6" identifier + identifier)) ;) (expression_statement "lVar21 = lVar21 + lVar6;" (assignment_expression "lVar21 = lVar21 + lVar6" identifier = (binary_expression "lVar21 + lVar6" identifier + identifier)) ;) (expression_statement "puVar20 = puVar20 + lVar6;" (assignment_expression "puVar20 = puVar20 + lVar6" identifier = (binary_expression "puVar20 + lVar6" identifier + identifier)) ;) })) (if_statement "if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }" if (parenthesized_expression "(uVar15 < uVar1)" ( (binary_expression "uVar15 < uVar1" identifier < identifier) )) (compound_statement "{\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }" { (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);" do (compound_statement "{\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        }" { (expression_statement "puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);" (assignment_expression "puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1)" (subscript_expression "puVar20[lVar6]" identifier [ identifier ]) = (binary_expression "*(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1)" (pointer_expression "*(char *)(lVar23 + lVar6)" * (cast_expression "(char *)(lVar23 + lVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + lVar6)" ( (binary_expression "lVar23 + lVar6" identifier + identifier) )))) - (cast_expression "(char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1)" ( (binary_expression "(int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1" (cast_expression "(int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))" ( (binary_expression "(uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6)" (binary_expression "(uint)*(byte *)(lVar21 + lVar6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar21 + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar6)" ( (binary_expression "lVar21 + lVar6" identifier + identifier) )))) + (binary_expression "(uint)*(byte *)(lVar17 + 1 + lVar6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar17 + 1 + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + lVar6)" ( (binary_expression "lVar17 + 1 + lVar6" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) ))))) ))) >> number_literal) ))))) ;) (expression_statement "iVar5 = (int)lVar6;" (assignment_expression "iVar5 = (int)lVar6" identifier = (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar15 + 1 + iVar5 < uVar1)" ( (binary_expression "uVar15 + 1 + iVar5 < uVar1" (binary_expression "uVar15 + 1 + iVar5" (binary_expression "uVar15 + 1" identifier + number_literal) + identifier) < identifier) )) ;) })) (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00126e34;" goto statement_identifier ;) }))) (if_statement "if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }" if (parenthesized_expression "((bVar4 & 0x40) != 0)" ( (binary_expression "(bVar4 & 0x40) != 0" (parenthesized_expression "(bVar4 & 0x40)" ( (binary_expression "bVar4 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }" { (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar2 = 3;" (assignment_expression "*puVar2 = 3" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "lVar17 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = lVar17 + 1;" (assignment_expression "lVar21 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "lVar6 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "local_58 = lVar6 + 1;" (assignment_expression "local_58 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) (if_statement "if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar7 = 0;\n      }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" else (compound_statement "{\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" { (expression_statement "lVar11 = 1;" (assignment_expression "lVar11 = 1" identifier = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);" do (compound_statement "{\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        }" { (expression_statement "bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);" (assignment_expression "bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1)" identifier = (binary_expression "*(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1)" (pointer_expression "*(char *)(lVar17 + lVar11)" * (cast_expression "(char *)(lVar17 + lVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + lVar11)" ( (binary_expression "lVar17 + lVar11" identifier + identifier) )))) - (parenthesized_expression "(*(byte *)(lVar6 + lVar11) >> 1)" ( (binary_expression "*(byte *)(lVar6 + lVar11) >> 1" (pointer_expression "*(byte *)(lVar6 + lVar11)" * (cast_expression "(byte *)(lVar6 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + lVar11)" ( (binary_expression "lVar6 + lVar11" identifier + identifier) )))) >> number_literal) )))) ;) (expression_statement "puVar2[lVar11] = bVar3;" (assignment_expression "puVar2[lVar11] = bVar3" (subscript_expression "puVar2[lVar11]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar10 = (ulong)bVar3;" (assignment_expression "uVar10 = (ulong)bVar3" identifier = (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }" if (parenthesized_expression "(0x7f < bVar3)" ( (binary_expression "0x7f < bVar3" number_literal < identifier) )) (compound_statement "{\n            uVar10 = (ulong)(0x100 - bVar3);\n          }" { (expression_statement "uVar10 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar10 = (ulong)(0x100 - bVar3)" identifier = (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar3)" ( (binary_expression "0x100 - bVar3" number_literal - identifier) )))) ;) })) (expression_statement "uVar7 = uVar7 + uVar10;" (assignment_expression "uVar7 = uVar7 + uVar10" identifier = (binary_expression "uVar7 + uVar10" identifier + identifier)) ;) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar11 != (ulong)(uVar15 - 1) + 2)" ( (binary_expression "lVar11 != (ulong)(uVar15 - 1) + 2" identifier != (binary_expression "(ulong)(uVar15 - 1) + 2" (call_expression "(ulong)(uVar15 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) ))) + number_literal)) )) ;) (expression_statement "lVar6 = (ulong)(uVar15 - 1) + 1;" (assignment_expression "lVar6 = (ulong)(uVar15 - 1) + 1" identifier = (binary_expression "(ulong)(uVar15 - 1) + 1" (call_expression "(ulong)(uVar15 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) ))) + number_literal)) ;) (expression_statement "lVar21 = lVar21 + lVar6;" (assignment_expression "lVar21 = lVar21 + lVar6" identifier = (binary_expression "lVar21 + lVar6" identifier + identifier)) ;) (expression_statement "local_58 = local_58 + lVar6;" (assignment_expression "local_58 = local_58 + lVar6" identifier = (binary_expression "local_58 + lVar6" identifier + identifier)) ;) (expression_statement "puVar20 = puVar20 + lVar6;" (assignment_expression "puVar20 = puVar20 + lVar6" identifier = (binary_expression "puVar20 + lVar6" identifier + identifier)) ;) }))) (if_statement "if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }" if (parenthesized_expression "(uVar15 < uVar1)" ( (binary_expression "uVar15 < uVar1" identifier < identifier) )) (compound_statement "{\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }" { (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));" do (compound_statement "{\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        }" { (expression_statement "uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);" (assignment_expression "uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1)" identifier = (binary_expression "(uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1)" (binary_expression "(uint)*(byte *)(lVar21 + lVar6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar21 + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar6)" ( (binary_expression "lVar21 + lVar6" identifier + identifier) )))) - (parenthesized_expression "((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1)" ( (binary_expression "(int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1" (cast_expression "(int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))" ( (binary_expression "(uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6)" (binary_expression "(uint)*(byte *)(local_58 + lVar6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_58 + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + lVar6)" ( (binary_expression "local_58 + lVar6" identifier + identifier) )))) + (binary_expression "(uint)*(byte *)(lVar17 + 1 + lVar6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar17 + 1 + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + lVar6)" ( (binary_expression "lVar17 + 1 + lVar6" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) ))))) ))) >> number_literal) )))) ;) (expression_statement "puVar20[lVar6] = (char)uVar18;" (assignment_expression "puVar20[lVar6] = (char)uVar18" (subscript_expression "puVar20[lVar6]" identifier [ identifier ]) = (cast_expression "(char)uVar18" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar16 = uVar18 & 0xff;" (assignment_expression "uVar16 = uVar18 & 0xff" identifier = (binary_expression "uVar18 & 0xff" identifier & number_literal)) ;) (if_statement "if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }" if (parenthesized_expression "(0x7f < (uVar18 & 0xff))" ( (binary_expression "0x7f < (uVar18 & 0xff)" number_literal < (parenthesized_expression "(uVar18 & 0xff)" ( (binary_expression "uVar18 & 0xff" identifier & number_literal) ))) )) (compound_statement "{\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }" { (expression_statement "uVar16 = 0x100 - (uVar18 & 0xff);" (assignment_expression "uVar16 = 0x100 - (uVar18 & 0xff)" identifier = (binary_expression "0x100 - (uVar18 & 0xff)" number_literal - (parenthesized_expression "(uVar18 & 0xff)" ( (binary_expression "uVar18 & 0xff" identifier & number_literal) )))) ;) })) (expression_statement "uVar7 = uVar7 + uVar16;" (assignment_expression "uVar7 = uVar7 + uVar16" identifier = (binary_expression "uVar7 + uVar16" identifier + identifier)) ;) }) while (parenthesized_expression "((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1))" ( (binary_expression "(uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1)" (parenthesized_expression "(uVar7 <= uVar22)" ( (binary_expression "uVar7 <= uVar22" identifier <= identifier) )) && (parenthesized_expression "(iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1)" ( (comma_expression "iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1" (assignment_expression "iVar5 = (int)lVar6" identifier = (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier)) , (comma_expression "lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) , (binary_expression "uVar15 + 1 + iVar5 < uVar1" (binary_expression "uVar15 + 1 + iVar5" (binary_expression "uVar15 + 1" identifier + number_literal) + identifier) < identifier))) ))) )) ;) })) (if_statement "if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }" if (parenthesized_expression "(uVar7 < uVar22)" ( (binary_expression "uVar7 < uVar22" identifier < identifier) )) (compound_statement "{\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }" { (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = uVar7;" (assignment_expression "uVar22 = uVar7" identifier = identifier) ;) (if_statement "if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }" if (parenthesized_expression "(*(long *)(param_1 + 0x238) != 0)" ( (binary_expression "*(long *)(param_1 + 0x238) != 0" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }" { (expression_statement "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);" (assignment_expression "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238)" (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) )))) = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x238) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x238) = lVar23" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) = identifier) ;) })) })) })) }) (else_clause "else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }" else (compound_statement "{\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }" { (if_statement "if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }" if (parenthesized_expression "((bVar4 & 0x10) != 0)" ( (binary_expression "(bVar4 & 0x10) != 0" (parenthesized_expression "(bVar4 & 0x10)" ( (binary_expression "bVar4 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }" { (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar2 = 1;" (assignment_expression "*puVar2 = 1" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "lVar21 = lVar23 + 1;" (assignment_expression "lVar21 = lVar23 + 1" identifier = (binary_expression "lVar23 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = (ulong)uVar15;" (assignment_expression "uVar7 = (ulong)uVar15" identifier = (cast_expression "(ulong)uVar15" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uVar7;" (assignment_expression "uVar10 = uVar7" identifier = identifier) ;) (if_statement "if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);" do (compound_statement "{\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        }" { (expression_statement "bVar3 = *(byte *)(lVar23 + 1 + uVar14);" (assignment_expression "bVar3 = *(byte *)(lVar23 + 1 + uVar14)" identifier = (pointer_expression "*(byte *)(lVar23 + 1 + uVar14)" * (cast_expression "(byte *)(lVar23 + 1 + uVar14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1 + uVar14)" ( (binary_expression "lVar23 + 1 + uVar14" (binary_expression "lVar23 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "puVar2[uVar14 + 1] = bVar3;" (assignment_expression "puVar2[uVar14 + 1] = bVar3" (subscript_expression "puVar2[uVar14 + 1]" identifier [ (binary_expression "uVar14 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "uVar8 = (ulong)bVar3;" (assignment_expression "uVar8 = (ulong)bVar3" identifier = (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }" if (parenthesized_expression "(0x7f < bVar3)" ( (binary_expression "0x7f < bVar3" number_literal < identifier) )) (compound_statement "{\n            uVar8 = (ulong)(0x100 - bVar3);\n          }" { (expression_statement "uVar8 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar8 = (ulong)(0x100 - bVar3)" identifier = (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar3)" ( (binary_expression "0x100 - bVar3" number_literal - identifier) )))) ;) })) (expression_statement "uVar10 = uVar10 + uVar8;" (assignment_expression "uVar10 = uVar10 + uVar8" identifier = (binary_expression "uVar10 + uVar8" identifier + identifier)) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar14 != uVar7)" ( (binary_expression "uVar14 != uVar7" identifier != identifier) )) ;) (expression_statement "lVar21 = lVar21 + uVar7;" (assignment_expression "lVar21 = lVar21 + uVar7" identifier = (binary_expression "lVar21 + uVar7" identifier + identifier)) ;) (expression_statement "puVar20 = puVar20 + uVar7;" (assignment_expression "puVar20 = puVar20 + uVar7" identifier = (binary_expression "puVar20 + uVar7" identifier + identifier)) ;) })) (if_statement "if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }" if (parenthesized_expression "(uVar7 < uVar1)" ( (binary_expression "uVar7 < uVar1" identifier < identifier) )) (compound_statement "{\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }" { (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));" do (compound_statement "{\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        }" { (expression_statement "bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);" (assignment_expression "bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17)" identifier = (binary_expression "*(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17)" (pointer_expression "*(char *)(lVar21 + lVar17)" * (cast_expression "(char *)(lVar21 + lVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar17)" ( (binary_expression "lVar21 + lVar17" identifier + identifier) )))) - (pointer_expression "*(char *)(lVar23 + 1 + lVar17)" * (cast_expression "(char *)(lVar23 + 1 + lVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1 + lVar17)" ( (binary_expression "lVar23 + 1 + lVar17" (binary_expression "lVar23 + 1" identifier + number_literal) + identifier) )))))) ;) (expression_statement "puVar20[lVar17] = bVar3;" (assignment_expression "puVar20[lVar17] = bVar3" (subscript_expression "puVar20[lVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar14 = (ulong)bVar3;" (assignment_expression "uVar14 = (ulong)bVar3" identifier = (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }" if (parenthesized_expression "(0x7f < bVar3)" ( (binary_expression "0x7f < bVar3" number_literal < identifier) )) (compound_statement "{\n            uVar14 = (ulong)(0x100 - bVar3);\n          }" { (expression_statement "uVar14 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar14 = (ulong)(0x100 - bVar3)" identifier = (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar3)" ( (binary_expression "0x100 - bVar3" number_literal - identifier) )))) ;) })) (expression_statement "uVar10 = uVar10 + uVar14;" (assignment_expression "uVar10 = uVar10 + uVar14" identifier = (binary_expression "uVar10 + uVar14" identifier + identifier)) ;) }) while (parenthesized_expression "((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7))" ( (binary_expression "(uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7)" (parenthesized_expression "(uVar10 <= uVar22)" ( (binary_expression "uVar10 <= uVar22" identifier <= identifier) )) && (parenthesized_expression "(lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7)" ( (comma_expression "lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) , (binary_expression "lVar17 != uVar1 - uVar7" identifier != (binary_expression "uVar1 - uVar7" identifier - identifier))) ))) )) ;) })) (if_statement "if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }" if (parenthesized_expression "(uVar10 < uVar22)" ( (binary_expression "uVar10 < uVar22" identifier < identifier) )) (compound_statement "{\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }" { (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = uVar10;" (assignment_expression "uVar22 = uVar10" identifier = identifier) ;) (if_statement "if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }" if (parenthesized_expression "(*(long *)(param_1 + 0x238) != 0)" ( (binary_expression "*(long *)(param_1 + 0x238) != 0" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }" { (expression_statement "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);" (assignment_expression "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238)" (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) )))) = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x238) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x238) = lVar23" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) = identifier) ;) })) })) })) (if_statement "if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }" if (parenthesized_expression "(bVar4 != 0x20)" ( (binary_expression "bVar4 != 0x20" identifier != number_literal) )) (compound_statement "{\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }" { (if_statement "if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }" if (parenthesized_expression "((bVar4 & 0x20) != 0)" ( (binary_expression "(bVar4 & 0x20) != 0" (parenthesized_expression "(bVar4 & 0x20)" ( (binary_expression "bVar4 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }" { (expression_statement "puVar20 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar20 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar20 = 2;" (assignment_expression "*puVar20 = 2" (pointer_expression "*puVar20" * identifier) = number_literal) ;) (expression_statement "lVar21 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar21 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "lVar17 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = uVar1;" (assignment_expression "uVar7 = uVar1" identifier = identifier) ;) (if_statement "if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));" do (compound_statement "{\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          }" { (expression_statement "bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);" (assignment_expression "bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10)" identifier = (binary_expression "*(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10)" (pointer_expression "*(char *)(lVar21 + 1 + uVar10)" * (cast_expression "(char *)(lVar21 + 1 + uVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + 1 + uVar10)" ( (binary_expression "lVar21 + 1 + uVar10" (binary_expression "lVar21 + 1" identifier + number_literal) + identifier) )))) - (pointer_expression "*(char *)(lVar17 + 1 + uVar10)" * (cast_expression "(char *)(lVar17 + 1 + uVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + uVar10)" ( (binary_expression "lVar17 + 1 + uVar10" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) )))))) ;) (expression_statement "puVar20[uVar10 + 1] = bVar3;" (assignment_expression "puVar20[uVar10 + 1] = bVar3" (subscript_expression "puVar20[uVar10 + 1]" identifier [ (binary_expression "uVar10 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "uVar14 = (ulong)bVar3;" (assignment_expression "uVar14 = (ulong)bVar3" identifier = (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }" if (parenthesized_expression "(0x7f < bVar3)" ( (binary_expression "0x7f < bVar3" number_literal < identifier) )) (compound_statement "{\n              uVar14 = (ulong)(0x100 - bVar3);\n            }" { (expression_statement "uVar14 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar14 = (ulong)(0x100 - bVar3)" identifier = (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar3)" ( (binary_expression "0x100 - bVar3" number_literal - identifier) )))) ;) })) (expression_statement "uVar7 = uVar7 + uVar14;" (assignment_expression "uVar7 = uVar7 + uVar14" identifier = (binary_expression "uVar7 + uVar14" identifier + identifier)) ;) }) while (parenthesized_expression "((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10))" ( (binary_expression "(uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10)" (parenthesized_expression "(uVar7 <= uVar22)" ( (binary_expression "uVar7 <= uVar22" identifier <= identifier) )) && (parenthesized_expression "(uVar10 = uVar10 + 1, uVar1 != uVar10)" ( (comma_expression "uVar10 = uVar10 + 1, uVar1 != uVar10" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) , (binary_expression "uVar1 != uVar10" identifier != identifier)) ))) )) ;) })) (if_statement "if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }" if (parenthesized_expression "(uVar7 < uVar22)" ( (binary_expression "uVar7 < uVar22" identifier < identifier) )) (compound_statement "{\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }" { (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = uVar7;" (assignment_expression "uVar22 = uVar7" identifier = identifier) ;) (if_statement "if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }" if (parenthesized_expression "(*(long *)(param_1 + 0x238) != 0)" ( (binary_expression "*(long *)(param_1 + 0x238) != 0" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }" { (expression_statement "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);" (assignment_expression "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238)" (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) )))) = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x238) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x238) = lVar23" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) = identifier) ;) })) })) })) (goto_statement "goto LAB_00126e0b;" goto statement_identifier ;) })) (expression_statement "puVar20 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar20 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar20 = 2;" (assignment_expression "*puVar20 = 2" (pointer_expression "*puVar20" * identifier) = number_literal) ;) (expression_statement "lVar23 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar21 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (if_statement "if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);" do (compound_statement "{\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      }" { (expression_statement "puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);" (assignment_expression "puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7)" (subscript_expression "puVar20[uVar7 + 1]" identifier [ (binary_expression "uVar7 + 1" identifier + number_literal) ]) = (binary_expression "*(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7)" (pointer_expression "*(char *)(lVar23 + 1 + uVar7)" * (cast_expression "(char *)(lVar23 + 1 + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1 + uVar7)" ( (binary_expression "lVar23 + 1 + uVar7" (binary_expression "lVar23 + 1" identifier + number_literal) + identifier) )))) - (pointer_expression "*(char *)(lVar21 + 1 + uVar7)" * (cast_expression "(char *)(lVar21 + 1 + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + 1 + uVar7)" ( (binary_expression "lVar21 + 1 + uVar7" (binary_expression "lVar21 + 1" identifier + number_literal) + identifier) )))))) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 != uVar7)" ( (binary_expression "uVar1 != uVar7" identifier != identifier) )) ;) })) (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) }))) (if_statement "if (bVar4 == 0x80) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }" if (parenthesized_expression "(bVar4 == 0x80)" ( (binary_expression "bVar4 == 0x80" identifier == number_literal) )) (compound_statement "{\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }" { (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar2 = 4;" (assignment_expression "*puVar2 = 4" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "lVar17 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "lVar23 = lVar17 + 1;" (assignment_expression "lVar23 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "lVar6 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = lVar6 + 1;" (assignment_expression "lVar21 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar22 = (ulong)uVar15;" (assignment_expression "uVar22 = (ulong)uVar15" identifier = (cast_expression "(ulong)uVar15" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);" do (compound_statement "{\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      }" { (expression_statement "puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);" (assignment_expression "puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7)" (subscript_expression "puVar2[uVar7 + 1]" identifier [ (binary_expression "uVar7 + 1" identifier + number_literal) ]) = (binary_expression "*(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7)" (pointer_expression "*(char *)(lVar17 + 1 + uVar7)" * (cast_expression "(char *)(lVar17 + 1 + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + uVar7)" ( (binary_expression "lVar17 + 1 + uVar7" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) )))) - (pointer_expression "*(char *)(lVar6 + 1 + uVar7)" * (cast_expression "(char *)(lVar6 + 1 + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 1 + uVar7)" ( (binary_expression "lVar6 + 1 + uVar7" (binary_expression "lVar6 + 1" identifier + number_literal) + identifier) )))))) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar22 != uVar7)" ( (binary_expression "uVar22 != uVar7" identifier != identifier) )) ;) (expression_statement "lVar23 = lVar23 + uVar7;" (assignment_expression "lVar23 = lVar23 + uVar7" identifier = (binary_expression "lVar23 + uVar7" identifier + identifier)) ;) (expression_statement "lVar21 = lVar21 + uVar7;" (assignment_expression "lVar21 = lVar21 + uVar7" identifier = (binary_expression "lVar21 + uVar7" identifier + identifier)) ;) (expression_statement "puVar20 = puVar20 + uVar7;" (assignment_expression "puVar20 = puVar20 + uVar7" identifier = (binary_expression "puVar20 + uVar7" identifier + identifier)) ;) (expression_statement "uVar22 = uVar7;" (assignment_expression "uVar22 = uVar7" identifier = identifier) ;) })) (if_statement "if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }" if (parenthesized_expression "(uVar22 < uVar1)" ( (binary_expression "uVar22 < uVar1" identifier < identifier) )) (compound_statement "{\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }" { (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);" do (compound_statement "{\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      }" { (expression_statement "bVar3 = *(byte *)(lVar6 + 1 + lVar11);" (assignment_expression "bVar3 = *(byte *)(lVar6 + 1 + lVar11)" identifier = (pointer_expression "*(byte *)(lVar6 + 1 + lVar11)" * (cast_expression "(byte *)(lVar6 + 1 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 1 + lVar11)" ( (binary_expression "lVar6 + 1 + lVar11" (binary_expression "lVar6 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "bVar4 = *(byte *)(lVar17 + 1 + lVar11);" (assignment_expression "bVar4 = *(byte *)(lVar17 + 1 + lVar11)" identifier = (pointer_expression "*(byte *)(lVar17 + 1 + lVar11)" * (cast_expression "(byte *)(lVar17 + 1 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + lVar11)" ( (binary_expression "lVar17 + 1 + lVar11" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;" (assignment_expression "uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3" identifier = (binary_expression "(uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3" (binary_expression "(uint)*(byte *)(lVar21 + lVar11)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar21 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar11)" ( (binary_expression "lVar21 + lVar11" identifier + identifier) )))) - (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar16 = (uint)bVar4 - (uint)bVar3;" (assignment_expression "uVar16 = (uint)bVar4 - (uint)bVar3" identifier = (binary_expression "(uint)bVar4 - (uint)bVar3" (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier) - (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);" (assignment_expression "iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f)" identifier = (binary_expression "((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f)" (parenthesized_expression "((int)uVar15 >> 0x1f ^ uVar15)" ( (binary_expression "(int)uVar15 >> 0x1f ^ uVar15" (binary_expression "(int)uVar15 >> 0x1f" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ^ identifier) )) - (parenthesized_expression "((int)uVar15 >> 0x1f)" ( (binary_expression "(int)uVar15 >> 0x1f" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);" (assignment_expression "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" identifier = (binary_expression "((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" (parenthesized_expression "((int)uVar16 >> 0x1f ^ uVar16)" ( (binary_expression "(int)uVar16 >> 0x1f ^ uVar16" (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ^ identifier) )) - (parenthesized_expression "((int)uVar16 >> 0x1f)" ( (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar18 = (int)(uVar15 + uVar16) >> 0x1f;" (assignment_expression "uVar18 = (int)(uVar15 + uVar16) >> 0x1f" identifier = (binary_expression "(int)(uVar15 + uVar16) >> 0x1f" (cast_expression "(int)(uVar15 + uVar16)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar15 + uVar16)" ( (binary_expression "uVar15 + uVar16" identifier + identifier) ))) >> number_literal)) ;) (expression_statement "iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;" (assignment_expression "iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18" identifier = (binary_expression "(uVar15 + uVar16 ^ uVar18) - uVar18" (parenthesized_expression "(uVar15 + uVar16 ^ uVar18)" ( (binary_expression "uVar15 + uVar16 ^ uVar18" (binary_expression "uVar15 + uVar16" identifier + identifier) ^ identifier) )) - identifier)) ;) (if_statement "if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }" if (parenthesized_expression "(((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5))" ( (binary_expression "((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)" (parenthesized_expression "((iVar13 < iVar12) || (iVar5 < iVar12))" ( (binary_expression "(iVar13 < iVar12) || (iVar5 < iVar12)" (parenthesized_expression "(iVar13 < iVar12)" ( (binary_expression "iVar13 < iVar12" identifier < identifier) )) || (parenthesized_expression "(iVar5 < iVar12)" ( (binary_expression "iVar5 < iVar12" identifier < identifier) ))) )) && (parenthesized_expression "(bVar4 = bVar3, iVar13 <= iVar5)" ( (comma_expression "bVar4 = bVar3, iVar13 <= iVar5" (assignment_expression "bVar4 = bVar3" identifier = identifier) , (binary_expression "iVar13 <= iVar5" identifier <= identifier)) ))) )) (compound_statement "{\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }" { (expression_statement "bVar4 = *(byte *)(lVar21 + lVar11);" (assignment_expression "bVar4 = *(byte *)(lVar21 + lVar11)" identifier = (pointer_expression "*(byte *)(lVar21 + lVar11)" * (cast_expression "(byte *)(lVar21 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar11)" ( (binary_expression "lVar21 + lVar11" identifier + identifier) ))))) ;) })) (expression_statement "puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;" (assignment_expression "puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4" (subscript_expression "puVar20[lVar11]" identifier [ identifier ]) = (binary_expression "*(char *)(lVar23 + lVar11) - bVar4" (pointer_expression "*(char *)(lVar23 + lVar11)" * (cast_expression "(char *)(lVar23 + lVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + lVar11)" ( (binary_expression "lVar23 + lVar11" identifier + identifier) )))) - identifier)) ;) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 - uVar22 != lVar11)" ( (binary_expression "uVar1 - uVar22 != lVar11" (binary_expression "uVar1 - uVar22" identifier - identifier) != identifier) )) ;) })) (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) }) (else_clause "else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }" else (if_statement "if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }" if (parenthesized_expression "((bVar4 & 0x80) != 0)" ( (binary_expression "(bVar4 & 0x80) != 0" (parenthesized_expression "(bVar4 & 0x80)" ( (binary_expression "bVar4 & 0x80" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }" { (expression_statement "puVar20 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar20 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar20 = 4;" (assignment_expression "*puVar20 = 4" (pointer_expression "*puVar20" * identifier) = number_literal) ;) (expression_statement "lVar17 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = lVar17 + 1;" (assignment_expression "lVar21 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "local_50 = puVar20 + 1;" (assignment_expression "local_50 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (expression_statement "lVar6 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "local_58 = lVar6 + 1;" (assignment_expression "local_58 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = (ulong)uVar15;" (assignment_expression "uVar7 = (ulong)uVar15" identifier = (cast_expression "(ulong)uVar15" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uVar7;" (assignment_expression "uVar10 = uVar7" identifier = identifier) ;) (if_statement "if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);" do (compound_statement "{\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      }" { (expression_statement "bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);" (assignment_expression "bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14)" identifier = (binary_expression "*(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14)" (pointer_expression "*(char *)(lVar17 + 1 + uVar14)" * (cast_expression "(char *)(lVar17 + 1 + uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + uVar14)" ( (binary_expression "lVar17 + 1 + uVar14" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) )))) - (pointer_expression "*(char *)(lVar6 + 1 + uVar14)" * (cast_expression "(char *)(lVar6 + 1 + uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 1 + uVar14)" ( (binary_expression "lVar6 + 1 + uVar14" (binary_expression "lVar6 + 1" identifier + number_literal) + identifier) )))))) ;) (expression_statement "puVar20[uVar14 + 1] = bVar4;" (assignment_expression "puVar20[uVar14 + 1] = bVar4" (subscript_expression "puVar20[uVar14 + 1]" identifier [ (binary_expression "uVar14 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "uVar8 = (ulong)bVar4;" (assignment_expression "uVar8 = (ulong)bVar4" identifier = (cast_expression "(ulong)bVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }" if (parenthesized_expression "(0x7f < bVar4)" ( (binary_expression "0x7f < bVar4" number_literal < identifier) )) (compound_statement "{\n          uVar8 = (ulong)(0x100 - bVar4);\n        }" { (expression_statement "uVar8 = (ulong)(0x100 - bVar4);" (assignment_expression "uVar8 = (ulong)(0x100 - bVar4)" identifier = (call_expression "(ulong)(0x100 - bVar4)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar4)" ( (binary_expression "0x100 - bVar4" number_literal - identifier) )))) ;) })) (expression_statement "uVar10 = uVar10 + uVar8;" (assignment_expression "uVar10 = uVar10 + uVar8" identifier = (binary_expression "uVar10 + uVar8" identifier + identifier)) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar14 != uVar7)" ( (binary_expression "uVar14 != uVar7" identifier != identifier) )) ;) (expression_statement "lVar21 = lVar21 + uVar7;" (assignment_expression "lVar21 = lVar21 + uVar7" identifier = (binary_expression "lVar21 + uVar7" identifier + identifier)) ;) (expression_statement "local_58 = local_58 + uVar7;" (assignment_expression "local_58 = local_58 + uVar7" identifier = (binary_expression "local_58 + uVar7" identifier + identifier)) ;) (expression_statement "local_50 = local_50 + uVar7;" (assignment_expression "local_50 = local_50 + uVar7" identifier = (binary_expression "local_50 + uVar7" identifier + identifier)) ;) })) (if_statement "if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }" if (parenthesized_expression "(uVar7 < uVar1)" ( (binary_expression "uVar7 < uVar1" identifier < identifier) )) (compound_statement "{\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }" { (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));" do (compound_statement "{\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      }" { (expression_statement "uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);" (assignment_expression "uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11)" identifier = (binary_expression "(uint)*(byte *)(lVar6 + 1 + lVar11)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar6 + 1 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 1 + lVar11)" ( (binary_expression "lVar6 + 1 + lVar11" (binary_expression "lVar6 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "bVar4 = *(byte *)(lVar17 + 1 + lVar11);" (assignment_expression "bVar4 = *(byte *)(lVar17 + 1 + lVar11)" identifier = (pointer_expression "*(byte *)(lVar17 + 1 + lVar11)" * (cast_expression "(byte *)(lVar17 + 1 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + lVar11)" ( (binary_expression "lVar17 + 1 + lVar11" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uVar15 = *(byte *)(local_58 + lVar11) - uVar18;" (assignment_expression "uVar15 = *(byte *)(local_58 + lVar11) - uVar18" identifier = (binary_expression "*(byte *)(local_58 + lVar11) - uVar18" (pointer_expression "*(byte *)(local_58 + lVar11)" * (cast_expression "(byte *)(local_58 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + lVar11)" ( (binary_expression "local_58 + lVar11" identifier + identifier) )))) - identifier)) ;) (expression_statement "uVar16 = bVar4 - uVar18;" (assignment_expression "uVar16 = bVar4 - uVar18" identifier = (binary_expression "bVar4 - uVar18" identifier - identifier)) ;) (expression_statement "iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);" (assignment_expression "iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f)" identifier = (binary_expression "((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f)" (parenthesized_expression "((int)uVar15 >> 0x1f ^ uVar15)" ( (binary_expression "(int)uVar15 >> 0x1f ^ uVar15" (binary_expression "(int)uVar15 >> 0x1f" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ^ identifier) )) - (parenthesized_expression "((int)uVar15 >> 0x1f)" ( (binary_expression "(int)uVar15 >> 0x1f" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);" (assignment_expression "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" identifier = (binary_expression "((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" (parenthesized_expression "((int)uVar16 >> 0x1f ^ uVar16)" ( (binary_expression "(int)uVar16 >> 0x1f ^ uVar16" (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ^ identifier) )) - (parenthesized_expression "((int)uVar16 >> 0x1f)" ( (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar19 = (int)(uVar15 + uVar16) >> 0x1f;" (assignment_expression "uVar19 = (int)(uVar15 + uVar16) >> 0x1f" identifier = (binary_expression "(int)(uVar15 + uVar16) >> 0x1f" (cast_expression "(int)(uVar15 + uVar16)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar15 + uVar16)" ( (binary_expression "uVar15 + uVar16" identifier + identifier) ))) >> number_literal)) ;) (expression_statement "iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;" (assignment_expression "iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19" identifier = (binary_expression "(uVar15 + uVar16 ^ uVar19) - uVar19" (parenthesized_expression "(uVar15 + uVar16 ^ uVar19)" ( (binary_expression "uVar15 + uVar16 ^ uVar19" (binary_expression "uVar15 + uVar16" identifier + identifier) ^ identifier) )) - identifier)) ;) (if_statement "if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }" if (parenthesized_expression "(((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5))" ( (binary_expression "((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)" (parenthesized_expression "((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12))" ( (binary_expression "(iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)" (parenthesized_expression "(iVar13 < iVar12)" ( (binary_expression "iVar13 < iVar12" identifier < identifier) )) || (parenthesized_expression "(uVar15 = (uint)bVar4, iVar5 < iVar12)" ( (comma_expression "uVar15 = (uint)bVar4, iVar5 < iVar12" (assignment_expression "uVar15 = (uint)bVar4" identifier = (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) , (binary_expression "iVar5 < iVar12" identifier < identifier)) ))) )) && (parenthesized_expression "(uVar15 = uVar18, iVar13 <= iVar5)" ( (comma_expression "uVar15 = uVar18, iVar13 <= iVar5" (assignment_expression "uVar15 = uVar18" identifier = identifier) , (binary_expression "iVar13 <= iVar5" identifier <= identifier)) ))) )) (compound_statement "{\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }" { (expression_statement "uVar15 = (uint)*(byte *)(local_58 + lVar11);" (assignment_expression "uVar15 = (uint)*(byte *)(local_58 + lVar11)" identifier = (binary_expression "(uint)*(byte *)(local_58 + lVar11)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_58 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + lVar11)" ( (binary_expression "local_58 + lVar11" identifier + identifier) ))))) ;) })) (expression_statement "uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;" (assignment_expression "uVar15 = *(byte *)(lVar21 + lVar11) - uVar15" identifier = (binary_expression "*(byte *)(lVar21 + lVar11) - uVar15" (pointer_expression "*(byte *)(lVar21 + lVar11)" * (cast_expression "(byte *)(lVar21 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar11)" ( (binary_expression "lVar21 + lVar11" identifier + identifier) )))) - identifier)) ;) (expression_statement "local_50[lVar11] = (char)uVar15;" (assignment_expression "local_50[lVar11] = (char)uVar15" (subscript_expression "local_50[lVar11]" identifier [ identifier ]) = (cast_expression "(char)uVar15" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar16 = uVar15 & 0xff;" (assignment_expression "uVar16 = uVar15 & 0xff" identifier = (binary_expression "uVar15 & 0xff" identifier & number_literal)) ;) (if_statement "if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }" if (parenthesized_expression "(0x7f < (uVar15 & 0xff))" ( (binary_expression "0x7f < (uVar15 & 0xff)" number_literal < (parenthesized_expression "(uVar15 & 0xff)" ( (binary_expression "uVar15 & 0xff" identifier & number_literal) ))) )) (compound_statement "{\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }" { (expression_statement "uVar16 = 0x100 - (uVar15 & 0xff);" (assignment_expression "uVar16 = 0x100 - (uVar15 & 0xff)" identifier = (binary_expression "0x100 - (uVar15 & 0xff)" number_literal - (parenthesized_expression "(uVar15 & 0xff)" ( (binary_expression "uVar15 & 0xff" identifier & number_literal) )))) ;) })) (expression_statement "uVar10 = uVar10 + uVar16;" (assignment_expression "uVar10 = uVar10 + uVar16" identifier = (binary_expression "uVar10 + uVar16" identifier + identifier)) ;) }) while (parenthesized_expression "((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7))" ( (binary_expression "(uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7)" (parenthesized_expression "(uVar10 <= uVar22)" ( (binary_expression "uVar10 <= uVar22" identifier <= identifier) )) && (parenthesized_expression "(lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7)" ( (comma_expression "lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) , (binary_expression "lVar11 != uVar1 - uVar7" identifier != (binary_expression "uVar1 - uVar7" identifier - identifier))) ))) )) ;) })) (if_statement "if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }" if (parenthesized_expression "(uVar10 < uVar22)" ( (binary_expression "uVar10 < uVar22" identifier < identifier) )) (compound_statement "{\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }" { (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (if_statement "if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }" if (parenthesized_expression "(*(long *)(param_1 + 0x238) != 0)" ( (binary_expression "*(long *)(param_1 + 0x238) != 0" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }" { (expression_statement "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);" (assignment_expression "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238)" (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) )))) = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x238) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x238) = lVar23" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) = identifier) ;) })) })) })))) (labeled_statement "LAB_00126e34:\n  FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);" statement_identifier : (expression_statement "FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);" (call_expression "FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0)" identifier (argument_list "(param_1,lVar23,*(long *)(param_2 + 8) + 1,0)" ( identifier , identifier , (binary_expression "*(long *)(param_2 + 8) + 1" (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) + number_literal) , number_literal ))) ;)) (expression_statement "lVar23 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (if_statement "if (lVar23 != 0) {\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }" if (parenthesized_expression "(lVar23 != 0)" ( (binary_expression "lVar23 != 0" identifier != number_literal) )) (compound_statement "{\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }" { (expression_statement "*(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);" (assignment_expression "*(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228)" (pointer_expression "*(undefined8 *)(param_1 + 0x220)" * (cast_expression "(undefined8 *)(param_1 + 0x220)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_1 + 0x228)" * (cast_expression "(undefined8 *)(param_1 + 0x228)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x228) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x228) = lVar23" (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "FUN_001268bf(param_1);" (call_expression "FUN_001268bf(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "uVar15 = *(int *)(param_1 + 0x29c) + 1;" (assignment_expression "uVar15 = *(int *)(param_1 + 0x29c) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x29c) + 1" (pointer_expression "*(int *)(param_1 + 0x29c)" * (cast_expression "(int *)(param_1 + 0x29c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x29c)" ( (binary_expression "param_1 + 0x29c" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 0x29c) = uVar15;" (assignment_expression "*(uint *)(param_1 + 0x29c) = uVar15" (pointer_expression "*(uint *)(param_1 + 0x29c)" * (cast_expression "(uint *)(param_1 + 0x29c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x29c)" ( (binary_expression "param_1 + 0x29c" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)) {\n    png_write_flush(param_1);\n  }" if (parenthesized_expression "((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0))" ( (binary_expression "(*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)" (parenthesized_expression "(*(uint *)(param_1 + 0x298) <= uVar15)" ( (binary_expression "*(uint *)(param_1 + 0x298) <= uVar15" (pointer_expression "*(uint *)(param_1 + 0x298)" * (cast_expression "(uint *)(param_1 + 0x298)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) <= identifier) )) && (parenthesized_expression "(*(uint *)(param_1 + 0x298) != 0)" ( (binary_expression "*(uint *)(param_1 + 0x298) != 0" (pointer_expression "*(uint *)(param_1 + 0x298)" * (cast_expression "(uint *)(param_1 + 0x298)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n    png_write_flush(param_1);\n  }" { (expression_statement "png_write_flush(param_1);" (call_expression "png_write_flush(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void png_write_find_filter(png_structrp png_ptr,png_row_infop row_info)\n\n{\n  ulong uVar1;\n  png_bytep ppVar2;\n  png_bytep ppVar3;\n  png_bytep ppVar4;\n  byte bVar5;\n  byte bVar6;\n  int iVar7;\n  ulong uVar8;\n  ulong uVar9;\n  byte *pbVar10;\n  ulong uVar11;\n  long lVar12;\n  int iVar13;\n  png_const_bytep input;\n  int iVar14;\n  ulong uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  png_const_bytep ppVar20;\n  png_bytep ppVar21;\n  png_bytep ppVar22;\n  png_bytep ppVar23;\n  ulong uVar24;\n  png_bytep local_58;\n  png_bytep local_50;\n  \n  bVar6 = png_ptr->do_filter;\n  uVar1 = row_info->rowbytes;\n  uVar16 = (int)(row_info->pixel_depth + 7) >> 3;\n  input = png_ptr->row_buf;\n  if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar6 & 8) == 0) || (bVar6 == 8)) {\n      uVar24 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar10 = input + 1;\n      uVar24 = uVar1;\n      if (uVar1 != 0) {\n        uVar24 = 0;\n        do {\n          bVar5 = *pbVar10;\n          uVar8 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar8 = (ulong)(0x100 - bVar5);\n          }\n          uVar24 = uVar24 + uVar8;\n          pbVar10 = pbVar10 + 1;\n        } while (pbVar10 != input + uVar1 + 1);\n      }\n    }\n  }\n  else {\n    bVar6 = bVar6 & -bVar6;\n    uVar24 = 0xfffffffffffffeff;\n  }\n  if (bVar6 == 0x10) {\n    ppVar21 = png_ptr->try_row;\n    *ppVar21 = '\x01';\n    ppVar20 = input + 1;\n    ppVar23 = ppVar21 + 1;\n    uVar8 = (ulong)uVar16;\n    if (uVar16 != 0) {\n      uVar11 = 0;\n      do {\n        ppVar21[uVar11 + 1] = input[uVar11 + 1];\n        uVar11 = uVar11 + 1;\n      } while (uVar11 != uVar8);\n      ppVar20 = ppVar20 + uVar8;\n      ppVar23 = ppVar23 + uVar8;\n    }\n    if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        ppVar23[lVar12] = ppVar20[lVar12] - input[lVar12 + 1];\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar8 != lVar12);\n    }\n    input = png_ptr->try_row;\nLAB_00126e0b:\n    if (bVar6 == 0x40) {\n      ppVar4 = png_ptr->try_row;\n      *ppVar4 = '\x03';\n      ppVar2 = png_ptr->row_buf;\n      ppVar23 = ppVar2 + 1;\n      ppVar21 = ppVar4 + 1;\n      ppVar3 = png_ptr->prev_row;\n      ppVar22 = ppVar3 + 1;\n      if (uVar16 != 0) {\n        lVar12 = 1;\n        do {\n          ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);\n          lVar12 = lVar12 + 1;\n        } while ((ulong)(uVar16 - 1) + 2 != lVar12);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        ppVar22 = ppVar22 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);\n          iVar7 = (int)lVar12;\n          lVar12 = lVar12 + 1;\n        } while (uVar16 + 1 + iVar7 < uVar1);\n      }\n      input = png_ptr->try_row;\n      goto LAB_00126e34;\n    }\n    if ((bVar6 & 0x40) != 0) {\n      ppVar22 = png_ptr->try_row;\n      *ppVar22 = '\x03';\n      ppVar4 = png_ptr->row_buf;\n      ppVar23 = ppVar4 + 1;\n      ppVar21 = ppVar22 + 1;\n      ppVar2 = png_ptr->prev_row;\n      local_58 = ppVar2 + 1;\n      if (uVar16 == 0) {\n        uVar8 = 0;\n      }\n      else {\n        lVar12 = 1;\n        uVar8 = 0;\n        do {\n          bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);\n          ppVar22[lVar12] = bVar5;\n          uVar17 = (uint)bVar5;\n          if (0x7f < bVar5) {\n            uVar17 = 0x100 - bVar5;\n          }\n          uVar8 = uVar8 + uVar17;\n          lVar12 = lVar12 + 1;\n        } while (lVar12 != (ulong)(uVar16 - 1) + 2);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        local_58 = local_58 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          uVar18 = (uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1);\n          ppVar21[lVar12] = (png_byte)uVar18;\n          uVar17 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar17 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar8 = uVar8 + uVar17;\n        } while ((uVar8 <= uVar24) &&\n                (iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1));\n      }\n      if (uVar8 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar8;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar6 & 0x10) != 0) {\n      ppVar21 = png_ptr->try_row;\n      *ppVar21 = '\x01';\n      ppVar20 = input + 1;\n      ppVar23 = ppVar21 + 1;\n      uVar8 = (ulong)uVar16;\n      uVar11 = uVar8;\n      if (uVar16 != 0) {\n        uVar15 = 0;\n        uVar11 = 0;\n        do {\n          bVar5 = input[uVar15 + 1];\n          ppVar21[uVar15 + 1] = bVar5;\n          uVar9 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar9 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar9;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 != uVar8);\n        ppVar20 = ppVar20 + uVar8;\n        ppVar23 = ppVar23 + uVar8;\n      }\n      if (uVar8 < uVar1) {\n        lVar12 = 0;\n        do {\n          bVar5 = ppVar20[lVar12] - input[lVar12 + 1];\n          ppVar23[lVar12] = bVar5;\n          uVar15 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar15 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar15;\n        } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n      }\n      if (uVar11 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar11;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }\n    if (bVar6 != 0x20) {\n      if ((bVar6 & 0x20) != 0) {\n        ppVar23 = png_ptr->try_row;\n        *ppVar23 = '\x02';\n        ppVar21 = png_ptr->row_buf;\n        ppVar22 = png_ptr->prev_row;\n        uVar8 = uVar1;\n        if (uVar1 != 0) {\n          uVar11 = 0;\n          uVar8 = 0;\n          do {\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));\n        }\n        if (uVar8 < uVar24) {\n          input = png_ptr->try_row;\n          uVar24 = uVar8;\n          if (png_ptr->tst_row != (png_bytep)0x0) {\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    ppVar23 = png_ptr->try_row;\n    *ppVar23 = '\x02';\n    ppVar21 = png_ptr->row_buf;\n    ppVar22 = png_ptr->prev_row;\n    if (uVar1 != 0) {\n      uVar8 = 0;\n      do {\n        ppVar23[uVar8 + 1] = ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar1 != uVar8);\n    }\n    input = png_ptr->try_row;\n  }\n  if (bVar6 == 0x80) {\n    ppVar4 = png_ptr->try_row;\n    *ppVar4 = '\x04';\n    ppVar2 = png_ptr->row_buf;\n    ppVar23 = ppVar2 + 1;\n    ppVar21 = ppVar4 + 1;\n    ppVar3 = png_ptr->prev_row;\n    ppVar22 = ppVar3 + 1;\n    uVar24 = (ulong)uVar16;\n    if (uVar16 != 0) {\n      uVar8 = 0;\n      do {\n        ppVar4[uVar8 + 1] = ppVar2[uVar8 + 1] - ppVar3[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar24 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      ppVar22 = ppVar22 + uVar8;\n      ppVar21 = ppVar21 + uVar8;\n      uVar24 = uVar8;\n    }\n    if (uVar24 < uVar1) {\n      lVar12 = 0;\n      do {\n        bVar6 = ppVar3[lVar12 + 1];\n        uVar16 = (uint)ppVar22[lVar12] - (uint)bVar6;\n        uVar17 = (uint)ppVar2[lVar12 + 1] - (uint)bVar6;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar18 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar18) - uVar18;\n        if (((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)) &&\n           (bVar5 = bVar6, iVar14 <= iVar7)) {\n          bVar5 = ppVar22[lVar12];\n        }\n        ppVar21[lVar12] = ppVar23[lVar12] - bVar5;\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar24 != lVar12);\n    }\n    input = png_ptr->try_row;\n  }\n  else if ((bVar6 & 0x80) != 0) {\n    ppVar21 = png_ptr->try_row;\n    *ppVar21 = '\x04';\n    ppVar22 = png_ptr->row_buf;\n    ppVar23 = ppVar22 + 1;\n    local_50 = ppVar21 + 1;\n    ppVar4 = png_ptr->prev_row;\n    local_58 = ppVar4 + 1;\n    uVar8 = (ulong)uVar16;\n    uVar11 = uVar8;\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      uVar11 = 0;\n      do {\n        bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1];\n        ppVar21[uVar15 + 1] = bVar6;\n        uVar9 = (ulong)bVar6;\n        if (0x7f < bVar6) {\n          uVar9 = (ulong)(0x100 - bVar6);\n        }\n        uVar11 = uVar11 + uVar9;\n        uVar15 = uVar15 + 1;\n      } while (uVar15 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      local_58 = local_58 + uVar8;\n      local_50 = local_50 + uVar8;\n    }\n    if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        uVar18 = (uint)ppVar4[lVar12 + 1];\n        uVar16 = local_58[lVar12] - uVar18;\n        uVar17 = ppVar22[lVar12 + 1] - uVar18;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar19 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19;\n        if (((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7)) {\n          uVar16 = (uint)local_58[lVar12];\n        }\n        uVar16 = ppVar23[lVar12] - uVar16;\n        local_50[lVar12] = (png_byte)uVar16;\n        uVar17 = uVar16 & 0xff;\n        if (0x7f < (uVar16 & 0xff)) {\n          uVar17 = 0x100 - (uVar16 & 0xff);\n        }\n        uVar11 = uVar11 + uVar17;\n      } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n    }\n    if (uVar11 < uVar24) {\n      input = png_ptr->try_row;\n      if (png_ptr->tst_row != (png_bytep)0x0) {\n        png_ptr->try_row = png_ptr->tst_row;\n        png_ptr->tst_row = input;\n      }\n    }\n  }\nLAB_00126e34:\n  png_compress_IDAT(png_ptr,input,row_info->rowbytes + 1,0);\n  ppVar23 = png_ptr->prev_row;\n  if (ppVar23 != (png_bytep)0x0) {\n    png_ptr->prev_row = png_ptr->row_buf;\n    png_ptr->row_buf = ppVar23;\n  }\n  png_write_finish_row(png_ptr);\n  uVar16 = png_ptr->flush_rows + 1;\n  png_ptr->flush_rows = uVar16;\n  if ((png_ptr->flush_dist <= uVar16) && (png_ptr->flush_dist != 0)) {\n    png_write_flush(png_ptr);\n  }\n  return;\n}\n\n" (function_definition "void png_write_find_filter(png_structrp png_ptr,png_row_infop row_info)\n\n{\n  ulong uVar1;\n  png_bytep ppVar2;\n  png_bytep ppVar3;\n  png_bytep ppVar4;\n  byte bVar5;\n  byte bVar6;\n  int iVar7;\n  ulong uVar8;\n  ulong uVar9;\n  byte *pbVar10;\n  ulong uVar11;\n  long lVar12;\n  int iVar13;\n  png_const_bytep input;\n  int iVar14;\n  ulong uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  png_const_bytep ppVar20;\n  png_bytep ppVar21;\n  png_bytep ppVar22;\n  png_bytep ppVar23;\n  ulong uVar24;\n  png_bytep local_58;\n  png_bytep local_50;\n  \n  bVar6 = png_ptr->do_filter;\n  uVar1 = row_info->rowbytes;\n  uVar16 = (int)(row_info->pixel_depth + 7) >> 3;\n  input = png_ptr->row_buf;\n  if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar6 & 8) == 0) || (bVar6 == 8)) {\n      uVar24 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar10 = input + 1;\n      uVar24 = uVar1;\n      if (uVar1 != 0) {\n        uVar24 = 0;\n        do {\n          bVar5 = *pbVar10;\n          uVar8 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar8 = (ulong)(0x100 - bVar5);\n          }\n          uVar24 = uVar24 + uVar8;\n          pbVar10 = pbVar10 + 1;\n        } while (pbVar10 != input + uVar1 + 1);\n      }\n    }\n  }\n  else {\n    bVar6 = bVar6 & -bVar6;\n    uVar24 = 0xfffffffffffffeff;\n  }\n  if (bVar6 == 0x10) {\n    ppVar21 = png_ptr->try_row;\n    *ppVar21 = '\x01';\n    ppVar20 = input + 1;\n    ppVar23 = ppVar21 + 1;\n    uVar8 = (ulong)uVar16;\n    if (uVar16 != 0) {\n      uVar11 = 0;\n      do {\n        ppVar21[uVar11 + 1] = input[uVar11 + 1];\n        uVar11 = uVar11 + 1;\n      } while (uVar11 != uVar8);\n      ppVar20 = ppVar20 + uVar8;\n      ppVar23 = ppVar23 + uVar8;\n    }\n    if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        ppVar23[lVar12] = ppVar20[lVar12] - input[lVar12 + 1];\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar8 != lVar12);\n    }\n    input = png_ptr->try_row;\nLAB_00126e0b:\n    if (bVar6 == 0x40) {\n      ppVar4 = png_ptr->try_row;\n      *ppVar4 = '\x03';\n      ppVar2 = png_ptr->row_buf;\n      ppVar23 = ppVar2 + 1;\n      ppVar21 = ppVar4 + 1;\n      ppVar3 = png_ptr->prev_row;\n      ppVar22 = ppVar3 + 1;\n      if (uVar16 != 0) {\n        lVar12 = 1;\n        do {\n          ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);\n          lVar12 = lVar12 + 1;\n        } while ((ulong)(uVar16 - 1) + 2 != lVar12);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        ppVar22 = ppVar22 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);\n          iVar7 = (int)lVar12;\n          lVar12 = lVar12 + 1;\n        } while (uVar16 + 1 + iVar7 < uVar1);\n      }\n      input = png_ptr->try_row;\n      goto LAB_00126e34;\n    }\n    if ((bVar6 & 0x40) != 0) {\n      ppVar22 = png_ptr->try_row;\n      *ppVar22 = '\x03';\n      ppVar4 = png_ptr->row_buf;\n      ppVar23 = ppVar4 + 1;\n      ppVar21 = ppVar22 + 1;\n      ppVar2 = png_ptr->prev_row;\n      local_58 = ppVar2 + 1;\n      if (uVar16 == 0) {\n        uVar8 = 0;\n      }\n      else {\n        lVar12 = 1;\n        uVar8 = 0;\n        do {\n          bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);\n          ppVar22[lVar12] = bVar5;\n          uVar17 = (uint)bVar5;\n          if (0x7f < bVar5) {\n            uVar17 = 0x100 - bVar5;\n          }\n          uVar8 = uVar8 + uVar17;\n          lVar12 = lVar12 + 1;\n        } while (lVar12 != (ulong)(uVar16 - 1) + 2);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        local_58 = local_58 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          uVar18 = (uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1);\n          ppVar21[lVar12] = (png_byte)uVar18;\n          uVar17 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar17 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar8 = uVar8 + uVar17;\n        } while ((uVar8 <= uVar24) &&\n                (iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1));\n      }\n      if (uVar8 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar8;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar6 & 0x10) != 0) {\n      ppVar21 = png_ptr->try_row;\n      *ppVar21 = '\x01';\n      ppVar20 = input + 1;\n      ppVar23 = ppVar21 + 1;\n      uVar8 = (ulong)uVar16;\n      uVar11 = uVar8;\n      if (uVar16 != 0) {\n        uVar15 = 0;\n        uVar11 = 0;\n        do {\n          bVar5 = input[uVar15 + 1];\n          ppVar21[uVar15 + 1] = bVar5;\n          uVar9 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar9 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar9;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 != uVar8);\n        ppVar20 = ppVar20 + uVar8;\n        ppVar23 = ppVar23 + uVar8;\n      }\n      if (uVar8 < uVar1) {\n        lVar12 = 0;\n        do {\n          bVar5 = ppVar20[lVar12] - input[lVar12 + 1];\n          ppVar23[lVar12] = bVar5;\n          uVar15 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar15 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar15;\n        } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n      }\n      if (uVar11 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar11;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }\n    if (bVar6 != 0x20) {\n      if ((bVar6 & 0x20) != 0) {\n        ppVar23 = png_ptr->try_row;\n        *ppVar23 = '\x02';\n        ppVar21 = png_ptr->row_buf;\n        ppVar22 = png_ptr->prev_row;\n        uVar8 = uVar1;\n        if (uVar1 != 0) {\n          uVar11 = 0;\n          uVar8 = 0;\n          do {\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));\n        }\n        if (uVar8 < uVar24) {\n          input = png_ptr->try_row;\n          uVar24 = uVar8;\n          if (png_ptr->tst_row != (png_bytep)0x0) {\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    ppVar23 = png_ptr->try_row;\n    *ppVar23 = '\x02';\n    ppVar21 = png_ptr->row_buf;\n    ppVar22 = png_ptr->prev_row;\n    if (uVar1 != 0) {\n      uVar8 = 0;\n      do {\n        ppVar23[uVar8 + 1] = ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar1 != uVar8);\n    }\n    input = png_ptr->try_row;\n  }\n  if (bVar6 == 0x80) {\n    ppVar4 = png_ptr->try_row;\n    *ppVar4 = '\x04';\n    ppVar2 = png_ptr->row_buf;\n    ppVar23 = ppVar2 + 1;\n    ppVar21 = ppVar4 + 1;\n    ppVar3 = png_ptr->prev_row;\n    ppVar22 = ppVar3 + 1;\n    uVar24 = (ulong)uVar16;\n    if (uVar16 != 0) {\n      uVar8 = 0;\n      do {\n        ppVar4[uVar8 + 1] = ppVar2[uVar8 + 1] - ppVar3[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar24 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      ppVar22 = ppVar22 + uVar8;\n      ppVar21 = ppVar21 + uVar8;\n      uVar24 = uVar8;\n    }\n    if (uVar24 < uVar1) {\n      lVar12 = 0;\n      do {\n        bVar6 = ppVar3[lVar12 + 1];\n        uVar16 = (uint)ppVar22[lVar12] - (uint)bVar6;\n        uVar17 = (uint)ppVar2[lVar12 + 1] - (uint)bVar6;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar18 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar18) - uVar18;\n        if (((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)) &&\n           (bVar5 = bVar6, iVar14 <= iVar7)) {\n          bVar5 = ppVar22[lVar12];\n        }\n        ppVar21[lVar12] = ppVar23[lVar12] - bVar5;\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar24 != lVar12);\n    }\n    input = png_ptr->try_row;\n  }\n  else if ((bVar6 & 0x80) != 0) {\n    ppVar21 = png_ptr->try_row;\n    *ppVar21 = '\x04';\n    ppVar22 = png_ptr->row_buf;\n    ppVar23 = ppVar22 + 1;\n    local_50 = ppVar21 + 1;\n    ppVar4 = png_ptr->prev_row;\n    local_58 = ppVar4 + 1;\n    uVar8 = (ulong)uVar16;\n    uVar11 = uVar8;\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      uVar11 = 0;\n      do {\n        bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1];\n        ppVar21[uVar15 + 1] = bVar6;\n        uVar9 = (ulong)bVar6;\n        if (0x7f < bVar6) {\n          uVar9 = (ulong)(0x100 - bVar6);\n        }\n        uVar11 = uVar11 + uVar9;\n        uVar15 = uVar15 + 1;\n      } while (uVar15 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      local_58 = local_58 + uVar8;\n      local_50 = local_50 + uVar8;\n    }\n    if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        uVar18 = (uint)ppVar4[lVar12 + 1];\n        uVar16 = local_58[lVar12] - uVar18;\n        uVar17 = ppVar22[lVar12 + 1] - uVar18;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar19 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19;\n        if (((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7)) {\n          uVar16 = (uint)local_58[lVar12];\n        }\n        uVar16 = ppVar23[lVar12] - uVar16;\n        local_50[lVar12] = (png_byte)uVar16;\n        uVar17 = uVar16 & 0xff;\n        if (0x7f < (uVar16 & 0xff)) {\n          uVar17 = 0x100 - (uVar16 & 0xff);\n        }\n        uVar11 = uVar11 + uVar17;\n      } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n    }\n    if (uVar11 < uVar24) {\n      input = png_ptr->try_row;\n      if (png_ptr->tst_row != (png_bytep)0x0) {\n        png_ptr->try_row = png_ptr->tst_row;\n        png_ptr->tst_row = input;\n      }\n    }\n  }\nLAB_00126e34:\n  png_compress_IDAT(png_ptr,input,row_info->rowbytes + 1,0);\n  ppVar23 = png_ptr->prev_row;\n  if (ppVar23 != (png_bytep)0x0) {\n    png_ptr->prev_row = png_ptr->row_buf;\n    png_ptr->row_buf = ppVar23;\n  }\n  png_write_finish_row(png_ptr);\n  uVar16 = png_ptr->flush_rows + 1;\n  png_ptr->flush_rows = uVar16;\n  if ((png_ptr->flush_dist <= uVar16) && (png_ptr->flush_dist != 0)) {\n    png_write_flush(png_ptr);\n  }\n  return;\n}" primitive_type (function_declarator "png_write_find_filter(png_structrp png_ptr,png_row_infop row_info)" identifier (parameter_list "(png_structrp png_ptr,png_row_infop row_info)" ( (parameter_declaration "png_structrp png_ptr" type_identifier identifier) , (parameter_declaration "png_row_infop row_info" type_identifier identifier) ))) (compound_statement "{\n  ulong uVar1;\n  png_bytep ppVar2;\n  png_bytep ppVar3;\n  png_bytep ppVar4;\n  byte bVar5;\n  byte bVar6;\n  int iVar7;\n  ulong uVar8;\n  ulong uVar9;\n  byte *pbVar10;\n  ulong uVar11;\n  long lVar12;\n  int iVar13;\n  png_const_bytep input;\n  int iVar14;\n  ulong uVar15;\n  uint uVar16;\n  uint uVar17;\n  uint uVar18;\n  uint uVar19;\n  png_const_bytep ppVar20;\n  png_bytep ppVar21;\n  png_bytep ppVar22;\n  png_bytep ppVar23;\n  ulong uVar24;\n  png_bytep local_58;\n  png_bytep local_50;\n  \n  bVar6 = png_ptr->do_filter;\n  uVar1 = row_info->rowbytes;\n  uVar16 = (int)(row_info->pixel_depth + 7) >> 3;\n  input = png_ptr->row_buf;\n  if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar6 & 8) == 0) || (bVar6 == 8)) {\n      uVar24 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar10 = input + 1;\n      uVar24 = uVar1;\n      if (uVar1 != 0) {\n        uVar24 = 0;\n        do {\n          bVar5 = *pbVar10;\n          uVar8 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar8 = (ulong)(0x100 - bVar5);\n          }\n          uVar24 = uVar24 + uVar8;\n          pbVar10 = pbVar10 + 1;\n        } while (pbVar10 != input + uVar1 + 1);\n      }\n    }\n  }\n  else {\n    bVar6 = bVar6 & -bVar6;\n    uVar24 = 0xfffffffffffffeff;\n  }\n  if (bVar6 == 0x10) {\n    ppVar21 = png_ptr->try_row;\n    *ppVar21 = '\x01';\n    ppVar20 = input + 1;\n    ppVar23 = ppVar21 + 1;\n    uVar8 = (ulong)uVar16;\n    if (uVar16 != 0) {\n      uVar11 = 0;\n      do {\n        ppVar21[uVar11 + 1] = input[uVar11 + 1];\n        uVar11 = uVar11 + 1;\n      } while (uVar11 != uVar8);\n      ppVar20 = ppVar20 + uVar8;\n      ppVar23 = ppVar23 + uVar8;\n    }\n    if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        ppVar23[lVar12] = ppVar20[lVar12] - input[lVar12 + 1];\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar8 != lVar12);\n    }\n    input = png_ptr->try_row;\nLAB_00126e0b:\n    if (bVar6 == 0x40) {\n      ppVar4 = png_ptr->try_row;\n      *ppVar4 = '\x03';\n      ppVar2 = png_ptr->row_buf;\n      ppVar23 = ppVar2 + 1;\n      ppVar21 = ppVar4 + 1;\n      ppVar3 = png_ptr->prev_row;\n      ppVar22 = ppVar3 + 1;\n      if (uVar16 != 0) {\n        lVar12 = 1;\n        do {\n          ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);\n          lVar12 = lVar12 + 1;\n        } while ((ulong)(uVar16 - 1) + 2 != lVar12);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        ppVar22 = ppVar22 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);\n          iVar7 = (int)lVar12;\n          lVar12 = lVar12 + 1;\n        } while (uVar16 + 1 + iVar7 < uVar1);\n      }\n      input = png_ptr->try_row;\n      goto LAB_00126e34;\n    }\n    if ((bVar6 & 0x40) != 0) {\n      ppVar22 = png_ptr->try_row;\n      *ppVar22 = '\x03';\n      ppVar4 = png_ptr->row_buf;\n      ppVar23 = ppVar4 + 1;\n      ppVar21 = ppVar22 + 1;\n      ppVar2 = png_ptr->prev_row;\n      local_58 = ppVar2 + 1;\n      if (uVar16 == 0) {\n        uVar8 = 0;\n      }\n      else {\n        lVar12 = 1;\n        uVar8 = 0;\n        do {\n          bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);\n          ppVar22[lVar12] = bVar5;\n          uVar17 = (uint)bVar5;\n          if (0x7f < bVar5) {\n            uVar17 = 0x100 - bVar5;\n          }\n          uVar8 = uVar8 + uVar17;\n          lVar12 = lVar12 + 1;\n        } while (lVar12 != (ulong)(uVar16 - 1) + 2);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        local_58 = local_58 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          uVar18 = (uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1);\n          ppVar21[lVar12] = (png_byte)uVar18;\n          uVar17 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar17 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar8 = uVar8 + uVar17;\n        } while ((uVar8 <= uVar24) &&\n                (iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1));\n      }\n      if (uVar8 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar8;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar6 & 0x10) != 0) {\n      ppVar21 = png_ptr->try_row;\n      *ppVar21 = '\x01';\n      ppVar20 = input + 1;\n      ppVar23 = ppVar21 + 1;\n      uVar8 = (ulong)uVar16;\n      uVar11 = uVar8;\n      if (uVar16 != 0) {\n        uVar15 = 0;\n        uVar11 = 0;\n        do {\n          bVar5 = input[uVar15 + 1];\n          ppVar21[uVar15 + 1] = bVar5;\n          uVar9 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar9 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar9;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 != uVar8);\n        ppVar20 = ppVar20 + uVar8;\n        ppVar23 = ppVar23 + uVar8;\n      }\n      if (uVar8 < uVar1) {\n        lVar12 = 0;\n        do {\n          bVar5 = ppVar20[lVar12] - input[lVar12 + 1];\n          ppVar23[lVar12] = bVar5;\n          uVar15 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar15 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar15;\n        } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n      }\n      if (uVar11 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar11;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }\n    if (bVar6 != 0x20) {\n      if ((bVar6 & 0x20) != 0) {\n        ppVar23 = png_ptr->try_row;\n        *ppVar23 = '\x02';\n        ppVar21 = png_ptr->row_buf;\n        ppVar22 = png_ptr->prev_row;\n        uVar8 = uVar1;\n        if (uVar1 != 0) {\n          uVar11 = 0;\n          uVar8 = 0;\n          do {\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));\n        }\n        if (uVar8 < uVar24) {\n          input = png_ptr->try_row;\n          uVar24 = uVar8;\n          if (png_ptr->tst_row != (png_bytep)0x0) {\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    ppVar23 = png_ptr->try_row;\n    *ppVar23 = '\x02';\n    ppVar21 = png_ptr->row_buf;\n    ppVar22 = png_ptr->prev_row;\n    if (uVar1 != 0) {\n      uVar8 = 0;\n      do {\n        ppVar23[uVar8 + 1] = ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar1 != uVar8);\n    }\n    input = png_ptr->try_row;\n  }\n  if (bVar6 == 0x80) {\n    ppVar4 = png_ptr->try_row;\n    *ppVar4 = '\x04';\n    ppVar2 = png_ptr->row_buf;\n    ppVar23 = ppVar2 + 1;\n    ppVar21 = ppVar4 + 1;\n    ppVar3 = png_ptr->prev_row;\n    ppVar22 = ppVar3 + 1;\n    uVar24 = (ulong)uVar16;\n    if (uVar16 != 0) {\n      uVar8 = 0;\n      do {\n        ppVar4[uVar8 + 1] = ppVar2[uVar8 + 1] - ppVar3[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar24 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      ppVar22 = ppVar22 + uVar8;\n      ppVar21 = ppVar21 + uVar8;\n      uVar24 = uVar8;\n    }\n    if (uVar24 < uVar1) {\n      lVar12 = 0;\n      do {\n        bVar6 = ppVar3[lVar12 + 1];\n        uVar16 = (uint)ppVar22[lVar12] - (uint)bVar6;\n        uVar17 = (uint)ppVar2[lVar12 + 1] - (uint)bVar6;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar18 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar18) - uVar18;\n        if (((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)) &&\n           (bVar5 = bVar6, iVar14 <= iVar7)) {\n          bVar5 = ppVar22[lVar12];\n        }\n        ppVar21[lVar12] = ppVar23[lVar12] - bVar5;\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar24 != lVar12);\n    }\n    input = png_ptr->try_row;\n  }\n  else if ((bVar6 & 0x80) != 0) {\n    ppVar21 = png_ptr->try_row;\n    *ppVar21 = '\x04';\n    ppVar22 = png_ptr->row_buf;\n    ppVar23 = ppVar22 + 1;\n    local_50 = ppVar21 + 1;\n    ppVar4 = png_ptr->prev_row;\n    local_58 = ppVar4 + 1;\n    uVar8 = (ulong)uVar16;\n    uVar11 = uVar8;\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      uVar11 = 0;\n      do {\n        bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1];\n        ppVar21[uVar15 + 1] = bVar6;\n        uVar9 = (ulong)bVar6;\n        if (0x7f < bVar6) {\n          uVar9 = (ulong)(0x100 - bVar6);\n        }\n        uVar11 = uVar11 + uVar9;\n        uVar15 = uVar15 + 1;\n      } while (uVar15 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      local_58 = local_58 + uVar8;\n      local_50 = local_50 + uVar8;\n    }\n    if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        uVar18 = (uint)ppVar4[lVar12 + 1];\n        uVar16 = local_58[lVar12] - uVar18;\n        uVar17 = ppVar22[lVar12 + 1] - uVar18;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar19 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19;\n        if (((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7)) {\n          uVar16 = (uint)local_58[lVar12];\n        }\n        uVar16 = ppVar23[lVar12] - uVar16;\n        local_50[lVar12] = (png_byte)uVar16;\n        uVar17 = uVar16 & 0xff;\n        if (0x7f < (uVar16 & 0xff)) {\n          uVar17 = 0x100 - (uVar16 & 0xff);\n        }\n        uVar11 = uVar11 + uVar17;\n      } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n    }\n    if (uVar11 < uVar24) {\n      input = png_ptr->try_row;\n      if (png_ptr->tst_row != (png_bytep)0x0) {\n        png_ptr->try_row = png_ptr->tst_row;\n        png_ptr->tst_row = input;\n      }\n    }\n  }\nLAB_00126e34:\n  png_compress_IDAT(png_ptr,input,row_info->rowbytes + 1,0);\n  ppVar23 = png_ptr->prev_row;\n  if (ppVar23 != (png_bytep)0x0) {\n    png_ptr->prev_row = png_ptr->row_buf;\n    png_ptr->row_buf = ppVar23;\n  }\n  png_write_finish_row(png_ptr);\n  uVar16 = png_ptr->flush_rows + 1;\n  png_ptr->flush_rows = uVar16;\n  if ((png_ptr->flush_dist <= uVar16) && (png_ptr->flush_dist != 0)) {\n    png_write_flush(png_ptr);\n  }\n  return;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "png_bytep ppVar2;" type_identifier identifier ;) (declaration "png_bytep ppVar3;" type_identifier identifier ;) (declaration "png_bytep ppVar4;" type_identifier identifier ;) (declaration "byte bVar5;" type_identifier identifier ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "png_const_bytep input;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "png_const_bytep ppVar20;" type_identifier identifier ;) (declaration "png_bytep ppVar21;" type_identifier identifier ;) (declaration "png_bytep ppVar22;" type_identifier identifier ;) (declaration "png_bytep ppVar23;" type_identifier identifier ;) (declaration "ulong uVar24;" type_identifier identifier ;) (declaration "png_bytep local_58;" type_identifier identifier ;) (declaration "png_bytep local_50;" type_identifier identifier ;) (expression_statement "bVar6 = png_ptr->do_filter;" (assignment_expression "bVar6 = png_ptr->do_filter" identifier = (field_expression "png_ptr->do_filter" identifier -> field_identifier)) ;) (expression_statement "uVar1 = row_info->rowbytes;" (assignment_expression "uVar1 = row_info->rowbytes" identifier = (field_expression "row_info->rowbytes" identifier -> field_identifier)) ;) (expression_statement "uVar16 = (int)(row_info->pixel_depth + 7) >> 3;" (assignment_expression "uVar16 = (int)(row_info->pixel_depth + 7) >> 3" identifier = (binary_expression "(int)(row_info->pixel_depth + 7) >> 3" (cast_expression "(int)(row_info->pixel_depth + 7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(row_info->pixel_depth + 7)" ( (binary_expression "row_info->pixel_depth + 7" (field_expression "row_info->pixel_depth" identifier -> field_identifier) + number_literal) ))) >> number_literal)) ;) (expression_statement "input = png_ptr->row_buf;" (assignment_expression "input = png_ptr->row_buf" identifier = (field_expression "png_ptr->row_buf" identifier -> field_identifier)) ;) (if_statement "if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar6 & 8) == 0) || (bVar6 == 8)) {\n      uVar24 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar10 = input + 1;\n      uVar24 = uVar1;\n      if (uVar1 != 0) {\n        uVar24 = 0;\n        do {\n          bVar5 = *pbVar10;\n          uVar8 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar8 = (ulong)(0x100 - bVar5);\n          }\n          uVar24 = uVar24 + uVar8;\n          pbVar10 = pbVar10 + 1;\n        } while (pbVar10 != input + uVar1 + 1);\n      }\n    }\n  }\n  else {\n    bVar6 = bVar6 & -bVar6;\n    uVar24 = 0xfffffffffffffeff;\n  }" if (parenthesized_expression "(uVar1 < 0x1ffffffffffffff)" ( (binary_expression "uVar1 < 0x1ffffffffffffff" identifier < number_literal) )) (compound_statement "{\n    if (((bVar6 & 8) == 0) || (bVar6 == 8)) {\n      uVar24 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar10 = input + 1;\n      uVar24 = uVar1;\n      if (uVar1 != 0) {\n        uVar24 = 0;\n        do {\n          bVar5 = *pbVar10;\n          uVar8 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar8 = (ulong)(0x100 - bVar5);\n          }\n          uVar24 = uVar24 + uVar8;\n          pbVar10 = pbVar10 + 1;\n        } while (pbVar10 != input + uVar1 + 1);\n      }\n    }\n  }" { (if_statement "if (((bVar6 & 8) == 0) || (bVar6 == 8)) {\n      uVar24 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar10 = input + 1;\n      uVar24 = uVar1;\n      if (uVar1 != 0) {\n        uVar24 = 0;\n        do {\n          bVar5 = *pbVar10;\n          uVar8 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar8 = (ulong)(0x100 - bVar5);\n          }\n          uVar24 = uVar24 + uVar8;\n          pbVar10 = pbVar10 + 1;\n        } while (pbVar10 != input + uVar1 + 1);\n      }\n    }" if (parenthesized_expression "(((bVar6 & 8) == 0) || (bVar6 == 8))" ( (binary_expression "((bVar6 & 8) == 0) || (bVar6 == 8)" (parenthesized_expression "((bVar6 & 8) == 0)" ( (binary_expression "(bVar6 & 8) == 0" (parenthesized_expression "(bVar6 & 8)" ( (binary_expression "bVar6 & 8" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(bVar6 == 8)" ( (binary_expression "bVar6 == 8" identifier == number_literal) ))) )) (compound_statement "{\n      uVar24 = 0xfffffffffffffeff;\n    }" { (expression_statement "uVar24 = 0xfffffffffffffeff;" (assignment_expression "uVar24 = 0xfffffffffffffeff" identifier = number_literal) ;) }) (else_clause "else {\n      pbVar10 = input + 1;\n      uVar24 = uVar1;\n      if (uVar1 != 0) {\n        uVar24 = 0;\n        do {\n          bVar5 = *pbVar10;\n          uVar8 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar8 = (ulong)(0x100 - bVar5);\n          }\n          uVar24 = uVar24 + uVar8;\n          pbVar10 = pbVar10 + 1;\n        } while (pbVar10 != input + uVar1 + 1);\n      }\n    }" else (compound_statement "{\n      pbVar10 = input + 1;\n      uVar24 = uVar1;\n      if (uVar1 != 0) {\n        uVar24 = 0;\n        do {\n          bVar5 = *pbVar10;\n          uVar8 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar8 = (ulong)(0x100 - bVar5);\n          }\n          uVar24 = uVar24 + uVar8;\n          pbVar10 = pbVar10 + 1;\n        } while (pbVar10 != input + uVar1 + 1);\n      }\n    }" { (expression_statement "pbVar10 = input + 1;" (assignment_expression "pbVar10 = input + 1" identifier = (binary_expression "input + 1" identifier + number_literal)) ;) (expression_statement "uVar24 = uVar1;" (assignment_expression "uVar24 = uVar1" identifier = identifier) ;) (if_statement "if (uVar1 != 0) {\n        uVar24 = 0;\n        do {\n          bVar5 = *pbVar10;\n          uVar8 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar8 = (ulong)(0x100 - bVar5);\n          }\n          uVar24 = uVar24 + uVar8;\n          pbVar10 = pbVar10 + 1;\n        } while (pbVar10 != input + uVar1 + 1);\n      }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar24 = 0;\n        do {\n          bVar5 = *pbVar10;\n          uVar8 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar8 = (ulong)(0x100 - bVar5);\n          }\n          uVar24 = uVar24 + uVar8;\n          pbVar10 = pbVar10 + 1;\n        } while (pbVar10 != input + uVar1 + 1);\n      }" { (expression_statement "uVar24 = 0;" (assignment_expression "uVar24 = 0" identifier = number_literal) ;) (do_statement "do {\n          bVar5 = *pbVar10;\n          uVar8 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar8 = (ulong)(0x100 - bVar5);\n          }\n          uVar24 = uVar24 + uVar8;\n          pbVar10 = pbVar10 + 1;\n        } while (pbVar10 != input + uVar1 + 1);" do (compound_statement "{\n          bVar5 = *pbVar10;\n          uVar8 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar8 = (ulong)(0x100 - bVar5);\n          }\n          uVar24 = uVar24 + uVar8;\n          pbVar10 = pbVar10 + 1;\n        }" { (expression_statement "bVar5 = *pbVar10;" (assignment_expression "bVar5 = *pbVar10" identifier = (pointer_expression "*pbVar10" * identifier)) ;) (expression_statement "uVar8 = (ulong)bVar5;" (assignment_expression "uVar8 = (ulong)bVar5" identifier = (cast_expression "(ulong)bVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar5) {\n            uVar8 = (ulong)(0x100 - bVar5);\n          }" if (parenthesized_expression "(0x7f < bVar5)" ( (binary_expression "0x7f < bVar5" number_literal < identifier) )) (compound_statement "{\n            uVar8 = (ulong)(0x100 - bVar5);\n          }" { (expression_statement "uVar8 = (ulong)(0x100 - bVar5);" (assignment_expression "uVar8 = (ulong)(0x100 - bVar5)" identifier = (call_expression "(ulong)(0x100 - bVar5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar5)" ( (binary_expression "0x100 - bVar5" number_literal - identifier) )))) ;) })) (expression_statement "uVar24 = uVar24 + uVar8;" (assignment_expression "uVar24 = uVar24 + uVar8" identifier = (binary_expression "uVar24 + uVar8" identifier + identifier)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar10 != input + uVar1 + 1)" ( (binary_expression "pbVar10 != input + uVar1 + 1" identifier != (binary_expression "input + uVar1 + 1" (binary_expression "input + uVar1" identifier + identifier) + number_literal)) )) ;) })) }))) }) (else_clause "else {\n    bVar6 = bVar6 & -bVar6;\n    uVar24 = 0xfffffffffffffeff;\n  }" else (compound_statement "{\n    bVar6 = bVar6 & -bVar6;\n    uVar24 = 0xfffffffffffffeff;\n  }" { (expression_statement "bVar6 = bVar6 & -bVar6;" (assignment_expression "bVar6 = bVar6 & -bVar6" identifier = (binary_expression "bVar6 & -bVar6" identifier & (unary_expression "-bVar6" - identifier))) ;) (expression_statement "uVar24 = 0xfffffffffffffeff;" (assignment_expression "uVar24 = 0xfffffffffffffeff" identifier = number_literal) ;) }))) (if_statement "if (bVar6 == 0x10) {\n    ppVar21 = png_ptr->try_row;\n    *ppVar21 = '\x01';\n    ppVar20 = input + 1;\n    ppVar23 = ppVar21 + 1;\n    uVar8 = (ulong)uVar16;\n    if (uVar16 != 0) {\n      uVar11 = 0;\n      do {\n        ppVar21[uVar11 + 1] = input[uVar11 + 1];\n        uVar11 = uVar11 + 1;\n      } while (uVar11 != uVar8);\n      ppVar20 = ppVar20 + uVar8;\n      ppVar23 = ppVar23 + uVar8;\n    }\n    if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        ppVar23[lVar12] = ppVar20[lVar12] - input[lVar12 + 1];\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar8 != lVar12);\n    }\n    input = png_ptr->try_row;\nLAB_00126e0b:\n    if (bVar6 == 0x40) {\n      ppVar4 = png_ptr->try_row;\n      *ppVar4 = '\x03';\n      ppVar2 = png_ptr->row_buf;\n      ppVar23 = ppVar2 + 1;\n      ppVar21 = ppVar4 + 1;\n      ppVar3 = png_ptr->prev_row;\n      ppVar22 = ppVar3 + 1;\n      if (uVar16 != 0) {\n        lVar12 = 1;\n        do {\n          ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);\n          lVar12 = lVar12 + 1;\n        } while ((ulong)(uVar16 - 1) + 2 != lVar12);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        ppVar22 = ppVar22 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);\n          iVar7 = (int)lVar12;\n          lVar12 = lVar12 + 1;\n        } while (uVar16 + 1 + iVar7 < uVar1);\n      }\n      input = png_ptr->try_row;\n      goto LAB_00126e34;\n    }\n    if ((bVar6 & 0x40) != 0) {\n      ppVar22 = png_ptr->try_row;\n      *ppVar22 = '\x03';\n      ppVar4 = png_ptr->row_buf;\n      ppVar23 = ppVar4 + 1;\n      ppVar21 = ppVar22 + 1;\n      ppVar2 = png_ptr->prev_row;\n      local_58 = ppVar2 + 1;\n      if (uVar16 == 0) {\n        uVar8 = 0;\n      }\n      else {\n        lVar12 = 1;\n        uVar8 = 0;\n        do {\n          bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);\n          ppVar22[lVar12] = bVar5;\n          uVar17 = (uint)bVar5;\n          if (0x7f < bVar5) {\n            uVar17 = 0x100 - bVar5;\n          }\n          uVar8 = uVar8 + uVar17;\n          lVar12 = lVar12 + 1;\n        } while (lVar12 != (ulong)(uVar16 - 1) + 2);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        local_58 = local_58 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          uVar18 = (uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1);\n          ppVar21[lVar12] = (png_byte)uVar18;\n          uVar17 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar17 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar8 = uVar8 + uVar17;\n        } while ((uVar8 <= uVar24) &&\n                (iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1));\n      }\n      if (uVar8 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar8;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar6 & 0x10) != 0) {\n      ppVar21 = png_ptr->try_row;\n      *ppVar21 = '\x01';\n      ppVar20 = input + 1;\n      ppVar23 = ppVar21 + 1;\n      uVar8 = (ulong)uVar16;\n      uVar11 = uVar8;\n      if (uVar16 != 0) {\n        uVar15 = 0;\n        uVar11 = 0;\n        do {\n          bVar5 = input[uVar15 + 1];\n          ppVar21[uVar15 + 1] = bVar5;\n          uVar9 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar9 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar9;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 != uVar8);\n        ppVar20 = ppVar20 + uVar8;\n        ppVar23 = ppVar23 + uVar8;\n      }\n      if (uVar8 < uVar1) {\n        lVar12 = 0;\n        do {\n          bVar5 = ppVar20[lVar12] - input[lVar12 + 1];\n          ppVar23[lVar12] = bVar5;\n          uVar15 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar15 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar15;\n        } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n      }\n      if (uVar11 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar11;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }\n    if (bVar6 != 0x20) {\n      if ((bVar6 & 0x20) != 0) {\n        ppVar23 = png_ptr->try_row;\n        *ppVar23 = '\x02';\n        ppVar21 = png_ptr->row_buf;\n        ppVar22 = png_ptr->prev_row;\n        uVar8 = uVar1;\n        if (uVar1 != 0) {\n          uVar11 = 0;\n          uVar8 = 0;\n          do {\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));\n        }\n        if (uVar8 < uVar24) {\n          input = png_ptr->try_row;\n          uVar24 = uVar8;\n          if (png_ptr->tst_row != (png_bytep)0x0) {\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    ppVar23 = png_ptr->try_row;\n    *ppVar23 = '\x02';\n    ppVar21 = png_ptr->row_buf;\n    ppVar22 = png_ptr->prev_row;\n    if (uVar1 != 0) {\n      uVar8 = 0;\n      do {\n        ppVar23[uVar8 + 1] = ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar1 != uVar8);\n    }\n    input = png_ptr->try_row;\n  }" if (parenthesized_expression "(bVar6 == 0x10)" ( (binary_expression "bVar6 == 0x10" identifier == number_literal) )) (compound_statement "{\n    ppVar21 = png_ptr->try_row;\n    *ppVar21 = '\x01';\n    ppVar20 = input + 1;\n    ppVar23 = ppVar21 + 1;\n    uVar8 = (ulong)uVar16;\n    if (uVar16 != 0) {\n      uVar11 = 0;\n      do {\n        ppVar21[uVar11 + 1] = input[uVar11 + 1];\n        uVar11 = uVar11 + 1;\n      } while (uVar11 != uVar8);\n      ppVar20 = ppVar20 + uVar8;\n      ppVar23 = ppVar23 + uVar8;\n    }\n    if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        ppVar23[lVar12] = ppVar20[lVar12] - input[lVar12 + 1];\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar8 != lVar12);\n    }\n    input = png_ptr->try_row;\nLAB_00126e0b:\n    if (bVar6 == 0x40) {\n      ppVar4 = png_ptr->try_row;\n      *ppVar4 = '\x03';\n      ppVar2 = png_ptr->row_buf;\n      ppVar23 = ppVar2 + 1;\n      ppVar21 = ppVar4 + 1;\n      ppVar3 = png_ptr->prev_row;\n      ppVar22 = ppVar3 + 1;\n      if (uVar16 != 0) {\n        lVar12 = 1;\n        do {\n          ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);\n          lVar12 = lVar12 + 1;\n        } while ((ulong)(uVar16 - 1) + 2 != lVar12);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        ppVar22 = ppVar22 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);\n          iVar7 = (int)lVar12;\n          lVar12 = lVar12 + 1;\n        } while (uVar16 + 1 + iVar7 < uVar1);\n      }\n      input = png_ptr->try_row;\n      goto LAB_00126e34;\n    }\n    if ((bVar6 & 0x40) != 0) {\n      ppVar22 = png_ptr->try_row;\n      *ppVar22 = '\x03';\n      ppVar4 = png_ptr->row_buf;\n      ppVar23 = ppVar4 + 1;\n      ppVar21 = ppVar22 + 1;\n      ppVar2 = png_ptr->prev_row;\n      local_58 = ppVar2 + 1;\n      if (uVar16 == 0) {\n        uVar8 = 0;\n      }\n      else {\n        lVar12 = 1;\n        uVar8 = 0;\n        do {\n          bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);\n          ppVar22[lVar12] = bVar5;\n          uVar17 = (uint)bVar5;\n          if (0x7f < bVar5) {\n            uVar17 = 0x100 - bVar5;\n          }\n          uVar8 = uVar8 + uVar17;\n          lVar12 = lVar12 + 1;\n        } while (lVar12 != (ulong)(uVar16 - 1) + 2);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        local_58 = local_58 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          uVar18 = (uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1);\n          ppVar21[lVar12] = (png_byte)uVar18;\n          uVar17 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar17 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar8 = uVar8 + uVar17;\n        } while ((uVar8 <= uVar24) &&\n                (iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1));\n      }\n      if (uVar8 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar8;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }\n  }" { (expression_statement "ppVar21 = png_ptr->try_row;" (assignment_expression "ppVar21 = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (expression_statement "*ppVar21 = '\x01';" (assignment_expression "*ppVar21 = '\x01'" (pointer_expression "*ppVar21" * identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "ppVar20 = input + 1;" (assignment_expression "ppVar20 = input + 1" identifier = (binary_expression "input + 1" identifier + number_literal)) ;) (expression_statement "ppVar23 = ppVar21 + 1;" (assignment_expression "ppVar23 = ppVar21 + 1" identifier = (binary_expression "ppVar21 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (ulong)uVar16;" (assignment_expression "uVar8 = (ulong)uVar16" identifier = (cast_expression "(ulong)uVar16" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar16 != 0) {\n      uVar11 = 0;\n      do {\n        ppVar21[uVar11 + 1] = input[uVar11 + 1];\n        uVar11 = uVar11 + 1;\n      } while (uVar11 != uVar8);\n      ppVar20 = ppVar20 + uVar8;\n      ppVar23 = ppVar23 + uVar8;\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar11 = 0;\n      do {\n        ppVar21[uVar11 + 1] = input[uVar11 + 1];\n        uVar11 = uVar11 + 1;\n      } while (uVar11 != uVar8);\n      ppVar20 = ppVar20 + uVar8;\n      ppVar23 = ppVar23 + uVar8;\n    }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        ppVar21[uVar11 + 1] = input[uVar11 + 1];\n        uVar11 = uVar11 + 1;\n      } while (uVar11 != uVar8);" do (compound_statement "{\n        ppVar21[uVar11 + 1] = input[uVar11 + 1];\n        uVar11 = uVar11 + 1;\n      }" { (expression_statement "ppVar21[uVar11 + 1] = input[uVar11 + 1];" (assignment_expression "ppVar21[uVar11 + 1] = input[uVar11 + 1]" (subscript_expression "ppVar21[uVar11 + 1]" identifier [ (binary_expression "uVar11 + 1" identifier + number_literal) ]) = (subscript_expression "input[uVar11 + 1]" identifier [ (binary_expression "uVar11 + 1" identifier + number_literal) ])) ;) (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar11 != uVar8)" ( (binary_expression "uVar11 != uVar8" identifier != identifier) )) ;) (expression_statement "ppVar20 = ppVar20 + uVar8;" (assignment_expression "ppVar20 = ppVar20 + uVar8" identifier = (binary_expression "ppVar20 + uVar8" identifier + identifier)) ;) (expression_statement "ppVar23 = ppVar23 + uVar8;" (assignment_expression "ppVar23 = ppVar23 + uVar8" identifier = (binary_expression "ppVar23 + uVar8" identifier + identifier)) ;) })) (if_statement "if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        ppVar23[lVar12] = ppVar20[lVar12] - input[lVar12 + 1];\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar8 != lVar12);\n    }" if (parenthesized_expression "(uVar8 < uVar1)" ( (binary_expression "uVar8 < uVar1" identifier < identifier) )) (compound_statement "{\n      lVar12 = 0;\n      do {\n        ppVar23[lVar12] = ppVar20[lVar12] - input[lVar12 + 1];\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar8 != lVar12);\n    }" { (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        ppVar23[lVar12] = ppVar20[lVar12] - input[lVar12 + 1];\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar8 != lVar12);" do (compound_statement "{\n        ppVar23[lVar12] = ppVar20[lVar12] - input[lVar12 + 1];\n        lVar12 = lVar12 + 1;\n      }" { (expression_statement "ppVar23[lVar12] = ppVar20[lVar12] - input[lVar12 + 1];" (assignment_expression "ppVar23[lVar12] = ppVar20[lVar12] - input[lVar12 + 1]" (subscript_expression "ppVar23[lVar12]" identifier [ identifier ]) = (binary_expression "ppVar20[lVar12] - input[lVar12 + 1]" (subscript_expression "ppVar20[lVar12]" identifier [ identifier ]) - (subscript_expression "input[lVar12 + 1]" identifier [ (binary_expression "lVar12 + 1" identifier + number_literal) ]))) ;) (expression_statement "lVar12 = lVar12 + 1;" (assignment_expression "lVar12 = lVar12 + 1" identifier = (binary_expression "lVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 - uVar8 != lVar12)" ( (binary_expression "uVar1 - uVar8 != lVar12" (binary_expression "uVar1 - uVar8" identifier - identifier) != identifier) )) ;) })) (expression_statement "input = png_ptr->try_row;" (assignment_expression "input = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (labeled_statement "LAB_00126e0b:\n    if (bVar6 == 0x40) {\n      ppVar4 = png_ptr->try_row;\n      *ppVar4 = '\x03';\n      ppVar2 = png_ptr->row_buf;\n      ppVar23 = ppVar2 + 1;\n      ppVar21 = ppVar4 + 1;\n      ppVar3 = png_ptr->prev_row;\n      ppVar22 = ppVar3 + 1;\n      if (uVar16 != 0) {\n        lVar12 = 1;\n        do {\n          ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);\n          lVar12 = lVar12 + 1;\n        } while ((ulong)(uVar16 - 1) + 2 != lVar12);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        ppVar22 = ppVar22 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);\n          iVar7 = (int)lVar12;\n          lVar12 = lVar12 + 1;\n        } while (uVar16 + 1 + iVar7 < uVar1);\n      }\n      input = png_ptr->try_row;\n      goto LAB_00126e34;\n    }" statement_identifier : (if_statement "if (bVar6 == 0x40) {\n      ppVar4 = png_ptr->try_row;\n      *ppVar4 = '\x03';\n      ppVar2 = png_ptr->row_buf;\n      ppVar23 = ppVar2 + 1;\n      ppVar21 = ppVar4 + 1;\n      ppVar3 = png_ptr->prev_row;\n      ppVar22 = ppVar3 + 1;\n      if (uVar16 != 0) {\n        lVar12 = 1;\n        do {\n          ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);\n          lVar12 = lVar12 + 1;\n        } while ((ulong)(uVar16 - 1) + 2 != lVar12);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        ppVar22 = ppVar22 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);\n          iVar7 = (int)lVar12;\n          lVar12 = lVar12 + 1;\n        } while (uVar16 + 1 + iVar7 < uVar1);\n      }\n      input = png_ptr->try_row;\n      goto LAB_00126e34;\n    }" if (parenthesized_expression "(bVar6 == 0x40)" ( (binary_expression "bVar6 == 0x40" identifier == number_literal) )) (compound_statement "{\n      ppVar4 = png_ptr->try_row;\n      *ppVar4 = '\x03';\n      ppVar2 = png_ptr->row_buf;\n      ppVar23 = ppVar2 + 1;\n      ppVar21 = ppVar4 + 1;\n      ppVar3 = png_ptr->prev_row;\n      ppVar22 = ppVar3 + 1;\n      if (uVar16 != 0) {\n        lVar12 = 1;\n        do {\n          ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);\n          lVar12 = lVar12 + 1;\n        } while ((ulong)(uVar16 - 1) + 2 != lVar12);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        ppVar22 = ppVar22 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);\n          iVar7 = (int)lVar12;\n          lVar12 = lVar12 + 1;\n        } while (uVar16 + 1 + iVar7 < uVar1);\n      }\n      input = png_ptr->try_row;\n      goto LAB_00126e34;\n    }" { (expression_statement "ppVar4 = png_ptr->try_row;" (assignment_expression "ppVar4 = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (expression_statement "*ppVar4 = '\x03';" (assignment_expression "*ppVar4 = '\x03'" (pointer_expression "*ppVar4" * identifier) = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "ppVar2 = png_ptr->row_buf;" (assignment_expression "ppVar2 = png_ptr->row_buf" identifier = (field_expression "png_ptr->row_buf" identifier -> field_identifier)) ;) (expression_statement "ppVar23 = ppVar2 + 1;" (assignment_expression "ppVar23 = ppVar2 + 1" identifier = (binary_expression "ppVar2 + 1" identifier + number_literal)) ;) (expression_statement "ppVar21 = ppVar4 + 1;" (assignment_expression "ppVar21 = ppVar4 + 1" identifier = (binary_expression "ppVar4 + 1" identifier + number_literal)) ;) (expression_statement "ppVar3 = png_ptr->prev_row;" (assignment_expression "ppVar3 = png_ptr->prev_row" identifier = (field_expression "png_ptr->prev_row" identifier -> field_identifier)) ;) (expression_statement "ppVar22 = ppVar3 + 1;" (assignment_expression "ppVar22 = ppVar3 + 1" identifier = (binary_expression "ppVar3 + 1" identifier + number_literal)) ;) (if_statement "if (uVar16 != 0) {\n        lVar12 = 1;\n        do {\n          ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);\n          lVar12 = lVar12 + 1;\n        } while ((ulong)(uVar16 - 1) + 2 != lVar12);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        ppVar22 = ppVar22 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar12 = 1;\n        do {\n          ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);\n          lVar12 = lVar12 + 1;\n        } while ((ulong)(uVar16 - 1) + 2 != lVar12);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        ppVar22 = ppVar22 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }" { (expression_statement "lVar12 = 1;" (assignment_expression "lVar12 = 1" identifier = number_literal) ;) (do_statement "do {\n          ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);\n          lVar12 = lVar12 + 1;\n        } while ((ulong)(uVar16 - 1) + 2 != lVar12);" do (compound_statement "{\n          ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);\n          lVar12 = lVar12 + 1;\n        }" { (expression_statement "ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1);" (assignment_expression "ppVar4[lVar12] = ppVar2[lVar12] - (ppVar3[lVar12] >> 1)" (subscript_expression "ppVar4[lVar12]" identifier [ identifier ]) = (binary_expression "ppVar2[lVar12] - (ppVar3[lVar12] >> 1)" (subscript_expression "ppVar2[lVar12]" identifier [ identifier ]) - (parenthesized_expression "(ppVar3[lVar12] >> 1)" ( (binary_expression "ppVar3[lVar12] >> 1" (subscript_expression "ppVar3[lVar12]" identifier [ identifier ]) >> number_literal) )))) ;) (expression_statement "lVar12 = lVar12 + 1;" (assignment_expression "lVar12 = lVar12 + 1" identifier = (binary_expression "lVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((ulong)(uVar16 - 1) + 2 != lVar12)" ( (binary_expression "(ulong)(uVar16 - 1) + 2 != lVar12" (binary_expression "(ulong)(uVar16 - 1) + 2" (call_expression "(ulong)(uVar16 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar16 - 1)" ( (binary_expression "uVar16 - 1" identifier - number_literal) ))) + number_literal) != identifier) )) ;) (expression_statement "lVar12 = (ulong)(uVar16 - 1) + 1;" (assignment_expression "lVar12 = (ulong)(uVar16 - 1) + 1" identifier = (binary_expression "(ulong)(uVar16 - 1) + 1" (call_expression "(ulong)(uVar16 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar16 - 1)" ( (binary_expression "uVar16 - 1" identifier - number_literal) ))) + number_literal)) ;) (expression_statement "ppVar23 = ppVar23 + lVar12;" (assignment_expression "ppVar23 = ppVar23 + lVar12" identifier = (binary_expression "ppVar23 + lVar12" identifier + identifier)) ;) (expression_statement "ppVar22 = ppVar22 + lVar12;" (assignment_expression "ppVar22 = ppVar22 + lVar12" identifier = (binary_expression "ppVar22 + lVar12" identifier + identifier)) ;) (expression_statement "ppVar21 = ppVar21 + lVar12;" (assignment_expression "ppVar21 = ppVar21 + lVar12" identifier = (binary_expression "ppVar21 + lVar12" identifier + identifier)) ;) })) (if_statement "if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);\n          iVar7 = (int)lVar12;\n          lVar12 = lVar12 + 1;\n        } while (uVar16 + 1 + iVar7 < uVar1);\n      }" if (parenthesized_expression "(uVar16 < uVar1)" ( (binary_expression "uVar16 < uVar1" identifier < identifier) )) (compound_statement "{\n        lVar12 = 0;\n        do {\n          ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);\n          iVar7 = (int)lVar12;\n          lVar12 = lVar12 + 1;\n        } while (uVar16 + 1 + iVar7 < uVar1);\n      }" { (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);\n          iVar7 = (int)lVar12;\n          lVar12 = lVar12 + 1;\n        } while (uVar16 + 1 + iVar7 < uVar1);" do (compound_statement "{\n          ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);\n          iVar7 = (int)lVar12;\n          lVar12 = lVar12 + 1;\n        }" { (expression_statement "ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1);" (assignment_expression "ppVar21[lVar12] =\n               ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1)" (subscript_expression "ppVar21[lVar12]" identifier [ identifier ]) = (binary_expression "ppVar23[lVar12] -\n               (char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1)" (subscript_expression "ppVar23[lVar12]" identifier [ identifier ]) - (cast_expression "(char)((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1)" ( (binary_expression "(int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]) >> 1" (cast_expression "(int)((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1])" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1])" ( (binary_expression "(uint)ppVar22[lVar12] + (uint)ppVar2[lVar12 + 1]" (cast_expression "(uint)ppVar22[lVar12]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppVar22[lVar12]" identifier [ identifier ])) + (cast_expression "(uint)ppVar2[lVar12 + 1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppVar2[lVar12 + 1]" identifier [ (binary_expression "lVar12 + 1" identifier + number_literal) ]))) ))) >> number_literal) ))))) ;) (expression_statement "iVar7 = (int)lVar12;" (assignment_expression "iVar7 = (int)lVar12" identifier = (cast_expression "(int)lVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "lVar12 = lVar12 + 1;" (assignment_expression "lVar12 = lVar12 + 1" identifier = (binary_expression "lVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar16 + 1 + iVar7 < uVar1)" ( (binary_expression "uVar16 + 1 + iVar7 < uVar1" (binary_expression "uVar16 + 1 + iVar7" (binary_expression "uVar16 + 1" identifier + number_literal) + identifier) < identifier) )) ;) })) (expression_statement "input = png_ptr->try_row;" (assignment_expression "input = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00126e34;" goto statement_identifier ;) }))) (if_statement "if ((bVar6 & 0x40) != 0) {\n      ppVar22 = png_ptr->try_row;\n      *ppVar22 = '\x03';\n      ppVar4 = png_ptr->row_buf;\n      ppVar23 = ppVar4 + 1;\n      ppVar21 = ppVar22 + 1;\n      ppVar2 = png_ptr->prev_row;\n      local_58 = ppVar2 + 1;\n      if (uVar16 == 0) {\n        uVar8 = 0;\n      }\n      else {\n        lVar12 = 1;\n        uVar8 = 0;\n        do {\n          bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);\n          ppVar22[lVar12] = bVar5;\n          uVar17 = (uint)bVar5;\n          if (0x7f < bVar5) {\n            uVar17 = 0x100 - bVar5;\n          }\n          uVar8 = uVar8 + uVar17;\n          lVar12 = lVar12 + 1;\n        } while (lVar12 != (ulong)(uVar16 - 1) + 2);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        local_58 = local_58 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          uVar18 = (uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1);\n          ppVar21[lVar12] = (png_byte)uVar18;\n          uVar17 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar17 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar8 = uVar8 + uVar17;\n        } while ((uVar8 <= uVar24) &&\n                (iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1));\n      }\n      if (uVar8 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar8;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }" if (parenthesized_expression "((bVar6 & 0x40) != 0)" ( (binary_expression "(bVar6 & 0x40) != 0" (parenthesized_expression "(bVar6 & 0x40)" ( (binary_expression "bVar6 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      ppVar22 = png_ptr->try_row;\n      *ppVar22 = '\x03';\n      ppVar4 = png_ptr->row_buf;\n      ppVar23 = ppVar4 + 1;\n      ppVar21 = ppVar22 + 1;\n      ppVar2 = png_ptr->prev_row;\n      local_58 = ppVar2 + 1;\n      if (uVar16 == 0) {\n        uVar8 = 0;\n      }\n      else {\n        lVar12 = 1;\n        uVar8 = 0;\n        do {\n          bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);\n          ppVar22[lVar12] = bVar5;\n          uVar17 = (uint)bVar5;\n          if (0x7f < bVar5) {\n            uVar17 = 0x100 - bVar5;\n          }\n          uVar8 = uVar8 + uVar17;\n          lVar12 = lVar12 + 1;\n        } while (lVar12 != (ulong)(uVar16 - 1) + 2);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        local_58 = local_58 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }\n      if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          uVar18 = (uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1);\n          ppVar21[lVar12] = (png_byte)uVar18;\n          uVar17 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar17 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar8 = uVar8 + uVar17;\n        } while ((uVar8 <= uVar24) &&\n                (iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1));\n      }\n      if (uVar8 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar8;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }" { (expression_statement "ppVar22 = png_ptr->try_row;" (assignment_expression "ppVar22 = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (expression_statement "*ppVar22 = '\x03';" (assignment_expression "*ppVar22 = '\x03'" (pointer_expression "*ppVar22" * identifier) = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "ppVar4 = png_ptr->row_buf;" (assignment_expression "ppVar4 = png_ptr->row_buf" identifier = (field_expression "png_ptr->row_buf" identifier -> field_identifier)) ;) (expression_statement "ppVar23 = ppVar4 + 1;" (assignment_expression "ppVar23 = ppVar4 + 1" identifier = (binary_expression "ppVar4 + 1" identifier + number_literal)) ;) (expression_statement "ppVar21 = ppVar22 + 1;" (assignment_expression "ppVar21 = ppVar22 + 1" identifier = (binary_expression "ppVar22 + 1" identifier + number_literal)) ;) (expression_statement "ppVar2 = png_ptr->prev_row;" (assignment_expression "ppVar2 = png_ptr->prev_row" identifier = (field_expression "png_ptr->prev_row" identifier -> field_identifier)) ;) (expression_statement "local_58 = ppVar2 + 1;" (assignment_expression "local_58 = ppVar2 + 1" identifier = (binary_expression "ppVar2 + 1" identifier + number_literal)) ;) (if_statement "if (uVar16 == 0) {\n        uVar8 = 0;\n      }\n      else {\n        lVar12 = 1;\n        uVar8 = 0;\n        do {\n          bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);\n          ppVar22[lVar12] = bVar5;\n          uVar17 = (uint)bVar5;\n          if (0x7f < bVar5) {\n            uVar17 = 0x100 - bVar5;\n          }\n          uVar8 = uVar8 + uVar17;\n          lVar12 = lVar12 + 1;\n        } while (lVar12 != (ulong)(uVar16 - 1) + 2);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        local_58 = local_58 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar8 = 0;\n      }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        lVar12 = 1;\n        uVar8 = 0;\n        do {\n          bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);\n          ppVar22[lVar12] = bVar5;\n          uVar17 = (uint)bVar5;\n          if (0x7f < bVar5) {\n            uVar17 = 0x100 - bVar5;\n          }\n          uVar8 = uVar8 + uVar17;\n          lVar12 = lVar12 + 1;\n        } while (lVar12 != (ulong)(uVar16 - 1) + 2);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        local_58 = local_58 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }" else (compound_statement "{\n        lVar12 = 1;\n        uVar8 = 0;\n        do {\n          bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);\n          ppVar22[lVar12] = bVar5;\n          uVar17 = (uint)bVar5;\n          if (0x7f < bVar5) {\n            uVar17 = 0x100 - bVar5;\n          }\n          uVar8 = uVar8 + uVar17;\n          lVar12 = lVar12 + 1;\n        } while (lVar12 != (ulong)(uVar16 - 1) + 2);\n        lVar12 = (ulong)(uVar16 - 1) + 1;\n        ppVar23 = ppVar23 + lVar12;\n        local_58 = local_58 + lVar12;\n        ppVar21 = ppVar21 + lVar12;\n      }" { (expression_statement "lVar12 = 1;" (assignment_expression "lVar12 = 1" identifier = number_literal) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n          bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);\n          ppVar22[lVar12] = bVar5;\n          uVar17 = (uint)bVar5;\n          if (0x7f < bVar5) {\n            uVar17 = 0x100 - bVar5;\n          }\n          uVar8 = uVar8 + uVar17;\n          lVar12 = lVar12 + 1;\n        } while (lVar12 != (ulong)(uVar16 - 1) + 2);" do (compound_statement "{\n          bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);\n          ppVar22[lVar12] = bVar5;\n          uVar17 = (uint)bVar5;\n          if (0x7f < bVar5) {\n            uVar17 = 0x100 - bVar5;\n          }\n          uVar8 = uVar8 + uVar17;\n          lVar12 = lVar12 + 1;\n        }" { (expression_statement "bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1);" (assignment_expression "bVar5 = ppVar4[lVar12] - (ppVar2[lVar12] >> 1)" identifier = (binary_expression "ppVar4[lVar12] - (ppVar2[lVar12] >> 1)" (subscript_expression "ppVar4[lVar12]" identifier [ identifier ]) - (parenthesized_expression "(ppVar2[lVar12] >> 1)" ( (binary_expression "ppVar2[lVar12] >> 1" (subscript_expression "ppVar2[lVar12]" identifier [ identifier ]) >> number_literal) )))) ;) (expression_statement "ppVar22[lVar12] = bVar5;" (assignment_expression "ppVar22[lVar12] = bVar5" (subscript_expression "ppVar22[lVar12]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar17 = (uint)bVar5;" (assignment_expression "uVar17 = (uint)bVar5" identifier = (cast_expression "(uint)bVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar5) {\n            uVar17 = 0x100 - bVar5;\n          }" if (parenthesized_expression "(0x7f < bVar5)" ( (binary_expression "0x7f < bVar5" number_literal < identifier) )) (compound_statement "{\n            uVar17 = 0x100 - bVar5;\n          }" { (expression_statement "uVar17 = 0x100 - bVar5;" (assignment_expression "uVar17 = 0x100 - bVar5" identifier = (binary_expression "0x100 - bVar5" number_literal - identifier)) ;) })) (expression_statement "uVar8 = uVar8 + uVar17;" (assignment_expression "uVar8 = uVar8 + uVar17" identifier = (binary_expression "uVar8 + uVar17" identifier + identifier)) ;) (expression_statement "lVar12 = lVar12 + 1;" (assignment_expression "lVar12 = lVar12 + 1" identifier = (binary_expression "lVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar12 != (ulong)(uVar16 - 1) + 2)" ( (binary_expression "lVar12 != (ulong)(uVar16 - 1) + 2" identifier != (binary_expression "(ulong)(uVar16 - 1) + 2" (call_expression "(ulong)(uVar16 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar16 - 1)" ( (binary_expression "uVar16 - 1" identifier - number_literal) ))) + number_literal)) )) ;) (expression_statement "lVar12 = (ulong)(uVar16 - 1) + 1;" (assignment_expression "lVar12 = (ulong)(uVar16 - 1) + 1" identifier = (binary_expression "(ulong)(uVar16 - 1) + 1" (call_expression "(ulong)(uVar16 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar16 - 1)" ( (binary_expression "uVar16 - 1" identifier - number_literal) ))) + number_literal)) ;) (expression_statement "ppVar23 = ppVar23 + lVar12;" (assignment_expression "ppVar23 = ppVar23 + lVar12" identifier = (binary_expression "ppVar23 + lVar12" identifier + identifier)) ;) (expression_statement "local_58 = local_58 + lVar12;" (assignment_expression "local_58 = local_58 + lVar12" identifier = (binary_expression "local_58 + lVar12" identifier + identifier)) ;) (expression_statement "ppVar21 = ppVar21 + lVar12;" (assignment_expression "ppVar21 = ppVar21 + lVar12" identifier = (binary_expression "ppVar21 + lVar12" identifier + identifier)) ;) }))) (if_statement "if (uVar16 < uVar1) {\n        lVar12 = 0;\n        do {\n          uVar18 = (uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1);\n          ppVar21[lVar12] = (png_byte)uVar18;\n          uVar17 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar17 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar8 = uVar8 + uVar17;\n        } while ((uVar8 <= uVar24) &&\n                (iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1));\n      }" if (parenthesized_expression "(uVar16 < uVar1)" ( (binary_expression "uVar16 < uVar1" identifier < identifier) )) (compound_statement "{\n        lVar12 = 0;\n        do {\n          uVar18 = (uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1);\n          ppVar21[lVar12] = (png_byte)uVar18;\n          uVar17 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar17 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar8 = uVar8 + uVar17;\n        } while ((uVar8 <= uVar24) &&\n                (iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1));\n      }" { (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar18 = (uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1);\n          ppVar21[lVar12] = (png_byte)uVar18;\n          uVar17 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar17 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar8 = uVar8 + uVar17;\n        } while ((uVar8 <= uVar24) &&\n                (iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1));" do (compound_statement "{\n          uVar18 = (uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1);\n          ppVar21[lVar12] = (png_byte)uVar18;\n          uVar17 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar17 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar8 = uVar8 + uVar17;\n        }" { (expression_statement "uVar18 = (uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1);" (assignment_expression "uVar18 = (uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1)" identifier = (binary_expression "(uint)ppVar23[lVar12] -\n                   ((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1)" (cast_expression "(uint)ppVar23[lVar12]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppVar23[lVar12]" identifier [ identifier ])) - (parenthesized_expression "((int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1)" ( (binary_expression "(int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]) >> 1" (cast_expression "(int)((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1])" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1])" ( (binary_expression "(uint)local_58[lVar12] + (uint)ppVar4[lVar12 + 1]" (cast_expression "(uint)local_58[lVar12]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_58[lVar12]" identifier [ identifier ])) + (cast_expression "(uint)ppVar4[lVar12 + 1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppVar4[lVar12 + 1]" identifier [ (binary_expression "lVar12 + 1" identifier + number_literal) ]))) ))) >> number_literal) )))) ;) (expression_statement "ppVar21[lVar12] = (png_byte)uVar18;" (assignment_expression "ppVar21[lVar12] = (png_byte)uVar18" (subscript_expression "ppVar21[lVar12]" identifier [ identifier ]) = (cast_expression "(png_byte)uVar18" ( (type_descriptor "png_byte" type_identifier) ) identifier)) ;) (expression_statement "uVar17 = uVar18 & 0xff;" (assignment_expression "uVar17 = uVar18 & 0xff" identifier = (binary_expression "uVar18 & 0xff" identifier & number_literal)) ;) (if_statement "if (0x7f < (uVar18 & 0xff)) {\n            uVar17 = 0x100 - (uVar18 & 0xff);\n          }" if (parenthesized_expression "(0x7f < (uVar18 & 0xff))" ( (binary_expression "0x7f < (uVar18 & 0xff)" number_literal < (parenthesized_expression "(uVar18 & 0xff)" ( (binary_expression "uVar18 & 0xff" identifier & number_literal) ))) )) (compound_statement "{\n            uVar17 = 0x100 - (uVar18 & 0xff);\n          }" { (expression_statement "uVar17 = 0x100 - (uVar18 & 0xff);" (assignment_expression "uVar17 = 0x100 - (uVar18 & 0xff)" identifier = (binary_expression "0x100 - (uVar18 & 0xff)" number_literal - (parenthesized_expression "(uVar18 & 0xff)" ( (binary_expression "uVar18 & 0xff" identifier & number_literal) )))) ;) })) (expression_statement "uVar8 = uVar8 + uVar17;" (assignment_expression "uVar8 = uVar8 + uVar17" identifier = (binary_expression "uVar8 + uVar17" identifier + identifier)) ;) }) while (parenthesized_expression "((uVar8 <= uVar24) &&\n                (iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1))" ( (binary_expression "(uVar8 <= uVar24) &&\n                (iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1)" (parenthesized_expression "(uVar8 <= uVar24)" ( (binary_expression "uVar8 <= uVar24" identifier <= identifier) )) && (parenthesized_expression "(iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1)" ( (comma_expression "iVar7 = (int)lVar12, lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1" (assignment_expression "iVar7 = (int)lVar12" identifier = (cast_expression "(int)lVar12" ( (type_descriptor "int" primitive_type) ) identifier)) , (comma_expression "lVar12 = lVar12 + 1, uVar16 + 1 + iVar7 < uVar1" (assignment_expression "lVar12 = lVar12 + 1" identifier = (binary_expression "lVar12 + 1" identifier + number_literal)) , (binary_expression "uVar16 + 1 + iVar7 < uVar1" (binary_expression "uVar16 + 1 + iVar7" (binary_expression "uVar16 + 1" identifier + number_literal) + identifier) < identifier))) ))) )) ;) })) (if_statement "if (uVar8 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar8;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }" if (parenthesized_expression "(uVar8 < uVar24)" ( (binary_expression "uVar8 < uVar24" identifier < identifier) )) (compound_statement "{\n        input = png_ptr->try_row;\n        uVar24 = uVar8;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }" { (expression_statement "input = png_ptr->try_row;" (assignment_expression "input = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (expression_statement "uVar24 = uVar8;" (assignment_expression "uVar24 = uVar8" identifier = identifier) ;) (if_statement "if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }" if (parenthesized_expression "(png_ptr->tst_row != (png_bytep)0x0)" ( (binary_expression "png_ptr->tst_row != (png_bytep)0x0" (field_expression "png_ptr->tst_row" identifier -> field_identifier) != (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) )) (compound_statement "{\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }" { (expression_statement "png_ptr->try_row = png_ptr->tst_row;" (assignment_expression "png_ptr->try_row = png_ptr->tst_row" (field_expression "png_ptr->try_row" identifier -> field_identifier) = (field_expression "png_ptr->tst_row" identifier -> field_identifier)) ;) (expression_statement "png_ptr->tst_row = input;" (assignment_expression "png_ptr->tst_row = input" (field_expression "png_ptr->tst_row" identifier -> field_identifier) = identifier) ;) })) })) })) }) (else_clause "else {\n    if ((bVar6 & 0x10) != 0) {\n      ppVar21 = png_ptr->try_row;\n      *ppVar21 = '\x01';\n      ppVar20 = input + 1;\n      ppVar23 = ppVar21 + 1;\n      uVar8 = (ulong)uVar16;\n      uVar11 = uVar8;\n      if (uVar16 != 0) {\n        uVar15 = 0;\n        uVar11 = 0;\n        do {\n          bVar5 = input[uVar15 + 1];\n          ppVar21[uVar15 + 1] = bVar5;\n          uVar9 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar9 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar9;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 != uVar8);\n        ppVar20 = ppVar20 + uVar8;\n        ppVar23 = ppVar23 + uVar8;\n      }\n      if (uVar8 < uVar1) {\n        lVar12 = 0;\n        do {\n          bVar5 = ppVar20[lVar12] - input[lVar12 + 1];\n          ppVar23[lVar12] = bVar5;\n          uVar15 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar15 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar15;\n        } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n      }\n      if (uVar11 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar11;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }\n    if (bVar6 != 0x20) {\n      if ((bVar6 & 0x20) != 0) {\n        ppVar23 = png_ptr->try_row;\n        *ppVar23 = '\x02';\n        ppVar21 = png_ptr->row_buf;\n        ppVar22 = png_ptr->prev_row;\n        uVar8 = uVar1;\n        if (uVar1 != 0) {\n          uVar11 = 0;\n          uVar8 = 0;\n          do {\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));\n        }\n        if (uVar8 < uVar24) {\n          input = png_ptr->try_row;\n          uVar24 = uVar8;\n          if (png_ptr->tst_row != (png_bytep)0x0) {\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    ppVar23 = png_ptr->try_row;\n    *ppVar23 = '\x02';\n    ppVar21 = png_ptr->row_buf;\n    ppVar22 = png_ptr->prev_row;\n    if (uVar1 != 0) {\n      uVar8 = 0;\n      do {\n        ppVar23[uVar8 + 1] = ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar1 != uVar8);\n    }\n    input = png_ptr->try_row;\n  }" else (compound_statement "{\n    if ((bVar6 & 0x10) != 0) {\n      ppVar21 = png_ptr->try_row;\n      *ppVar21 = '\x01';\n      ppVar20 = input + 1;\n      ppVar23 = ppVar21 + 1;\n      uVar8 = (ulong)uVar16;\n      uVar11 = uVar8;\n      if (uVar16 != 0) {\n        uVar15 = 0;\n        uVar11 = 0;\n        do {\n          bVar5 = input[uVar15 + 1];\n          ppVar21[uVar15 + 1] = bVar5;\n          uVar9 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar9 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar9;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 != uVar8);\n        ppVar20 = ppVar20 + uVar8;\n        ppVar23 = ppVar23 + uVar8;\n      }\n      if (uVar8 < uVar1) {\n        lVar12 = 0;\n        do {\n          bVar5 = ppVar20[lVar12] - input[lVar12 + 1];\n          ppVar23[lVar12] = bVar5;\n          uVar15 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar15 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar15;\n        } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n      }\n      if (uVar11 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar11;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }\n    if (bVar6 != 0x20) {\n      if ((bVar6 & 0x20) != 0) {\n        ppVar23 = png_ptr->try_row;\n        *ppVar23 = '\x02';\n        ppVar21 = png_ptr->row_buf;\n        ppVar22 = png_ptr->prev_row;\n        uVar8 = uVar1;\n        if (uVar1 != 0) {\n          uVar11 = 0;\n          uVar8 = 0;\n          do {\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));\n        }\n        if (uVar8 < uVar24) {\n          input = png_ptr->try_row;\n          uVar24 = uVar8;\n          if (png_ptr->tst_row != (png_bytep)0x0) {\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    ppVar23 = png_ptr->try_row;\n    *ppVar23 = '\x02';\n    ppVar21 = png_ptr->row_buf;\n    ppVar22 = png_ptr->prev_row;\n    if (uVar1 != 0) {\n      uVar8 = 0;\n      do {\n        ppVar23[uVar8 + 1] = ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar1 != uVar8);\n    }\n    input = png_ptr->try_row;\n  }" { (if_statement "if ((bVar6 & 0x10) != 0) {\n      ppVar21 = png_ptr->try_row;\n      *ppVar21 = '\x01';\n      ppVar20 = input + 1;\n      ppVar23 = ppVar21 + 1;\n      uVar8 = (ulong)uVar16;\n      uVar11 = uVar8;\n      if (uVar16 != 0) {\n        uVar15 = 0;\n        uVar11 = 0;\n        do {\n          bVar5 = input[uVar15 + 1];\n          ppVar21[uVar15 + 1] = bVar5;\n          uVar9 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar9 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar9;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 != uVar8);\n        ppVar20 = ppVar20 + uVar8;\n        ppVar23 = ppVar23 + uVar8;\n      }\n      if (uVar8 < uVar1) {\n        lVar12 = 0;\n        do {\n          bVar5 = ppVar20[lVar12] - input[lVar12 + 1];\n          ppVar23[lVar12] = bVar5;\n          uVar15 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar15 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar15;\n        } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n      }\n      if (uVar11 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar11;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }" if (parenthesized_expression "((bVar6 & 0x10) != 0)" ( (binary_expression "(bVar6 & 0x10) != 0" (parenthesized_expression "(bVar6 & 0x10)" ( (binary_expression "bVar6 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      ppVar21 = png_ptr->try_row;\n      *ppVar21 = '\x01';\n      ppVar20 = input + 1;\n      ppVar23 = ppVar21 + 1;\n      uVar8 = (ulong)uVar16;\n      uVar11 = uVar8;\n      if (uVar16 != 0) {\n        uVar15 = 0;\n        uVar11 = 0;\n        do {\n          bVar5 = input[uVar15 + 1];\n          ppVar21[uVar15 + 1] = bVar5;\n          uVar9 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar9 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar9;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 != uVar8);\n        ppVar20 = ppVar20 + uVar8;\n        ppVar23 = ppVar23 + uVar8;\n      }\n      if (uVar8 < uVar1) {\n        lVar12 = 0;\n        do {\n          bVar5 = ppVar20[lVar12] - input[lVar12 + 1];\n          ppVar23[lVar12] = bVar5;\n          uVar15 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar15 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar15;\n        } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n      }\n      if (uVar11 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar11;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }\n    }" { (expression_statement "ppVar21 = png_ptr->try_row;" (assignment_expression "ppVar21 = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (expression_statement "*ppVar21 = '\x01';" (assignment_expression "*ppVar21 = '\x01'" (pointer_expression "*ppVar21" * identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "ppVar20 = input + 1;" (assignment_expression "ppVar20 = input + 1" identifier = (binary_expression "input + 1" identifier + number_literal)) ;) (expression_statement "ppVar23 = ppVar21 + 1;" (assignment_expression "ppVar23 = ppVar21 + 1" identifier = (binary_expression "ppVar21 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (ulong)uVar16;" (assignment_expression "uVar8 = (ulong)uVar16" identifier = (cast_expression "(ulong)uVar16" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = uVar8;" (assignment_expression "uVar11 = uVar8" identifier = identifier) ;) (if_statement "if (uVar16 != 0) {\n        uVar15 = 0;\n        uVar11 = 0;\n        do {\n          bVar5 = input[uVar15 + 1];\n          ppVar21[uVar15 + 1] = bVar5;\n          uVar9 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar9 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar9;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 != uVar8);\n        ppVar20 = ppVar20 + uVar8;\n        ppVar23 = ppVar23 + uVar8;\n      }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar15 = 0;\n        uVar11 = 0;\n        do {\n          bVar5 = input[uVar15 + 1];\n          ppVar21[uVar15 + 1] = bVar5;\n          uVar9 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar9 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar9;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 != uVar8);\n        ppVar20 = ppVar20 + uVar8;\n        ppVar23 = ppVar23 + uVar8;\n      }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n          bVar5 = input[uVar15 + 1];\n          ppVar21[uVar15 + 1] = bVar5;\n          uVar9 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar9 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar9;\n          uVar15 = uVar15 + 1;\n        } while (uVar15 != uVar8);" do (compound_statement "{\n          bVar5 = input[uVar15 + 1];\n          ppVar21[uVar15 + 1] = bVar5;\n          uVar9 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar9 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar9;\n          uVar15 = uVar15 + 1;\n        }" { (expression_statement "bVar5 = input[uVar15 + 1];" (assignment_expression "bVar5 = input[uVar15 + 1]" identifier = (subscript_expression "input[uVar15 + 1]" identifier [ (binary_expression "uVar15 + 1" identifier + number_literal) ])) ;) (expression_statement "ppVar21[uVar15 + 1] = bVar5;" (assignment_expression "ppVar21[uVar15 + 1] = bVar5" (subscript_expression "ppVar21[uVar15 + 1]" identifier [ (binary_expression "uVar15 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "uVar9 = (ulong)bVar5;" (assignment_expression "uVar9 = (ulong)bVar5" identifier = (cast_expression "(ulong)bVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar5) {\n            uVar9 = (ulong)(0x100 - bVar5);\n          }" if (parenthesized_expression "(0x7f < bVar5)" ( (binary_expression "0x7f < bVar5" number_literal < identifier) )) (compound_statement "{\n            uVar9 = (ulong)(0x100 - bVar5);\n          }" { (expression_statement "uVar9 = (ulong)(0x100 - bVar5);" (assignment_expression "uVar9 = (ulong)(0x100 - bVar5)" identifier = (call_expression "(ulong)(0x100 - bVar5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar5)" ( (binary_expression "0x100 - bVar5" number_literal - identifier) )))) ;) })) (expression_statement "uVar11 = uVar11 + uVar9;" (assignment_expression "uVar11 = uVar11 + uVar9" identifier = (binary_expression "uVar11 + uVar9" identifier + identifier)) ;) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar15 != uVar8)" ( (binary_expression "uVar15 != uVar8" identifier != identifier) )) ;) (expression_statement "ppVar20 = ppVar20 + uVar8;" (assignment_expression "ppVar20 = ppVar20 + uVar8" identifier = (binary_expression "ppVar20 + uVar8" identifier + identifier)) ;) (expression_statement "ppVar23 = ppVar23 + uVar8;" (assignment_expression "ppVar23 = ppVar23 + uVar8" identifier = (binary_expression "ppVar23 + uVar8" identifier + identifier)) ;) })) (if_statement "if (uVar8 < uVar1) {\n        lVar12 = 0;\n        do {\n          bVar5 = ppVar20[lVar12] - input[lVar12 + 1];\n          ppVar23[lVar12] = bVar5;\n          uVar15 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar15 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar15;\n        } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n      }" if (parenthesized_expression "(uVar8 < uVar1)" ( (binary_expression "uVar8 < uVar1" identifier < identifier) )) (compound_statement "{\n        lVar12 = 0;\n        do {\n          bVar5 = ppVar20[lVar12] - input[lVar12 + 1];\n          ppVar23[lVar12] = bVar5;\n          uVar15 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar15 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar15;\n        } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n      }" { (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          bVar5 = ppVar20[lVar12] - input[lVar12 + 1];\n          ppVar23[lVar12] = bVar5;\n          uVar15 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar15 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar15;\n        } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));" do (compound_statement "{\n          bVar5 = ppVar20[lVar12] - input[lVar12 + 1];\n          ppVar23[lVar12] = bVar5;\n          uVar15 = (ulong)bVar5;\n          if (0x7f < bVar5) {\n            uVar15 = (ulong)(0x100 - bVar5);\n          }\n          uVar11 = uVar11 + uVar15;\n        }" { (expression_statement "bVar5 = ppVar20[lVar12] - input[lVar12 + 1];" (assignment_expression "bVar5 = ppVar20[lVar12] - input[lVar12 + 1]" identifier = (binary_expression "ppVar20[lVar12] - input[lVar12 + 1]" (subscript_expression "ppVar20[lVar12]" identifier [ identifier ]) - (subscript_expression "input[lVar12 + 1]" identifier [ (binary_expression "lVar12 + 1" identifier + number_literal) ]))) ;) (expression_statement "ppVar23[lVar12] = bVar5;" (assignment_expression "ppVar23[lVar12] = bVar5" (subscript_expression "ppVar23[lVar12]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar15 = (ulong)bVar5;" (assignment_expression "uVar15 = (ulong)bVar5" identifier = (cast_expression "(ulong)bVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar5) {\n            uVar15 = (ulong)(0x100 - bVar5);\n          }" if (parenthesized_expression "(0x7f < bVar5)" ( (binary_expression "0x7f < bVar5" number_literal < identifier) )) (compound_statement "{\n            uVar15 = (ulong)(0x100 - bVar5);\n          }" { (expression_statement "uVar15 = (ulong)(0x100 - bVar5);" (assignment_expression "uVar15 = (ulong)(0x100 - bVar5)" identifier = (call_expression "(ulong)(0x100 - bVar5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar5)" ( (binary_expression "0x100 - bVar5" number_literal - identifier) )))) ;) })) (expression_statement "uVar11 = uVar11 + uVar15;" (assignment_expression "uVar11 = uVar11 + uVar15" identifier = (binary_expression "uVar11 + uVar15" identifier + identifier)) ;) }) while (parenthesized_expression "((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8))" ( (binary_expression "(uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8)" (parenthesized_expression "(uVar11 <= uVar24)" ( (binary_expression "uVar11 <= uVar24" identifier <= identifier) )) && (parenthesized_expression "(lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8)" ( (comma_expression "lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8" (assignment_expression "lVar12 = lVar12 + 1" identifier = (binary_expression "lVar12 + 1" identifier + number_literal)) , (binary_expression "lVar12 != uVar1 - uVar8" identifier != (binary_expression "uVar1 - uVar8" identifier - identifier))) ))) )) ;) })) (if_statement "if (uVar11 < uVar24) {\n        input = png_ptr->try_row;\n        uVar24 = uVar11;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }" if (parenthesized_expression "(uVar11 < uVar24)" ( (binary_expression "uVar11 < uVar24" identifier < identifier) )) (compound_statement "{\n        input = png_ptr->try_row;\n        uVar24 = uVar11;\n        if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }\n      }" { (expression_statement "input = png_ptr->try_row;" (assignment_expression "input = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (expression_statement "uVar24 = uVar11;" (assignment_expression "uVar24 = uVar11" identifier = identifier) ;) (if_statement "if (png_ptr->tst_row != (png_bytep)0x0) {\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }" if (parenthesized_expression "(png_ptr->tst_row != (png_bytep)0x0)" ( (binary_expression "png_ptr->tst_row != (png_bytep)0x0" (field_expression "png_ptr->tst_row" identifier -> field_identifier) != (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) )) (compound_statement "{\n          png_ptr->try_row = png_ptr->tst_row;\n          png_ptr->tst_row = input;\n        }" { (expression_statement "png_ptr->try_row = png_ptr->tst_row;" (assignment_expression "png_ptr->try_row = png_ptr->tst_row" (field_expression "png_ptr->try_row" identifier -> field_identifier) = (field_expression "png_ptr->tst_row" identifier -> field_identifier)) ;) (expression_statement "png_ptr->tst_row = input;" (assignment_expression "png_ptr->tst_row = input" (field_expression "png_ptr->tst_row" identifier -> field_identifier) = identifier) ;) })) })) })) (if_statement "if (bVar6 != 0x20) {\n      if ((bVar6 & 0x20) != 0) {\n        ppVar23 = png_ptr->try_row;\n        *ppVar23 = '\x02';\n        ppVar21 = png_ptr->row_buf;\n        ppVar22 = png_ptr->prev_row;\n        uVar8 = uVar1;\n        if (uVar1 != 0) {\n          uVar11 = 0;\n          uVar8 = 0;\n          do {\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));\n        }\n        if (uVar8 < uVar24) {\n          input = png_ptr->try_row;\n          uVar24 = uVar8;\n          if (png_ptr->tst_row != (png_bytep)0x0) {\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }" if (parenthesized_expression "(bVar6 != 0x20)" ( (binary_expression "bVar6 != 0x20" identifier != number_literal) )) (compound_statement "{\n      if ((bVar6 & 0x20) != 0) {\n        ppVar23 = png_ptr->try_row;\n        *ppVar23 = '\x02';\n        ppVar21 = png_ptr->row_buf;\n        ppVar22 = png_ptr->prev_row;\n        uVar8 = uVar1;\n        if (uVar1 != 0) {\n          uVar11 = 0;\n          uVar8 = 0;\n          do {\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));\n        }\n        if (uVar8 < uVar24) {\n          input = png_ptr->try_row;\n          uVar24 = uVar8;\n          if (png_ptr->tst_row != (png_bytep)0x0) {\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }" { (if_statement "if ((bVar6 & 0x20) != 0) {\n        ppVar23 = png_ptr->try_row;\n        *ppVar23 = '\x02';\n        ppVar21 = png_ptr->row_buf;\n        ppVar22 = png_ptr->prev_row;\n        uVar8 = uVar1;\n        if (uVar1 != 0) {\n          uVar11 = 0;\n          uVar8 = 0;\n          do {\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));\n        }\n        if (uVar8 < uVar24) {\n          input = png_ptr->try_row;\n          uVar24 = uVar8;\n          if (png_ptr->tst_row != (png_bytep)0x0) {\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }\n        }\n      }" if (parenthesized_expression "((bVar6 & 0x20) != 0)" ( (binary_expression "(bVar6 & 0x20) != 0" (parenthesized_expression "(bVar6 & 0x20)" ( (binary_expression "bVar6 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        ppVar23 = png_ptr->try_row;\n        *ppVar23 = '\x02';\n        ppVar21 = png_ptr->row_buf;\n        ppVar22 = png_ptr->prev_row;\n        uVar8 = uVar1;\n        if (uVar1 != 0) {\n          uVar11 = 0;\n          uVar8 = 0;\n          do {\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));\n        }\n        if (uVar8 < uVar24) {\n          input = png_ptr->try_row;\n          uVar24 = uVar8;\n          if (png_ptr->tst_row != (png_bytep)0x0) {\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }\n        }\n      }" { (expression_statement "ppVar23 = png_ptr->try_row;" (assignment_expression "ppVar23 = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (expression_statement "*ppVar23 = '\x02';" (assignment_expression "*ppVar23 = '\x02'" (pointer_expression "*ppVar23" * identifier) = (char_literal "'\x02'" ' escape_sequence ')) ;) (expression_statement "ppVar21 = png_ptr->row_buf;" (assignment_expression "ppVar21 = png_ptr->row_buf" identifier = (field_expression "png_ptr->row_buf" identifier -> field_identifier)) ;) (expression_statement "ppVar22 = png_ptr->prev_row;" (assignment_expression "ppVar22 = png_ptr->prev_row" identifier = (field_expression "png_ptr->prev_row" identifier -> field_identifier)) ;) (expression_statement "uVar8 = uVar1;" (assignment_expression "uVar8 = uVar1" identifier = identifier) ;) (if_statement "if (uVar1 != 0) {\n          uVar11 = 0;\n          uVar8 = 0;\n          do {\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));\n        }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar11 = 0;\n          uVar8 = 0;\n          do {\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));\n        }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          } while ((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11));" do (compound_statement "{\n            bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];\n            ppVar23[uVar11 + 1] = bVar5;\n            uVar15 = (ulong)bVar5;\n            if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }\n            uVar8 = uVar8 + uVar15;\n          }" { (expression_statement "bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1];" (assignment_expression "bVar5 = ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1]" identifier = (binary_expression "ppVar21[uVar11 + 1] - ppVar22[uVar11 + 1]" (subscript_expression "ppVar21[uVar11 + 1]" identifier [ (binary_expression "uVar11 + 1" identifier + number_literal) ]) - (subscript_expression "ppVar22[uVar11 + 1]" identifier [ (binary_expression "uVar11 + 1" identifier + number_literal) ]))) ;) (expression_statement "ppVar23[uVar11 + 1] = bVar5;" (assignment_expression "ppVar23[uVar11 + 1] = bVar5" (subscript_expression "ppVar23[uVar11 + 1]" identifier [ (binary_expression "uVar11 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "uVar15 = (ulong)bVar5;" (assignment_expression "uVar15 = (ulong)bVar5" identifier = (cast_expression "(ulong)bVar5" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar5) {\n              uVar15 = (ulong)(0x100 - bVar5);\n            }" if (parenthesized_expression "(0x7f < bVar5)" ( (binary_expression "0x7f < bVar5" number_literal < identifier) )) (compound_statement "{\n              uVar15 = (ulong)(0x100 - bVar5);\n            }" { (expression_statement "uVar15 = (ulong)(0x100 - bVar5);" (assignment_expression "uVar15 = (ulong)(0x100 - bVar5)" identifier = (call_expression "(ulong)(0x100 - bVar5)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar5)" ( (binary_expression "0x100 - bVar5" number_literal - identifier) )))) ;) })) (expression_statement "uVar8 = uVar8 + uVar15;" (assignment_expression "uVar8 = uVar8 + uVar15" identifier = (binary_expression "uVar8 + uVar15" identifier + identifier)) ;) }) while (parenthesized_expression "((uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11))" ( (binary_expression "(uVar8 <= uVar24) && (uVar11 = uVar11 + 1, uVar1 != uVar11)" (parenthesized_expression "(uVar8 <= uVar24)" ( (binary_expression "uVar8 <= uVar24" identifier <= identifier) )) && (parenthesized_expression "(uVar11 = uVar11 + 1, uVar1 != uVar11)" ( (comma_expression "uVar11 = uVar11 + 1, uVar1 != uVar11" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) , (binary_expression "uVar1 != uVar11" identifier != identifier)) ))) )) ;) })) (if_statement "if (uVar8 < uVar24) {\n          input = png_ptr->try_row;\n          uVar24 = uVar8;\n          if (png_ptr->tst_row != (png_bytep)0x0) {\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }\n        }" if (parenthesized_expression "(uVar8 < uVar24)" ( (binary_expression "uVar8 < uVar24" identifier < identifier) )) (compound_statement "{\n          input = png_ptr->try_row;\n          uVar24 = uVar8;\n          if (png_ptr->tst_row != (png_bytep)0x0) {\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }\n        }" { (expression_statement "input = png_ptr->try_row;" (assignment_expression "input = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (expression_statement "uVar24 = uVar8;" (assignment_expression "uVar24 = uVar8" identifier = identifier) ;) (if_statement "if (png_ptr->tst_row != (png_bytep)0x0) {\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }" if (parenthesized_expression "(png_ptr->tst_row != (png_bytep)0x0)" ( (binary_expression "png_ptr->tst_row != (png_bytep)0x0" (field_expression "png_ptr->tst_row" identifier -> field_identifier) != (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) )) (compound_statement "{\n            png_ptr->try_row = png_ptr->tst_row;\n            png_ptr->tst_row = input;\n          }" { (expression_statement "png_ptr->try_row = png_ptr->tst_row;" (assignment_expression "png_ptr->try_row = png_ptr->tst_row" (field_expression "png_ptr->try_row" identifier -> field_identifier) = (field_expression "png_ptr->tst_row" identifier -> field_identifier)) ;) (expression_statement "png_ptr->tst_row = input;" (assignment_expression "png_ptr->tst_row = input" (field_expression "png_ptr->tst_row" identifier -> field_identifier) = identifier) ;) })) })) })) (goto_statement "goto LAB_00126e0b;" goto statement_identifier ;) })) (expression_statement "ppVar23 = png_ptr->try_row;" (assignment_expression "ppVar23 = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (expression_statement "*ppVar23 = '\x02';" (assignment_expression "*ppVar23 = '\x02'" (pointer_expression "*ppVar23" * identifier) = (char_literal "'\x02'" ' escape_sequence ')) ;) (expression_statement "ppVar21 = png_ptr->row_buf;" (assignment_expression "ppVar21 = png_ptr->row_buf" identifier = (field_expression "png_ptr->row_buf" identifier -> field_identifier)) ;) (expression_statement "ppVar22 = png_ptr->prev_row;" (assignment_expression "ppVar22 = png_ptr->prev_row" identifier = (field_expression "png_ptr->prev_row" identifier -> field_identifier)) ;) (if_statement "if (uVar1 != 0) {\n      uVar8 = 0;\n      do {\n        ppVar23[uVar8 + 1] = ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar1 != uVar8);\n    }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar8 = 0;\n      do {\n        ppVar23[uVar8 + 1] = ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar1 != uVar8);\n    }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n        ppVar23[uVar8 + 1] = ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar1 != uVar8);" do (compound_statement "{\n        ppVar23[uVar8 + 1] = ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      }" { (expression_statement "ppVar23[uVar8 + 1] = ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1];" (assignment_expression "ppVar23[uVar8 + 1] = ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1]" (subscript_expression "ppVar23[uVar8 + 1]" identifier [ (binary_expression "uVar8 + 1" identifier + number_literal) ]) = (binary_expression "ppVar21[uVar8 + 1] - ppVar22[uVar8 + 1]" (subscript_expression "ppVar21[uVar8 + 1]" identifier [ (binary_expression "uVar8 + 1" identifier + number_literal) ]) - (subscript_expression "ppVar22[uVar8 + 1]" identifier [ (binary_expression "uVar8 + 1" identifier + number_literal) ]))) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 != uVar8)" ( (binary_expression "uVar1 != uVar8" identifier != identifier) )) ;) })) (expression_statement "input = png_ptr->try_row;" (assignment_expression "input = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) }))) (if_statement "if (bVar6 == 0x80) {\n    ppVar4 = png_ptr->try_row;\n    *ppVar4 = '\x04';\n    ppVar2 = png_ptr->row_buf;\n    ppVar23 = ppVar2 + 1;\n    ppVar21 = ppVar4 + 1;\n    ppVar3 = png_ptr->prev_row;\n    ppVar22 = ppVar3 + 1;\n    uVar24 = (ulong)uVar16;\n    if (uVar16 != 0) {\n      uVar8 = 0;\n      do {\n        ppVar4[uVar8 + 1] = ppVar2[uVar8 + 1] - ppVar3[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar24 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      ppVar22 = ppVar22 + uVar8;\n      ppVar21 = ppVar21 + uVar8;\n      uVar24 = uVar8;\n    }\n    if (uVar24 < uVar1) {\n      lVar12 = 0;\n      do {\n        bVar6 = ppVar3[lVar12 + 1];\n        uVar16 = (uint)ppVar22[lVar12] - (uint)bVar6;\n        uVar17 = (uint)ppVar2[lVar12 + 1] - (uint)bVar6;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar18 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar18) - uVar18;\n        if (((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)) &&\n           (bVar5 = bVar6, iVar14 <= iVar7)) {\n          bVar5 = ppVar22[lVar12];\n        }\n        ppVar21[lVar12] = ppVar23[lVar12] - bVar5;\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar24 != lVar12);\n    }\n    input = png_ptr->try_row;\n  }\n  else if ((bVar6 & 0x80) != 0) {\n    ppVar21 = png_ptr->try_row;\n    *ppVar21 = '\x04';\n    ppVar22 = png_ptr->row_buf;\n    ppVar23 = ppVar22 + 1;\n    local_50 = ppVar21 + 1;\n    ppVar4 = png_ptr->prev_row;\n    local_58 = ppVar4 + 1;\n    uVar8 = (ulong)uVar16;\n    uVar11 = uVar8;\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      uVar11 = 0;\n      do {\n        bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1];\n        ppVar21[uVar15 + 1] = bVar6;\n        uVar9 = (ulong)bVar6;\n        if (0x7f < bVar6) {\n          uVar9 = (ulong)(0x100 - bVar6);\n        }\n        uVar11 = uVar11 + uVar9;\n        uVar15 = uVar15 + 1;\n      } while (uVar15 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      local_58 = local_58 + uVar8;\n      local_50 = local_50 + uVar8;\n    }\n    if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        uVar18 = (uint)ppVar4[lVar12 + 1];\n        uVar16 = local_58[lVar12] - uVar18;\n        uVar17 = ppVar22[lVar12 + 1] - uVar18;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar19 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19;\n        if (((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7)) {\n          uVar16 = (uint)local_58[lVar12];\n        }\n        uVar16 = ppVar23[lVar12] - uVar16;\n        local_50[lVar12] = (png_byte)uVar16;\n        uVar17 = uVar16 & 0xff;\n        if (0x7f < (uVar16 & 0xff)) {\n          uVar17 = 0x100 - (uVar16 & 0xff);\n        }\n        uVar11 = uVar11 + uVar17;\n      } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n    }\n    if (uVar11 < uVar24) {\n      input = png_ptr->try_row;\n      if (png_ptr->tst_row != (png_bytep)0x0) {\n        png_ptr->try_row = png_ptr->tst_row;\n        png_ptr->tst_row = input;\n      }\n    }\n  }" if (parenthesized_expression "(bVar6 == 0x80)" ( (binary_expression "bVar6 == 0x80" identifier == number_literal) )) (compound_statement "{\n    ppVar4 = png_ptr->try_row;\n    *ppVar4 = '\x04';\n    ppVar2 = png_ptr->row_buf;\n    ppVar23 = ppVar2 + 1;\n    ppVar21 = ppVar4 + 1;\n    ppVar3 = png_ptr->prev_row;\n    ppVar22 = ppVar3 + 1;\n    uVar24 = (ulong)uVar16;\n    if (uVar16 != 0) {\n      uVar8 = 0;\n      do {\n        ppVar4[uVar8 + 1] = ppVar2[uVar8 + 1] - ppVar3[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar24 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      ppVar22 = ppVar22 + uVar8;\n      ppVar21 = ppVar21 + uVar8;\n      uVar24 = uVar8;\n    }\n    if (uVar24 < uVar1) {\n      lVar12 = 0;\n      do {\n        bVar6 = ppVar3[lVar12 + 1];\n        uVar16 = (uint)ppVar22[lVar12] - (uint)bVar6;\n        uVar17 = (uint)ppVar2[lVar12 + 1] - (uint)bVar6;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar18 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar18) - uVar18;\n        if (((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)) &&\n           (bVar5 = bVar6, iVar14 <= iVar7)) {\n          bVar5 = ppVar22[lVar12];\n        }\n        ppVar21[lVar12] = ppVar23[lVar12] - bVar5;\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar24 != lVar12);\n    }\n    input = png_ptr->try_row;\n  }" { (expression_statement "ppVar4 = png_ptr->try_row;" (assignment_expression "ppVar4 = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (expression_statement "*ppVar4 = '\x04';" (assignment_expression "*ppVar4 = '\x04'" (pointer_expression "*ppVar4" * identifier) = (char_literal "'\x04'" ' escape_sequence ')) ;) (expression_statement "ppVar2 = png_ptr->row_buf;" (assignment_expression "ppVar2 = png_ptr->row_buf" identifier = (field_expression "png_ptr->row_buf" identifier -> field_identifier)) ;) (expression_statement "ppVar23 = ppVar2 + 1;" (assignment_expression "ppVar23 = ppVar2 + 1" identifier = (binary_expression "ppVar2 + 1" identifier + number_literal)) ;) (expression_statement "ppVar21 = ppVar4 + 1;" (assignment_expression "ppVar21 = ppVar4 + 1" identifier = (binary_expression "ppVar4 + 1" identifier + number_literal)) ;) (expression_statement "ppVar3 = png_ptr->prev_row;" (assignment_expression "ppVar3 = png_ptr->prev_row" identifier = (field_expression "png_ptr->prev_row" identifier -> field_identifier)) ;) (expression_statement "ppVar22 = ppVar3 + 1;" (assignment_expression "ppVar22 = ppVar3 + 1" identifier = (binary_expression "ppVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar24 = (ulong)uVar16;" (assignment_expression "uVar24 = (ulong)uVar16" identifier = (cast_expression "(ulong)uVar16" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar16 != 0) {\n      uVar8 = 0;\n      do {\n        ppVar4[uVar8 + 1] = ppVar2[uVar8 + 1] - ppVar3[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar24 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      ppVar22 = ppVar22 + uVar8;\n      ppVar21 = ppVar21 + uVar8;\n      uVar24 = uVar8;\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar8 = 0;\n      do {\n        ppVar4[uVar8 + 1] = ppVar2[uVar8 + 1] - ppVar3[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar24 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      ppVar22 = ppVar22 + uVar8;\n      ppVar21 = ppVar21 + uVar8;\n      uVar24 = uVar8;\n    }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n        ppVar4[uVar8 + 1] = ppVar2[uVar8 + 1] - ppVar3[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      } while (uVar24 != uVar8);" do (compound_statement "{\n        ppVar4[uVar8 + 1] = ppVar2[uVar8 + 1] - ppVar3[uVar8 + 1];\n        uVar8 = uVar8 + 1;\n      }" { (expression_statement "ppVar4[uVar8 + 1] = ppVar2[uVar8 + 1] - ppVar3[uVar8 + 1];" (assignment_expression "ppVar4[uVar8 + 1] = ppVar2[uVar8 + 1] - ppVar3[uVar8 + 1]" (subscript_expression "ppVar4[uVar8 + 1]" identifier [ (binary_expression "uVar8 + 1" identifier + number_literal) ]) = (binary_expression "ppVar2[uVar8 + 1] - ppVar3[uVar8 + 1]" (subscript_expression "ppVar2[uVar8 + 1]" identifier [ (binary_expression "uVar8 + 1" identifier + number_literal) ]) - (subscript_expression "ppVar3[uVar8 + 1]" identifier [ (binary_expression "uVar8 + 1" identifier + number_literal) ]))) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar24 != uVar8)" ( (binary_expression "uVar24 != uVar8" identifier != identifier) )) ;) (expression_statement "ppVar23 = ppVar23 + uVar8;" (assignment_expression "ppVar23 = ppVar23 + uVar8" identifier = (binary_expression "ppVar23 + uVar8" identifier + identifier)) ;) (expression_statement "ppVar22 = ppVar22 + uVar8;" (assignment_expression "ppVar22 = ppVar22 + uVar8" identifier = (binary_expression "ppVar22 + uVar8" identifier + identifier)) ;) (expression_statement "ppVar21 = ppVar21 + uVar8;" (assignment_expression "ppVar21 = ppVar21 + uVar8" identifier = (binary_expression "ppVar21 + uVar8" identifier + identifier)) ;) (expression_statement "uVar24 = uVar8;" (assignment_expression "uVar24 = uVar8" identifier = identifier) ;) })) (if_statement "if (uVar24 < uVar1) {\n      lVar12 = 0;\n      do {\n        bVar6 = ppVar3[lVar12 + 1];\n        uVar16 = (uint)ppVar22[lVar12] - (uint)bVar6;\n        uVar17 = (uint)ppVar2[lVar12 + 1] - (uint)bVar6;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar18 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar18) - uVar18;\n        if (((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)) &&\n           (bVar5 = bVar6, iVar14 <= iVar7)) {\n          bVar5 = ppVar22[lVar12];\n        }\n        ppVar21[lVar12] = ppVar23[lVar12] - bVar5;\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar24 != lVar12);\n    }" if (parenthesized_expression "(uVar24 < uVar1)" ( (binary_expression "uVar24 < uVar1" identifier < identifier) )) (compound_statement "{\n      lVar12 = 0;\n      do {\n        bVar6 = ppVar3[lVar12 + 1];\n        uVar16 = (uint)ppVar22[lVar12] - (uint)bVar6;\n        uVar17 = (uint)ppVar2[lVar12 + 1] - (uint)bVar6;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar18 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar18) - uVar18;\n        if (((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)) &&\n           (bVar5 = bVar6, iVar14 <= iVar7)) {\n          bVar5 = ppVar22[lVar12];\n        }\n        ppVar21[lVar12] = ppVar23[lVar12] - bVar5;\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar24 != lVar12);\n    }" { (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        bVar6 = ppVar3[lVar12 + 1];\n        uVar16 = (uint)ppVar22[lVar12] - (uint)bVar6;\n        uVar17 = (uint)ppVar2[lVar12 + 1] - (uint)bVar6;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar18 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar18) - uVar18;\n        if (((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)) &&\n           (bVar5 = bVar6, iVar14 <= iVar7)) {\n          bVar5 = ppVar22[lVar12];\n        }\n        ppVar21[lVar12] = ppVar23[lVar12] - bVar5;\n        lVar12 = lVar12 + 1;\n      } while (uVar1 - uVar24 != lVar12);" do (compound_statement "{\n        bVar6 = ppVar3[lVar12 + 1];\n        uVar16 = (uint)ppVar22[lVar12] - (uint)bVar6;\n        uVar17 = (uint)ppVar2[lVar12 + 1] - (uint)bVar6;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar18 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar18) - uVar18;\n        if (((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)) &&\n           (bVar5 = bVar6, iVar14 <= iVar7)) {\n          bVar5 = ppVar22[lVar12];\n        }\n        ppVar21[lVar12] = ppVar23[lVar12] - bVar5;\n        lVar12 = lVar12 + 1;\n      }" { (expression_statement "bVar6 = ppVar3[lVar12 + 1];" (assignment_expression "bVar6 = ppVar3[lVar12 + 1]" identifier = (subscript_expression "ppVar3[lVar12 + 1]" identifier [ (binary_expression "lVar12 + 1" identifier + number_literal) ])) ;) (expression_statement "uVar16 = (uint)ppVar22[lVar12] - (uint)bVar6;" (assignment_expression "uVar16 = (uint)ppVar22[lVar12] - (uint)bVar6" identifier = (binary_expression "(uint)ppVar22[lVar12] - (uint)bVar6" (cast_expression "(uint)ppVar22[lVar12]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppVar22[lVar12]" identifier [ identifier ])) - (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar17 = (uint)ppVar2[lVar12 + 1] - (uint)bVar6;" (assignment_expression "uVar17 = (uint)ppVar2[lVar12 + 1] - (uint)bVar6" identifier = (binary_expression "(uint)ppVar2[lVar12 + 1] - (uint)bVar6" (cast_expression "(uint)ppVar2[lVar12 + 1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppVar2[lVar12 + 1]" identifier [ (binary_expression "lVar12 + 1" identifier + number_literal) ])) - (cast_expression "(uint)bVar6" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);" (assignment_expression "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" identifier = (binary_expression "((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" (parenthesized_expression "((int)uVar16 >> 0x1f ^ uVar16)" ( (binary_expression "(int)uVar16 >> 0x1f ^ uVar16" (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ^ identifier) )) - (parenthesized_expression "((int)uVar16 >> 0x1f)" ( (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);" (assignment_expression "iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f)" identifier = (binary_expression "((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f)" (parenthesized_expression "((int)uVar17 >> 0x1f ^ uVar17)" ( (binary_expression "(int)uVar17 >> 0x1f ^ uVar17" (binary_expression "(int)uVar17 >> 0x1f" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ^ identifier) )) - (parenthesized_expression "((int)uVar17 >> 0x1f)" ( (binary_expression "(int)uVar17 >> 0x1f" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar18 = (int)(uVar16 + uVar17) >> 0x1f;" (assignment_expression "uVar18 = (int)(uVar16 + uVar17) >> 0x1f" identifier = (binary_expression "(int)(uVar16 + uVar17) >> 0x1f" (cast_expression "(int)(uVar16 + uVar17)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar16 + uVar17)" ( (binary_expression "uVar16 + uVar17" identifier + identifier) ))) >> number_literal)) ;) (expression_statement "iVar7 = (uVar16 + uVar17 ^ uVar18) - uVar18;" (assignment_expression "iVar7 = (uVar16 + uVar17 ^ uVar18) - uVar18" identifier = (binary_expression "(uVar16 + uVar17 ^ uVar18) - uVar18" (parenthesized_expression "(uVar16 + uVar17 ^ uVar18)" ( (binary_expression "uVar16 + uVar17 ^ uVar18" (binary_expression "uVar16 + uVar17" identifier + identifier) ^ identifier) )) - identifier)) ;) (if_statement "if (((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)) &&\n           (bVar5 = bVar6, iVar14 <= iVar7)) {\n          bVar5 = ppVar22[lVar12];\n        }" if (parenthesized_expression "(((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)) &&\n           (bVar5 = bVar6, iVar14 <= iVar7))" ( (binary_expression "((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)) &&\n           (bVar5 = bVar6, iVar14 <= iVar7)" (parenthesized_expression "((iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13))" ( (binary_expression "(iVar14 < iVar13) || (bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)" (parenthesized_expression "(iVar14 < iVar13)" ( (binary_expression "iVar14 < iVar13" identifier < identifier) )) || (parenthesized_expression "(bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13)" ( (comma_expression "bVar5 = ppVar2[lVar12 + 1], iVar7 < iVar13" (assignment_expression "bVar5 = ppVar2[lVar12 + 1]" identifier = (subscript_expression "ppVar2[lVar12 + 1]" identifier [ (binary_expression "lVar12 + 1" identifier + number_literal) ])) , (binary_expression "iVar7 < iVar13" identifier < identifier)) ))) )) && (parenthesized_expression "(bVar5 = bVar6, iVar14 <= iVar7)" ( (comma_expression "bVar5 = bVar6, iVar14 <= iVar7" (assignment_expression "bVar5 = bVar6" identifier = identifier) , (binary_expression "iVar14 <= iVar7" identifier <= identifier)) ))) )) (compound_statement "{\n          bVar5 = ppVar22[lVar12];\n        }" { (expression_statement "bVar5 = ppVar22[lVar12];" (assignment_expression "bVar5 = ppVar22[lVar12]" identifier = (subscript_expression "ppVar22[lVar12]" identifier [ identifier ])) ;) })) (expression_statement "ppVar21[lVar12] = ppVar23[lVar12] - bVar5;" (assignment_expression "ppVar21[lVar12] = ppVar23[lVar12] - bVar5" (subscript_expression "ppVar21[lVar12]" identifier [ identifier ]) = (binary_expression "ppVar23[lVar12] - bVar5" (subscript_expression "ppVar23[lVar12]" identifier [ identifier ]) - identifier)) ;) (expression_statement "lVar12 = lVar12 + 1;" (assignment_expression "lVar12 = lVar12 + 1" identifier = (binary_expression "lVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 - uVar24 != lVar12)" ( (binary_expression "uVar1 - uVar24 != lVar12" (binary_expression "uVar1 - uVar24" identifier - identifier) != identifier) )) ;) })) (expression_statement "input = png_ptr->try_row;" (assignment_expression "input = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) }) (else_clause "else if ((bVar6 & 0x80) != 0) {\n    ppVar21 = png_ptr->try_row;\n    *ppVar21 = '\x04';\n    ppVar22 = png_ptr->row_buf;\n    ppVar23 = ppVar22 + 1;\n    local_50 = ppVar21 + 1;\n    ppVar4 = png_ptr->prev_row;\n    local_58 = ppVar4 + 1;\n    uVar8 = (ulong)uVar16;\n    uVar11 = uVar8;\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      uVar11 = 0;\n      do {\n        bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1];\n        ppVar21[uVar15 + 1] = bVar6;\n        uVar9 = (ulong)bVar6;\n        if (0x7f < bVar6) {\n          uVar9 = (ulong)(0x100 - bVar6);\n        }\n        uVar11 = uVar11 + uVar9;\n        uVar15 = uVar15 + 1;\n      } while (uVar15 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      local_58 = local_58 + uVar8;\n      local_50 = local_50 + uVar8;\n    }\n    if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        uVar18 = (uint)ppVar4[lVar12 + 1];\n        uVar16 = local_58[lVar12] - uVar18;\n        uVar17 = ppVar22[lVar12 + 1] - uVar18;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar19 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19;\n        if (((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7)) {\n          uVar16 = (uint)local_58[lVar12];\n        }\n        uVar16 = ppVar23[lVar12] - uVar16;\n        local_50[lVar12] = (png_byte)uVar16;\n        uVar17 = uVar16 & 0xff;\n        if (0x7f < (uVar16 & 0xff)) {\n          uVar17 = 0x100 - (uVar16 & 0xff);\n        }\n        uVar11 = uVar11 + uVar17;\n      } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n    }\n    if (uVar11 < uVar24) {\n      input = png_ptr->try_row;\n      if (png_ptr->tst_row != (png_bytep)0x0) {\n        png_ptr->try_row = png_ptr->tst_row;\n        png_ptr->tst_row = input;\n      }\n    }\n  }" else (if_statement "if ((bVar6 & 0x80) != 0) {\n    ppVar21 = png_ptr->try_row;\n    *ppVar21 = '\x04';\n    ppVar22 = png_ptr->row_buf;\n    ppVar23 = ppVar22 + 1;\n    local_50 = ppVar21 + 1;\n    ppVar4 = png_ptr->prev_row;\n    local_58 = ppVar4 + 1;\n    uVar8 = (ulong)uVar16;\n    uVar11 = uVar8;\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      uVar11 = 0;\n      do {\n        bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1];\n        ppVar21[uVar15 + 1] = bVar6;\n        uVar9 = (ulong)bVar6;\n        if (0x7f < bVar6) {\n          uVar9 = (ulong)(0x100 - bVar6);\n        }\n        uVar11 = uVar11 + uVar9;\n        uVar15 = uVar15 + 1;\n      } while (uVar15 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      local_58 = local_58 + uVar8;\n      local_50 = local_50 + uVar8;\n    }\n    if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        uVar18 = (uint)ppVar4[lVar12 + 1];\n        uVar16 = local_58[lVar12] - uVar18;\n        uVar17 = ppVar22[lVar12 + 1] - uVar18;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar19 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19;\n        if (((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7)) {\n          uVar16 = (uint)local_58[lVar12];\n        }\n        uVar16 = ppVar23[lVar12] - uVar16;\n        local_50[lVar12] = (png_byte)uVar16;\n        uVar17 = uVar16 & 0xff;\n        if (0x7f < (uVar16 & 0xff)) {\n          uVar17 = 0x100 - (uVar16 & 0xff);\n        }\n        uVar11 = uVar11 + uVar17;\n      } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n    }\n    if (uVar11 < uVar24) {\n      input = png_ptr->try_row;\n      if (png_ptr->tst_row != (png_bytep)0x0) {\n        png_ptr->try_row = png_ptr->tst_row;\n        png_ptr->tst_row = input;\n      }\n    }\n  }" if (parenthesized_expression "((bVar6 & 0x80) != 0)" ( (binary_expression "(bVar6 & 0x80) != 0" (parenthesized_expression "(bVar6 & 0x80)" ( (binary_expression "bVar6 & 0x80" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    ppVar21 = png_ptr->try_row;\n    *ppVar21 = '\x04';\n    ppVar22 = png_ptr->row_buf;\n    ppVar23 = ppVar22 + 1;\n    local_50 = ppVar21 + 1;\n    ppVar4 = png_ptr->prev_row;\n    local_58 = ppVar4 + 1;\n    uVar8 = (ulong)uVar16;\n    uVar11 = uVar8;\n    if (uVar16 != 0) {\n      uVar15 = 0;\n      uVar11 = 0;\n      do {\n        bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1];\n        ppVar21[uVar15 + 1] = bVar6;\n        uVar9 = (ulong)bVar6;\n        if (0x7f < bVar6) {\n          uVar9 = (ulong)(0x100 - bVar6);\n        }\n        uVar11 = uVar11 + uVar9;\n        uVar15 = uVar15 + 1;\n      } while (uVar15 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      local_58 = local_58 + uVar8;\n      local_50 = local_50 + uVar8;\n    }\n    if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        uVar18 = (uint)ppVar4[lVar12 + 1];\n        uVar16 = local_58[lVar12] - uVar18;\n        uVar17 = ppVar22[lVar12 + 1] - uVar18;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar19 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19;\n        if (((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7)) {\n          uVar16 = (uint)local_58[lVar12];\n        }\n        uVar16 = ppVar23[lVar12] - uVar16;\n        local_50[lVar12] = (png_byte)uVar16;\n        uVar17 = uVar16 & 0xff;\n        if (0x7f < (uVar16 & 0xff)) {\n          uVar17 = 0x100 - (uVar16 & 0xff);\n        }\n        uVar11 = uVar11 + uVar17;\n      } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n    }\n    if (uVar11 < uVar24) {\n      input = png_ptr->try_row;\n      if (png_ptr->tst_row != (png_bytep)0x0) {\n        png_ptr->try_row = png_ptr->tst_row;\n        png_ptr->tst_row = input;\n      }\n    }\n  }" { (expression_statement "ppVar21 = png_ptr->try_row;" (assignment_expression "ppVar21 = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (expression_statement "*ppVar21 = '\x04';" (assignment_expression "*ppVar21 = '\x04'" (pointer_expression "*ppVar21" * identifier) = (char_literal "'\x04'" ' escape_sequence ')) ;) (expression_statement "ppVar22 = png_ptr->row_buf;" (assignment_expression "ppVar22 = png_ptr->row_buf" identifier = (field_expression "png_ptr->row_buf" identifier -> field_identifier)) ;) (expression_statement "ppVar23 = ppVar22 + 1;" (assignment_expression "ppVar23 = ppVar22 + 1" identifier = (binary_expression "ppVar22 + 1" identifier + number_literal)) ;) (expression_statement "local_50 = ppVar21 + 1;" (assignment_expression "local_50 = ppVar21 + 1" identifier = (binary_expression "ppVar21 + 1" identifier + number_literal)) ;) (expression_statement "ppVar4 = png_ptr->prev_row;" (assignment_expression "ppVar4 = png_ptr->prev_row" identifier = (field_expression "png_ptr->prev_row" identifier -> field_identifier)) ;) (expression_statement "local_58 = ppVar4 + 1;" (assignment_expression "local_58 = ppVar4 + 1" identifier = (binary_expression "ppVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (ulong)uVar16;" (assignment_expression "uVar8 = (ulong)uVar16" identifier = (cast_expression "(ulong)uVar16" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = uVar8;" (assignment_expression "uVar11 = uVar8" identifier = identifier) ;) (if_statement "if (uVar16 != 0) {\n      uVar15 = 0;\n      uVar11 = 0;\n      do {\n        bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1];\n        ppVar21[uVar15 + 1] = bVar6;\n        uVar9 = (ulong)bVar6;\n        if (0x7f < bVar6) {\n          uVar9 = (ulong)(0x100 - bVar6);\n        }\n        uVar11 = uVar11 + uVar9;\n        uVar15 = uVar15 + 1;\n      } while (uVar15 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      local_58 = local_58 + uVar8;\n      local_50 = local_50 + uVar8;\n    }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar15 = 0;\n      uVar11 = 0;\n      do {\n        bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1];\n        ppVar21[uVar15 + 1] = bVar6;\n        uVar9 = (ulong)bVar6;\n        if (0x7f < bVar6) {\n          uVar9 = (ulong)(0x100 - bVar6);\n        }\n        uVar11 = uVar11 + uVar9;\n        uVar15 = uVar15 + 1;\n      } while (uVar15 != uVar8);\n      ppVar23 = ppVar23 + uVar8;\n      local_58 = local_58 + uVar8;\n      local_50 = local_50 + uVar8;\n    }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1];\n        ppVar21[uVar15 + 1] = bVar6;\n        uVar9 = (ulong)bVar6;\n        if (0x7f < bVar6) {\n          uVar9 = (ulong)(0x100 - bVar6);\n        }\n        uVar11 = uVar11 + uVar9;\n        uVar15 = uVar15 + 1;\n      } while (uVar15 != uVar8);" do (compound_statement "{\n        bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1];\n        ppVar21[uVar15 + 1] = bVar6;\n        uVar9 = (ulong)bVar6;\n        if (0x7f < bVar6) {\n          uVar9 = (ulong)(0x100 - bVar6);\n        }\n        uVar11 = uVar11 + uVar9;\n        uVar15 = uVar15 + 1;\n      }" { (expression_statement "bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1];" (assignment_expression "bVar6 = ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1]" identifier = (binary_expression "ppVar22[uVar15 + 1] - ppVar4[uVar15 + 1]" (subscript_expression "ppVar22[uVar15 + 1]" identifier [ (binary_expression "uVar15 + 1" identifier + number_literal) ]) - (subscript_expression "ppVar4[uVar15 + 1]" identifier [ (binary_expression "uVar15 + 1" identifier + number_literal) ]))) ;) (expression_statement "ppVar21[uVar15 + 1] = bVar6;" (assignment_expression "ppVar21[uVar15 + 1] = bVar6" (subscript_expression "ppVar21[uVar15 + 1]" identifier [ (binary_expression "uVar15 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "uVar9 = (ulong)bVar6;" (assignment_expression "uVar9 = (ulong)bVar6" identifier = (cast_expression "(ulong)bVar6" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar6) {\n          uVar9 = (ulong)(0x100 - bVar6);\n        }" if (parenthesized_expression "(0x7f < bVar6)" ( (binary_expression "0x7f < bVar6" number_literal < identifier) )) (compound_statement "{\n          uVar9 = (ulong)(0x100 - bVar6);\n        }" { (expression_statement "uVar9 = (ulong)(0x100 - bVar6);" (assignment_expression "uVar9 = (ulong)(0x100 - bVar6)" identifier = (call_expression "(ulong)(0x100 - bVar6)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar6)" ( (binary_expression "0x100 - bVar6" number_literal - identifier) )))) ;) })) (expression_statement "uVar11 = uVar11 + uVar9;" (assignment_expression "uVar11 = uVar11 + uVar9" identifier = (binary_expression "uVar11 + uVar9" identifier + identifier)) ;) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar15 != uVar8)" ( (binary_expression "uVar15 != uVar8" identifier != identifier) )) ;) (expression_statement "ppVar23 = ppVar23 + uVar8;" (assignment_expression "ppVar23 = ppVar23 + uVar8" identifier = (binary_expression "ppVar23 + uVar8" identifier + identifier)) ;) (expression_statement "local_58 = local_58 + uVar8;" (assignment_expression "local_58 = local_58 + uVar8" identifier = (binary_expression "local_58 + uVar8" identifier + identifier)) ;) (expression_statement "local_50 = local_50 + uVar8;" (assignment_expression "local_50 = local_50 + uVar8" identifier = (binary_expression "local_50 + uVar8" identifier + identifier)) ;) })) (if_statement "if (uVar8 < uVar1) {\n      lVar12 = 0;\n      do {\n        uVar18 = (uint)ppVar4[lVar12 + 1];\n        uVar16 = local_58[lVar12] - uVar18;\n        uVar17 = ppVar22[lVar12 + 1] - uVar18;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar19 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19;\n        if (((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7)) {\n          uVar16 = (uint)local_58[lVar12];\n        }\n        uVar16 = ppVar23[lVar12] - uVar16;\n        local_50[lVar12] = (png_byte)uVar16;\n        uVar17 = uVar16 & 0xff;\n        if (0x7f < (uVar16 & 0xff)) {\n          uVar17 = 0x100 - (uVar16 & 0xff);\n        }\n        uVar11 = uVar11 + uVar17;\n      } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n    }" if (parenthesized_expression "(uVar8 < uVar1)" ( (binary_expression "uVar8 < uVar1" identifier < identifier) )) (compound_statement "{\n      lVar12 = 0;\n      do {\n        uVar18 = (uint)ppVar4[lVar12 + 1];\n        uVar16 = local_58[lVar12] - uVar18;\n        uVar17 = ppVar22[lVar12 + 1] - uVar18;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar19 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19;\n        if (((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7)) {\n          uVar16 = (uint)local_58[lVar12];\n        }\n        uVar16 = ppVar23[lVar12] - uVar16;\n        local_50[lVar12] = (png_byte)uVar16;\n        uVar17 = uVar16 & 0xff;\n        if (0x7f < (uVar16 & 0xff)) {\n          uVar17 = 0x100 - (uVar16 & 0xff);\n        }\n        uVar11 = uVar11 + uVar17;\n      } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));\n    }" { (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar18 = (uint)ppVar4[lVar12 + 1];\n        uVar16 = local_58[lVar12] - uVar18;\n        uVar17 = ppVar22[lVar12 + 1] - uVar18;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar19 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19;\n        if (((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7)) {\n          uVar16 = (uint)local_58[lVar12];\n        }\n        uVar16 = ppVar23[lVar12] - uVar16;\n        local_50[lVar12] = (png_byte)uVar16;\n        uVar17 = uVar16 & 0xff;\n        if (0x7f < (uVar16 & 0xff)) {\n          uVar17 = 0x100 - (uVar16 & 0xff);\n        }\n        uVar11 = uVar11 + uVar17;\n      } while ((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8));" do (compound_statement "{\n        uVar18 = (uint)ppVar4[lVar12 + 1];\n        uVar16 = local_58[lVar12] - uVar18;\n        uVar17 = ppVar22[lVar12 + 1] - uVar18;\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);\n        uVar19 = (int)(uVar16 + uVar17) >> 0x1f;\n        iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19;\n        if (((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7)) {\n          uVar16 = (uint)local_58[lVar12];\n        }\n        uVar16 = ppVar23[lVar12] - uVar16;\n        local_50[lVar12] = (png_byte)uVar16;\n        uVar17 = uVar16 & 0xff;\n        if (0x7f < (uVar16 & 0xff)) {\n          uVar17 = 0x100 - (uVar16 & 0xff);\n        }\n        uVar11 = uVar11 + uVar17;\n      }" { (expression_statement "uVar18 = (uint)ppVar4[lVar12 + 1];" (assignment_expression "uVar18 = (uint)ppVar4[lVar12 + 1]" identifier = (cast_expression "(uint)ppVar4[lVar12 + 1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppVar4[lVar12 + 1]" identifier [ (binary_expression "lVar12 + 1" identifier + number_literal) ]))) ;) (expression_statement "uVar16 = local_58[lVar12] - uVar18;" (assignment_expression "uVar16 = local_58[lVar12] - uVar18" identifier = (binary_expression "local_58[lVar12] - uVar18" (subscript_expression "local_58[lVar12]" identifier [ identifier ]) - identifier)) ;) (expression_statement "uVar17 = ppVar22[lVar12 + 1] - uVar18;" (assignment_expression "uVar17 = ppVar22[lVar12 + 1] - uVar18" identifier = (binary_expression "ppVar22[lVar12 + 1] - uVar18" (subscript_expression "ppVar22[lVar12 + 1]" identifier [ (binary_expression "lVar12 + 1" identifier + number_literal) ]) - identifier)) ;) (expression_statement "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);" (assignment_expression "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" identifier = (binary_expression "((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" (parenthesized_expression "((int)uVar16 >> 0x1f ^ uVar16)" ( (binary_expression "(int)uVar16 >> 0x1f ^ uVar16" (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ^ identifier) )) - (parenthesized_expression "((int)uVar16 >> 0x1f)" ( (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f);" (assignment_expression "iVar14 = ((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f)" identifier = (binary_expression "((int)uVar17 >> 0x1f ^ uVar17) - ((int)uVar17 >> 0x1f)" (parenthesized_expression "((int)uVar17 >> 0x1f ^ uVar17)" ( (binary_expression "(int)uVar17 >> 0x1f ^ uVar17" (binary_expression "(int)uVar17 >> 0x1f" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ^ identifier) )) - (parenthesized_expression "((int)uVar17 >> 0x1f)" ( (binary_expression "(int)uVar17 >> 0x1f" (cast_expression "(int)uVar17" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar19 = (int)(uVar16 + uVar17) >> 0x1f;" (assignment_expression "uVar19 = (int)(uVar16 + uVar17) >> 0x1f" identifier = (binary_expression "(int)(uVar16 + uVar17) >> 0x1f" (cast_expression "(int)(uVar16 + uVar17)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar16 + uVar17)" ( (binary_expression "uVar16 + uVar17" identifier + identifier) ))) >> number_literal)) ;) (expression_statement "iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19;" (assignment_expression "iVar7 = (uVar16 + uVar17 ^ uVar19) - uVar19" identifier = (binary_expression "(uVar16 + uVar17 ^ uVar19) - uVar19" (parenthesized_expression "(uVar16 + uVar17 ^ uVar19)" ( (binary_expression "uVar16 + uVar17 ^ uVar19" (binary_expression "uVar16 + uVar17" identifier + identifier) ^ identifier) )) - identifier)) ;) (if_statement "if (((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7)) {\n          uVar16 = (uint)local_58[lVar12];\n        }" if (parenthesized_expression "(((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7))" ( (binary_expression "((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)) &&\n           (uVar16 = uVar18, iVar14 <= iVar7)" (parenthesized_expression "((iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13))" ( (binary_expression "(iVar14 < iVar13) || (uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)" (parenthesized_expression "(iVar14 < iVar13)" ( (binary_expression "iVar14 < iVar13" identifier < identifier) )) || (parenthesized_expression "(uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13)" ( (comma_expression "uVar16 = (uint)ppVar22[lVar12 + 1], iVar7 < iVar13" (assignment_expression "uVar16 = (uint)ppVar22[lVar12 + 1]" identifier = (cast_expression "(uint)ppVar22[lVar12 + 1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppVar22[lVar12 + 1]" identifier [ (binary_expression "lVar12 + 1" identifier + number_literal) ]))) , (binary_expression "iVar7 < iVar13" identifier < identifier)) ))) )) && (parenthesized_expression "(uVar16 = uVar18, iVar14 <= iVar7)" ( (comma_expression "uVar16 = uVar18, iVar14 <= iVar7" (assignment_expression "uVar16 = uVar18" identifier = identifier) , (binary_expression "iVar14 <= iVar7" identifier <= identifier)) ))) )) (compound_statement "{\n          uVar16 = (uint)local_58[lVar12];\n        }" { (expression_statement "uVar16 = (uint)local_58[lVar12];" (assignment_expression "uVar16 = (uint)local_58[lVar12]" identifier = (cast_expression "(uint)local_58[lVar12]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "local_58[lVar12]" identifier [ identifier ]))) ;) })) (expression_statement "uVar16 = ppVar23[lVar12] - uVar16;" (assignment_expression "uVar16 = ppVar23[lVar12] - uVar16" identifier = (binary_expression "ppVar23[lVar12] - uVar16" (subscript_expression "ppVar23[lVar12]" identifier [ identifier ]) - identifier)) ;) (expression_statement "local_50[lVar12] = (png_byte)uVar16;" (assignment_expression "local_50[lVar12] = (png_byte)uVar16" (subscript_expression "local_50[lVar12]" identifier [ identifier ]) = (cast_expression "(png_byte)uVar16" ( (type_descriptor "png_byte" type_identifier) ) identifier)) ;) (expression_statement "uVar17 = uVar16 & 0xff;" (assignment_expression "uVar17 = uVar16 & 0xff" identifier = (binary_expression "uVar16 & 0xff" identifier & number_literal)) ;) (if_statement "if (0x7f < (uVar16 & 0xff)) {\n          uVar17 = 0x100 - (uVar16 & 0xff);\n        }" if (parenthesized_expression "(0x7f < (uVar16 & 0xff))" ( (binary_expression "0x7f < (uVar16 & 0xff)" number_literal < (parenthesized_expression "(uVar16 & 0xff)" ( (binary_expression "uVar16 & 0xff" identifier & number_literal) ))) )) (compound_statement "{\n          uVar17 = 0x100 - (uVar16 & 0xff);\n        }" { (expression_statement "uVar17 = 0x100 - (uVar16 & 0xff);" (assignment_expression "uVar17 = 0x100 - (uVar16 & 0xff)" identifier = (binary_expression "0x100 - (uVar16 & 0xff)" number_literal - (parenthesized_expression "(uVar16 & 0xff)" ( (binary_expression "uVar16 & 0xff" identifier & number_literal) )))) ;) })) (expression_statement "uVar11 = uVar11 + uVar17;" (assignment_expression "uVar11 = uVar11 + uVar17" identifier = (binary_expression "uVar11 + uVar17" identifier + identifier)) ;) }) while (parenthesized_expression "((uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8))" ( (binary_expression "(uVar11 <= uVar24) && (lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8)" (parenthesized_expression "(uVar11 <= uVar24)" ( (binary_expression "uVar11 <= uVar24" identifier <= identifier) )) && (parenthesized_expression "(lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8)" ( (comma_expression "lVar12 = lVar12 + 1, lVar12 != uVar1 - uVar8" (assignment_expression "lVar12 = lVar12 + 1" identifier = (binary_expression "lVar12 + 1" identifier + number_literal)) , (binary_expression "lVar12 != uVar1 - uVar8" identifier != (binary_expression "uVar1 - uVar8" identifier - identifier))) ))) )) ;) })) (if_statement "if (uVar11 < uVar24) {\n      input = png_ptr->try_row;\n      if (png_ptr->tst_row != (png_bytep)0x0) {\n        png_ptr->try_row = png_ptr->tst_row;\n        png_ptr->tst_row = input;\n      }\n    }" if (parenthesized_expression "(uVar11 < uVar24)" ( (binary_expression "uVar11 < uVar24" identifier < identifier) )) (compound_statement "{\n      input = png_ptr->try_row;\n      if (png_ptr->tst_row != (png_bytep)0x0) {\n        png_ptr->try_row = png_ptr->tst_row;\n        png_ptr->tst_row = input;\n      }\n    }" { (expression_statement "input = png_ptr->try_row;" (assignment_expression "input = png_ptr->try_row" identifier = (field_expression "png_ptr->try_row" identifier -> field_identifier)) ;) (if_statement "if (png_ptr->tst_row != (png_bytep)0x0) {\n        png_ptr->try_row = png_ptr->tst_row;\n        png_ptr->tst_row = input;\n      }" if (parenthesized_expression "(png_ptr->tst_row != (png_bytep)0x0)" ( (binary_expression "png_ptr->tst_row != (png_bytep)0x0" (field_expression "png_ptr->tst_row" identifier -> field_identifier) != (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) )) (compound_statement "{\n        png_ptr->try_row = png_ptr->tst_row;\n        png_ptr->tst_row = input;\n      }" { (expression_statement "png_ptr->try_row = png_ptr->tst_row;" (assignment_expression "png_ptr->try_row = png_ptr->tst_row" (field_expression "png_ptr->try_row" identifier -> field_identifier) = (field_expression "png_ptr->tst_row" identifier -> field_identifier)) ;) (expression_statement "png_ptr->tst_row = input;" (assignment_expression "png_ptr->tst_row = input" (field_expression "png_ptr->tst_row" identifier -> field_identifier) = identifier) ;) })) })) })))) (labeled_statement "LAB_00126e34:\n  png_compress_IDAT(png_ptr,input,row_info->rowbytes + 1,0);" statement_identifier : (expression_statement "png_compress_IDAT(png_ptr,input,row_info->rowbytes + 1,0);" (call_expression "png_compress_IDAT(png_ptr,input,row_info->rowbytes + 1,0)" identifier (argument_list "(png_ptr,input,row_info->rowbytes + 1,0)" ( identifier , identifier , (binary_expression "row_info->rowbytes + 1" (field_expression "row_info->rowbytes" identifier -> field_identifier) + number_literal) , number_literal ))) ;)) (expression_statement "ppVar23 = png_ptr->prev_row;" (assignment_expression "ppVar23 = png_ptr->prev_row" identifier = (field_expression "png_ptr->prev_row" identifier -> field_identifier)) ;) (if_statement "if (ppVar23 != (png_bytep)0x0) {\n    png_ptr->prev_row = png_ptr->row_buf;\n    png_ptr->row_buf = ppVar23;\n  }" if (parenthesized_expression "(ppVar23 != (png_bytep)0x0)" ( (binary_expression "ppVar23 != (png_bytep)0x0" identifier != (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) )) (compound_statement "{\n    png_ptr->prev_row = png_ptr->row_buf;\n    png_ptr->row_buf = ppVar23;\n  }" { (expression_statement "png_ptr->prev_row = png_ptr->row_buf;" (assignment_expression "png_ptr->prev_row = png_ptr->row_buf" (field_expression "png_ptr->prev_row" identifier -> field_identifier) = (field_expression "png_ptr->row_buf" identifier -> field_identifier)) ;) (expression_statement "png_ptr->row_buf = ppVar23;" (assignment_expression "png_ptr->row_buf = ppVar23" (field_expression "png_ptr->row_buf" identifier -> field_identifier) = identifier) ;) })) (expression_statement "png_write_finish_row(png_ptr);" (call_expression "png_write_finish_row(png_ptr)" identifier (argument_list "(png_ptr)" ( identifier ))) ;) (expression_statement "uVar16 = png_ptr->flush_rows + 1;" (assignment_expression "uVar16 = png_ptr->flush_rows + 1" identifier = (binary_expression "png_ptr->flush_rows + 1" (field_expression "png_ptr->flush_rows" identifier -> field_identifier) + number_literal)) ;) (expression_statement "png_ptr->flush_rows = uVar16;" (assignment_expression "png_ptr->flush_rows = uVar16" (field_expression "png_ptr->flush_rows" identifier -> field_identifier) = identifier) ;) (if_statement "if ((png_ptr->flush_dist <= uVar16) && (png_ptr->flush_dist != 0)) {\n    png_write_flush(png_ptr);\n  }" if (parenthesized_expression "((png_ptr->flush_dist <= uVar16) && (png_ptr->flush_dist != 0))" ( (binary_expression "(png_ptr->flush_dist <= uVar16) && (png_ptr->flush_dist != 0)" (parenthesized_expression "(png_ptr->flush_dist <= uVar16)" ( (binary_expression "png_ptr->flush_dist <= uVar16" (field_expression "png_ptr->flush_dist" identifier -> field_identifier) <= identifier) )) && (parenthesized_expression "(png_ptr->flush_dist != 0)" ( (binary_expression "png_ptr->flush_dist != 0" (field_expression "png_ptr->flush_dist" identifier -> field_identifier) != number_literal) ))) )) (compound_statement "{\n    png_write_flush(png_ptr);\n  }" { (expression_statement "png_write_flush(png_ptr);" (call_expression "png_write_flush(png_ptr)" identifier (argument_list "(png_ptr)" ( identifier ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00126d89(long param_1,long param_2)\n\n{\n  ulong uVar1;\n  undefined1 *puVar2;\n  byte bVar3;\n  byte bVar4;\n  int iVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  byte *pbVar9;\n  ulong uVar10;\n  long lVar11;\n  int iVar12;\n  int iVar13;\n  ulong uVar14;\n  uint uVar15;\n  uint uVar16;\n  long lVar17;\n  uint uVar18;\n  uint uVar19;\n  undefined1 *puVar20;\n  long lVar21;\n  ulong uVar22;\n  long lVar23;\n  long local_58;\n  undefined1 *local_50;\n  \n  bVar4 = *(byte *)(param_1 + 0x266);\n  uVar1 = *(ulong *)(param_2 + 8);\n  uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3;\n  lVar23 = *(long *)(param_1 + 0x228);\n  if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }\n  else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }\n  if (bVar4 == 0x10) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  if (bVar4 == 0x80) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }\nLAB_00126e34:\n  FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);\n  lVar23 = *(long *)(param_1 + 0x220);\n  if (lVar23 != 0) {\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }\n  FUN_001268bf(param_1);\n  uVar15 = *(int *)(param_1 + 0x29c) + 1;\n  *(uint *)(param_1 + 0x29c) = uVar15;\n  if ((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)) {\n    png_write_flush(param_1);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00126d89(long param_1,long param_2)\n\n{\n  ulong uVar1;\n  undefined1 *puVar2;\n  byte bVar3;\n  byte bVar4;\n  int iVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  byte *pbVar9;\n  ulong uVar10;\n  long lVar11;\n  int iVar12;\n  int iVar13;\n  ulong uVar14;\n  uint uVar15;\n  uint uVar16;\n  long lVar17;\n  uint uVar18;\n  uint uVar19;\n  undefined1 *puVar20;\n  long lVar21;\n  ulong uVar22;\n  long lVar23;\n  long local_58;\n  undefined1 *local_50;\n  \n  bVar4 = *(byte *)(param_1 + 0x266);\n  uVar1 = *(ulong *)(param_2 + 8);\n  uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3;\n  lVar23 = *(long *)(param_1 + 0x228);\n  if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }\n  else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }\n  if (bVar4 == 0x10) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  if (bVar4 == 0x80) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }\nLAB_00126e34:\n  FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);\n  lVar23 = *(long *)(param_1 + 0x220);\n  if (lVar23 != 0) {\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }\n  FUN_001268bf(param_1);\n  uVar15 = *(int *)(param_1 + 0x29c) + 1;\n  *(uint *)(param_1 + 0x29c) = uVar15;\n  if ((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)) {\n    png_write_flush(param_1);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00126d89(long param_1,long param_2)" identifier (parameter_list "(long param_1,long param_2)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  ulong uVar1;\n  undefined1 *puVar2;\n  byte bVar3;\n  byte bVar4;\n  int iVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  byte *pbVar9;\n  ulong uVar10;\n  long lVar11;\n  int iVar12;\n  int iVar13;\n  ulong uVar14;\n  uint uVar15;\n  uint uVar16;\n  long lVar17;\n  uint uVar18;\n  uint uVar19;\n  undefined1 *puVar20;\n  long lVar21;\n  ulong uVar22;\n  long lVar23;\n  long local_58;\n  undefined1 *local_50;\n  \n  bVar4 = *(byte *)(param_1 + 0x266);\n  uVar1 = *(ulong *)(param_2 + 8);\n  uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3;\n  lVar23 = *(long *)(param_1 + 0x228);\n  if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }\n  else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }\n  if (bVar4 == 0x10) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  if (bVar4 == 0x80) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }\nLAB_00126e34:\n  FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);\n  lVar23 = *(long *)(param_1 + 0x220);\n  if (lVar23 != 0) {\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }\n  FUN_001268bf(param_1);\n  uVar15 = *(int *)(param_1 + 0x29c) + 1;\n  *(uint *)(param_1 + 0x29c) = uVar15;\n  if ((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)) {\n    png_write_flush(param_1);\n  }\n  return;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined1 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "uint uVar19;" type_identifier identifier ;) (declaration "undefined1 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "long lVar21;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar22;" type_identifier identifier ;) (declaration "long lVar23;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined1 *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (expression_statement "bVar4 = *(byte *)(param_1 + 0x266);" (assignment_expression "bVar4 = *(byte *)(param_1 + 0x266)" identifier = (pointer_expression "*(byte *)(param_1 + 0x266)" * (cast_expression "(byte *)(param_1 + 0x266)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x266)" ( (binary_expression "param_1 + 0x266" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(ulong *)(param_2 + 8);" (assignment_expression "uVar1 = *(ulong *)(param_2 + 8)" identifier = (pointer_expression "*(ulong *)(param_2 + 8)" * (cast_expression "(ulong *)(param_2 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3;" (assignment_expression "uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3" identifier = (binary_expression "(int)(*(byte *)(param_2 + 0x13) + 7) >> 3" (cast_expression "(int)(*(byte *)(param_2 + 0x13) + 7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(*(byte *)(param_2 + 0x13) + 7)" ( (binary_expression "*(byte *)(param_2 + 0x13) + 7" (pointer_expression "*(byte *)(param_2 + 0x13)" * (cast_expression "(byte *)(param_2 + 0x13)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x13)" ( (binary_expression "param_2 + 0x13" identifier + number_literal) )))) + number_literal) ))) >> number_literal)) ;) (expression_statement "lVar23 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (if_statement "if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }\n  else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }" if (parenthesized_expression "(uVar1 < 0x1ffffffffffffff)" ( (binary_expression "uVar1 < 0x1ffffffffffffff" identifier < number_literal) )) (compound_statement "{\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }" { (if_statement "if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }" if (parenthesized_expression "(((bVar4 & 8) == 0) || (bVar4 == 8))" ( (binary_expression "((bVar4 & 8) == 0) || (bVar4 == 8)" (parenthesized_expression "((bVar4 & 8) == 0)" ( (binary_expression "(bVar4 & 8) == 0" (parenthesized_expression "(bVar4 & 8)" ( (binary_expression "bVar4 & 8" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(bVar4 == 8)" ( (binary_expression "bVar4 == 8" identifier == number_literal) ))) )) (compound_statement "{\n      uVar22 = 0xfffffffffffffeff;\n    }" { (expression_statement "uVar22 = 0xfffffffffffffeff;" (assignment_expression "uVar22 = 0xfffffffffffffeff" identifier = number_literal) ;) }) (else_clause "else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }" else (compound_statement "{\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }" { (expression_statement "pbVar9 = (byte *)(lVar23 + 1);" (assignment_expression "pbVar9 = (byte *)(lVar23 + 1)" identifier = (cast_expression "(byte *)(lVar23 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1)" ( (binary_expression "lVar23 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar22 = uVar1;" (assignment_expression "uVar22 = uVar1" identifier = identifier) ;) (if_statement "if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }" { (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" identifier = number_literal) ;) (do_statement "do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));" do (compound_statement "{\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        }" { (expression_statement "bVar3 = *pbVar9;" (assignment_expression "bVar3 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (expression_statement "uVar7 = (ulong)bVar3;" (assignment_expression "uVar7 = (ulong)bVar3" identifier = (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }" if (parenthesized_expression "(0x7f < bVar3)" ( (binary_expression "0x7f < bVar3" number_literal < identifier) )) (compound_statement "{\n            uVar7 = (ulong)(0x100 - bVar3);\n          }" { (expression_statement "uVar7 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar7 = (ulong)(0x100 - bVar3)" identifier = (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar3)" ( (binary_expression "0x100 - bVar3" number_literal - identifier) )))) ;) })) (expression_statement "uVar22 = uVar22 + uVar7;" (assignment_expression "uVar22 = uVar22 + uVar7" identifier = (binary_expression "uVar22 + uVar7" identifier + identifier)) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar9 != (byte *)(lVar23 + 1 + uVar1))" ( (binary_expression "pbVar9 != (byte *)(lVar23 + 1 + uVar1)" identifier != (cast_expression "(byte *)(lVar23 + 1 + uVar1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1 + uVar1)" ( (binary_expression "lVar23 + 1 + uVar1" (binary_expression "lVar23 + 1" identifier + number_literal) + identifier) )))) )) ;) })) }))) }) (else_clause "else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }" else (compound_statement "{\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }" { (expression_statement "bVar4 = bVar4 & -bVar4;" (assignment_expression "bVar4 = bVar4 & -bVar4" identifier = (binary_expression "bVar4 & -bVar4" identifier & (unary_expression "-bVar4" - identifier))) ;) (expression_statement "uVar22 = 0xfffffffffffffeff;" (assignment_expression "uVar22 = 0xfffffffffffffeff" identifier = number_literal) ;) }))) (if_statement "if (bVar4 == 0x10) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }" if (parenthesized_expression "(bVar4 == 0x10)" ( (binary_expression "bVar4 == 0x10" identifier == number_literal) )) (compound_statement "{\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }" { (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar2 = 1;" (assignment_expression "*puVar2 = 1" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "lVar21 = lVar23 + 1;" (assignment_expression "lVar21 = lVar23 + 1" identifier = (binary_expression "lVar23 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = (ulong)uVar15;" (assignment_expression "uVar7 = (ulong)uVar15" identifier = (cast_expression "(ulong)uVar15" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);" do (compound_statement "{\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      }" { (expression_statement "puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);" (assignment_expression "puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10)" (subscript_expression "puVar2[uVar10 + 1]" identifier [ (binary_expression "uVar10 + 1" identifier + number_literal) ]) = (pointer_expression "*(undefined1 *)(lVar23 + 1 + uVar10)" * (cast_expression "(undefined1 *)(lVar23 + 1 + uVar10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1 + uVar10)" ( (binary_expression "lVar23 + 1 + uVar10" (binary_expression "lVar23 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar10 != uVar7)" ( (binary_expression "uVar10 != uVar7" identifier != identifier) )) ;) (expression_statement "lVar21 = lVar21 + uVar7;" (assignment_expression "lVar21 = lVar21 + uVar7" identifier = (binary_expression "lVar21 + uVar7" identifier + identifier)) ;) (expression_statement "puVar20 = puVar20 + uVar7;" (assignment_expression "puVar20 = puVar20 + uVar7" identifier = (binary_expression "puVar20 + uVar7" identifier + identifier)) ;) })) (if_statement "if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }" if (parenthesized_expression "(uVar7 < uVar1)" ( (binary_expression "uVar7 < uVar1" identifier < identifier) )) (compound_statement "{\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }" { (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);" do (compound_statement "{\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      }" { (expression_statement "puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);" (assignment_expression "puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17)" (subscript_expression "puVar20[lVar17]" identifier [ identifier ]) = (binary_expression "*(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17)" (pointer_expression "*(char *)(lVar21 + lVar17)" * (cast_expression "(char *)(lVar21 + lVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar17)" ( (binary_expression "lVar21 + lVar17" identifier + identifier) )))) - (pointer_expression "*(char *)(lVar23 + 1 + lVar17)" * (cast_expression "(char *)(lVar23 + 1 + lVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1 + lVar17)" ( (binary_expression "lVar23 + 1 + lVar17" (binary_expression "lVar23 + 1" identifier + number_literal) + identifier) )))))) ;) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 - uVar7 != lVar17)" ( (binary_expression "uVar1 - uVar7 != lVar17" (binary_expression "uVar1 - uVar7" identifier - identifier) != identifier) )) ;) })) (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }" statement_identifier : (if_statement "if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }" if (parenthesized_expression "(bVar4 == 0x40)" ( (binary_expression "bVar4 == 0x40" identifier == number_literal) )) (compound_statement "{\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }" { (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar2 = 3;" (assignment_expression "*puVar2 = 3" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "lVar17 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "lVar23 = lVar17 + 1;" (assignment_expression "lVar23 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "lVar6 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = lVar6 + 1;" (assignment_expression "lVar21 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) (if_statement "if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" { (expression_statement "lVar11 = 1;" (assignment_expression "lVar11 = 1" identifier = number_literal) ;) (do_statement "do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);" do (compound_statement "{\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        }" { (expression_statement "puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);" (assignment_expression "puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1)" (subscript_expression "puVar2[lVar11]" identifier [ identifier ]) = (binary_expression "*(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1)" (pointer_expression "*(char *)(lVar17 + lVar11)" * (cast_expression "(char *)(lVar17 + lVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + lVar11)" ( (binary_expression "lVar17 + lVar11" identifier + identifier) )))) - (parenthesized_expression "(*(byte *)(lVar6 + lVar11) >> 1)" ( (binary_expression "*(byte *)(lVar6 + lVar11) >> 1" (pointer_expression "*(byte *)(lVar6 + lVar11)" * (cast_expression "(byte *)(lVar6 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + lVar11)" ( (binary_expression "lVar6 + lVar11" identifier + identifier) )))) >> number_literal) )))) ;) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((ulong)(uVar15 - 1) + 2 != lVar11)" ( (binary_expression "(ulong)(uVar15 - 1) + 2 != lVar11" (binary_expression "(ulong)(uVar15 - 1) + 2" (call_expression "(ulong)(uVar15 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) ))) + number_literal) != identifier) )) ;) (expression_statement "lVar6 = (ulong)(uVar15 - 1) + 1;" (assignment_expression "lVar6 = (ulong)(uVar15 - 1) + 1" identifier = (binary_expression "(ulong)(uVar15 - 1) + 1" (call_expression "(ulong)(uVar15 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) ))) + number_literal)) ;) (expression_statement "lVar23 = lVar23 + lVar6;" (assignment_expression "lVar23 = lVar23 + lVar6" identifier = (binary_expression "lVar23 + lVar6" identifier + identifier)) ;) (expression_statement "lVar21 = lVar21 + lVar6;" (assignment_expression "lVar21 = lVar21 + lVar6" identifier = (binary_expression "lVar21 + lVar6" identifier + identifier)) ;) (expression_statement "puVar20 = puVar20 + lVar6;" (assignment_expression "puVar20 = puVar20 + lVar6" identifier = (binary_expression "puVar20 + lVar6" identifier + identifier)) ;) })) (if_statement "if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }" if (parenthesized_expression "(uVar15 < uVar1)" ( (binary_expression "uVar15 < uVar1" identifier < identifier) )) (compound_statement "{\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }" { (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);" do (compound_statement "{\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        }" { (expression_statement "puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);" (assignment_expression "puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1)" (subscript_expression "puVar20[lVar6]" identifier [ identifier ]) = (binary_expression "*(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1)" (pointer_expression "*(char *)(lVar23 + lVar6)" * (cast_expression "(char *)(lVar23 + lVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + lVar6)" ( (binary_expression "lVar23 + lVar6" identifier + identifier) )))) - (cast_expression "(char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1)" ( (binary_expression "(int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1" (cast_expression "(int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))" ( (binary_expression "(uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6)" (binary_expression "(uint)*(byte *)(lVar21 + lVar6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar21 + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar6)" ( (binary_expression "lVar21 + lVar6" identifier + identifier) )))) + (binary_expression "(uint)*(byte *)(lVar17 + 1 + lVar6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar17 + 1 + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + lVar6)" ( (binary_expression "lVar17 + 1 + lVar6" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) ))))) ))) >> number_literal) ))))) ;) (expression_statement "iVar5 = (int)lVar6;" (assignment_expression "iVar5 = (int)lVar6" identifier = (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar15 + 1 + iVar5 < uVar1)" ( (binary_expression "uVar15 + 1 + iVar5 < uVar1" (binary_expression "uVar15 + 1 + iVar5" (binary_expression "uVar15 + 1" identifier + number_literal) + identifier) < identifier) )) ;) })) (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00126e34;" goto statement_identifier ;) }))) (if_statement "if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }" if (parenthesized_expression "((bVar4 & 0x40) != 0)" ( (binary_expression "(bVar4 & 0x40) != 0" (parenthesized_expression "(bVar4 & 0x40)" ( (binary_expression "bVar4 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }" { (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar2 = 3;" (assignment_expression "*puVar2 = 3" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "lVar17 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = lVar17 + 1;" (assignment_expression "lVar21 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "lVar6 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "local_58 = lVar6 + 1;" (assignment_expression "local_58 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) (if_statement "if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (compound_statement "{\n        uVar7 = 0;\n      }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" else (compound_statement "{\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" { (expression_statement "lVar11 = 1;" (assignment_expression "lVar11 = 1" identifier = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);" do (compound_statement "{\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        }" { (expression_statement "bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);" (assignment_expression "bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1)" identifier = (binary_expression "*(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1)" (pointer_expression "*(char *)(lVar17 + lVar11)" * (cast_expression "(char *)(lVar17 + lVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + lVar11)" ( (binary_expression "lVar17 + lVar11" identifier + identifier) )))) - (parenthesized_expression "(*(byte *)(lVar6 + lVar11) >> 1)" ( (binary_expression "*(byte *)(lVar6 + lVar11) >> 1" (pointer_expression "*(byte *)(lVar6 + lVar11)" * (cast_expression "(byte *)(lVar6 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + lVar11)" ( (binary_expression "lVar6 + lVar11" identifier + identifier) )))) >> number_literal) )))) ;) (expression_statement "puVar2[lVar11] = bVar3;" (assignment_expression "puVar2[lVar11] = bVar3" (subscript_expression "puVar2[lVar11]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar10 = (ulong)bVar3;" (assignment_expression "uVar10 = (ulong)bVar3" identifier = (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }" if (parenthesized_expression "(0x7f < bVar3)" ( (binary_expression "0x7f < bVar3" number_literal < identifier) )) (compound_statement "{\n            uVar10 = (ulong)(0x100 - bVar3);\n          }" { (expression_statement "uVar10 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar10 = (ulong)(0x100 - bVar3)" identifier = (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar3)" ( (binary_expression "0x100 - bVar3" number_literal - identifier) )))) ;) })) (expression_statement "uVar7 = uVar7 + uVar10;" (assignment_expression "uVar7 = uVar7 + uVar10" identifier = (binary_expression "uVar7 + uVar10" identifier + identifier)) ;) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar11 != (ulong)(uVar15 - 1) + 2)" ( (binary_expression "lVar11 != (ulong)(uVar15 - 1) + 2" identifier != (binary_expression "(ulong)(uVar15 - 1) + 2" (call_expression "(ulong)(uVar15 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) ))) + number_literal)) )) ;) (expression_statement "lVar6 = (ulong)(uVar15 - 1) + 1;" (assignment_expression "lVar6 = (ulong)(uVar15 - 1) + 1" identifier = (binary_expression "(ulong)(uVar15 - 1) + 1" (call_expression "(ulong)(uVar15 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) ))) + number_literal)) ;) (expression_statement "lVar21 = lVar21 + lVar6;" (assignment_expression "lVar21 = lVar21 + lVar6" identifier = (binary_expression "lVar21 + lVar6" identifier + identifier)) ;) (expression_statement "local_58 = local_58 + lVar6;" (assignment_expression "local_58 = local_58 + lVar6" identifier = (binary_expression "local_58 + lVar6" identifier + identifier)) ;) (expression_statement "puVar20 = puVar20 + lVar6;" (assignment_expression "puVar20 = puVar20 + lVar6" identifier = (binary_expression "puVar20 + lVar6" identifier + identifier)) ;) }))) (if_statement "if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }" if (parenthesized_expression "(uVar15 < uVar1)" ( (binary_expression "uVar15 < uVar1" identifier < identifier) )) (compound_statement "{\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }" { (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));" do (compound_statement "{\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        }" { (expression_statement "uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);" (assignment_expression "uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1)" identifier = (binary_expression "(uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1)" (binary_expression "(uint)*(byte *)(lVar21 + lVar6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar21 + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar6)" ( (binary_expression "lVar21 + lVar6" identifier + identifier) )))) - (parenthesized_expression "((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1)" ( (binary_expression "(int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1" (cast_expression "(int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))" ( (binary_expression "(uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6)" (binary_expression "(uint)*(byte *)(local_58 + lVar6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_58 + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + lVar6)" ( (binary_expression "local_58 + lVar6" identifier + identifier) )))) + (binary_expression "(uint)*(byte *)(lVar17 + 1 + lVar6)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar17 + 1 + lVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + lVar6)" ( (binary_expression "lVar17 + 1 + lVar6" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) ))))) ))) >> number_literal) )))) ;) (expression_statement "puVar20[lVar6] = (char)uVar18;" (assignment_expression "puVar20[lVar6] = (char)uVar18" (subscript_expression "puVar20[lVar6]" identifier [ identifier ]) = (cast_expression "(char)uVar18" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar16 = uVar18 & 0xff;" (assignment_expression "uVar16 = uVar18 & 0xff" identifier = (binary_expression "uVar18 & 0xff" identifier & number_literal)) ;) (if_statement "if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }" if (parenthesized_expression "(0x7f < (uVar18 & 0xff))" ( (binary_expression "0x7f < (uVar18 & 0xff)" number_literal < (parenthesized_expression "(uVar18 & 0xff)" ( (binary_expression "uVar18 & 0xff" identifier & number_literal) ))) )) (compound_statement "{\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }" { (expression_statement "uVar16 = 0x100 - (uVar18 & 0xff);" (assignment_expression "uVar16 = 0x100 - (uVar18 & 0xff)" identifier = (binary_expression "0x100 - (uVar18 & 0xff)" number_literal - (parenthesized_expression "(uVar18 & 0xff)" ( (binary_expression "uVar18 & 0xff" identifier & number_literal) )))) ;) })) (expression_statement "uVar7 = uVar7 + uVar16;" (assignment_expression "uVar7 = uVar7 + uVar16" identifier = (binary_expression "uVar7 + uVar16" identifier + identifier)) ;) }) while (parenthesized_expression "((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1))" ( (binary_expression "(uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1)" (parenthesized_expression "(uVar7 <= uVar22)" ( (binary_expression "uVar7 <= uVar22" identifier <= identifier) )) && (parenthesized_expression "(iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1)" ( (comma_expression "iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1" (assignment_expression "iVar5 = (int)lVar6" identifier = (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier)) , (comma_expression "lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) , (binary_expression "uVar15 + 1 + iVar5 < uVar1" (binary_expression "uVar15 + 1 + iVar5" (binary_expression "uVar15 + 1" identifier + number_literal) + identifier) < identifier))) ))) )) ;) })) (if_statement "if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }" if (parenthesized_expression "(uVar7 < uVar22)" ( (binary_expression "uVar7 < uVar22" identifier < identifier) )) (compound_statement "{\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }" { (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = uVar7;" (assignment_expression "uVar22 = uVar7" identifier = identifier) ;) (if_statement "if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }" if (parenthesized_expression "(*(long *)(param_1 + 0x238) != 0)" ( (binary_expression "*(long *)(param_1 + 0x238) != 0" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }" { (expression_statement "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);" (assignment_expression "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238)" (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) )))) = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x238) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x238) = lVar23" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) = identifier) ;) })) })) })) }) (else_clause "else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }" else (compound_statement "{\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }" { (if_statement "if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }" if (parenthesized_expression "((bVar4 & 0x10) != 0)" ( (binary_expression "(bVar4 & 0x10) != 0" (parenthesized_expression "(bVar4 & 0x10)" ( (binary_expression "bVar4 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }" { (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar2 = 1;" (assignment_expression "*puVar2 = 1" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "lVar21 = lVar23 + 1;" (assignment_expression "lVar21 = lVar23 + 1" identifier = (binary_expression "lVar23 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = (ulong)uVar15;" (assignment_expression "uVar7 = (ulong)uVar15" identifier = (cast_expression "(ulong)uVar15" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uVar7;" (assignment_expression "uVar10 = uVar7" identifier = identifier) ;) (if_statement "if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);" do (compound_statement "{\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        }" { (expression_statement "bVar3 = *(byte *)(lVar23 + 1 + uVar14);" (assignment_expression "bVar3 = *(byte *)(lVar23 + 1 + uVar14)" identifier = (pointer_expression "*(byte *)(lVar23 + 1 + uVar14)" * (cast_expression "(byte *)(lVar23 + 1 + uVar14)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1 + uVar14)" ( (binary_expression "lVar23 + 1 + uVar14" (binary_expression "lVar23 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "puVar2[uVar14 + 1] = bVar3;" (assignment_expression "puVar2[uVar14 + 1] = bVar3" (subscript_expression "puVar2[uVar14 + 1]" identifier [ (binary_expression "uVar14 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "uVar8 = (ulong)bVar3;" (assignment_expression "uVar8 = (ulong)bVar3" identifier = (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }" if (parenthesized_expression "(0x7f < bVar3)" ( (binary_expression "0x7f < bVar3" number_literal < identifier) )) (compound_statement "{\n            uVar8 = (ulong)(0x100 - bVar3);\n          }" { (expression_statement "uVar8 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar8 = (ulong)(0x100 - bVar3)" identifier = (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar3)" ( (binary_expression "0x100 - bVar3" number_literal - identifier) )))) ;) })) (expression_statement "uVar10 = uVar10 + uVar8;" (assignment_expression "uVar10 = uVar10 + uVar8" identifier = (binary_expression "uVar10 + uVar8" identifier + identifier)) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar14 != uVar7)" ( (binary_expression "uVar14 != uVar7" identifier != identifier) )) ;) (expression_statement "lVar21 = lVar21 + uVar7;" (assignment_expression "lVar21 = lVar21 + uVar7" identifier = (binary_expression "lVar21 + uVar7" identifier + identifier)) ;) (expression_statement "puVar20 = puVar20 + uVar7;" (assignment_expression "puVar20 = puVar20 + uVar7" identifier = (binary_expression "puVar20 + uVar7" identifier + identifier)) ;) })) (if_statement "if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }" if (parenthesized_expression "(uVar7 < uVar1)" ( (binary_expression "uVar7 < uVar1" identifier < identifier) )) (compound_statement "{\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }" { (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));" do (compound_statement "{\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        }" { (expression_statement "bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);" (assignment_expression "bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17)" identifier = (binary_expression "*(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17)" (pointer_expression "*(char *)(lVar21 + lVar17)" * (cast_expression "(char *)(lVar21 + lVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar17)" ( (binary_expression "lVar21 + lVar17" identifier + identifier) )))) - (pointer_expression "*(char *)(lVar23 + 1 + lVar17)" * (cast_expression "(char *)(lVar23 + 1 + lVar17)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1 + lVar17)" ( (binary_expression "lVar23 + 1 + lVar17" (binary_expression "lVar23 + 1" identifier + number_literal) + identifier) )))))) ;) (expression_statement "puVar20[lVar17] = bVar3;" (assignment_expression "puVar20[lVar17] = bVar3" (subscript_expression "puVar20[lVar17]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar14 = (ulong)bVar3;" (assignment_expression "uVar14 = (ulong)bVar3" identifier = (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }" if (parenthesized_expression "(0x7f < bVar3)" ( (binary_expression "0x7f < bVar3" number_literal < identifier) )) (compound_statement "{\n            uVar14 = (ulong)(0x100 - bVar3);\n          }" { (expression_statement "uVar14 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar14 = (ulong)(0x100 - bVar3)" identifier = (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar3)" ( (binary_expression "0x100 - bVar3" number_literal - identifier) )))) ;) })) (expression_statement "uVar10 = uVar10 + uVar14;" (assignment_expression "uVar10 = uVar10 + uVar14" identifier = (binary_expression "uVar10 + uVar14" identifier + identifier)) ;) }) while (parenthesized_expression "((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7))" ( (binary_expression "(uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7)" (parenthesized_expression "(uVar10 <= uVar22)" ( (binary_expression "uVar10 <= uVar22" identifier <= identifier) )) && (parenthesized_expression "(lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7)" ( (comma_expression "lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7" (assignment_expression "lVar17 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) , (binary_expression "lVar17 != uVar1 - uVar7" identifier != (binary_expression "uVar1 - uVar7" identifier - identifier))) ))) )) ;) })) (if_statement "if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }" if (parenthesized_expression "(uVar10 < uVar22)" ( (binary_expression "uVar10 < uVar22" identifier < identifier) )) (compound_statement "{\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }" { (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = uVar10;" (assignment_expression "uVar22 = uVar10" identifier = identifier) ;) (if_statement "if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }" if (parenthesized_expression "(*(long *)(param_1 + 0x238) != 0)" ( (binary_expression "*(long *)(param_1 + 0x238) != 0" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }" { (expression_statement "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);" (assignment_expression "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238)" (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) )))) = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x238) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x238) = lVar23" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) = identifier) ;) })) })) })) (if_statement "if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }" if (parenthesized_expression "(bVar4 != 0x20)" ( (binary_expression "bVar4 != 0x20" identifier != number_literal) )) (compound_statement "{\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }" { (if_statement "if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }" if (parenthesized_expression "((bVar4 & 0x20) != 0)" ( (binary_expression "(bVar4 & 0x20) != 0" (parenthesized_expression "(bVar4 & 0x20)" ( (binary_expression "bVar4 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }" { (expression_statement "puVar20 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar20 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar20 = 2;" (assignment_expression "*puVar20 = 2" (pointer_expression "*puVar20" * identifier) = number_literal) ;) (expression_statement "lVar21 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar21 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "lVar17 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = uVar1;" (assignment_expression "uVar7 = uVar1" identifier = identifier) ;) (if_statement "if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }" { (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));" do (compound_statement "{\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          }" { (expression_statement "bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);" (assignment_expression "bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10)" identifier = (binary_expression "*(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10)" (pointer_expression "*(char *)(lVar21 + 1 + uVar10)" * (cast_expression "(char *)(lVar21 + 1 + uVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + 1 + uVar10)" ( (binary_expression "lVar21 + 1 + uVar10" (binary_expression "lVar21 + 1" identifier + number_literal) + identifier) )))) - (pointer_expression "*(char *)(lVar17 + 1 + uVar10)" * (cast_expression "(char *)(lVar17 + 1 + uVar10)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + uVar10)" ( (binary_expression "lVar17 + 1 + uVar10" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) )))))) ;) (expression_statement "puVar20[uVar10 + 1] = bVar3;" (assignment_expression "puVar20[uVar10 + 1] = bVar3" (subscript_expression "puVar20[uVar10 + 1]" identifier [ (binary_expression "uVar10 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "uVar14 = (ulong)bVar3;" (assignment_expression "uVar14 = (ulong)bVar3" identifier = (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }" if (parenthesized_expression "(0x7f < bVar3)" ( (binary_expression "0x7f < bVar3" number_literal < identifier) )) (compound_statement "{\n              uVar14 = (ulong)(0x100 - bVar3);\n            }" { (expression_statement "uVar14 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar14 = (ulong)(0x100 - bVar3)" identifier = (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar3)" ( (binary_expression "0x100 - bVar3" number_literal - identifier) )))) ;) })) (expression_statement "uVar7 = uVar7 + uVar14;" (assignment_expression "uVar7 = uVar7 + uVar14" identifier = (binary_expression "uVar7 + uVar14" identifier + identifier)) ;) }) while (parenthesized_expression "((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10))" ( (binary_expression "(uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10)" (parenthesized_expression "(uVar7 <= uVar22)" ( (binary_expression "uVar7 <= uVar22" identifier <= identifier) )) && (parenthesized_expression "(uVar10 = uVar10 + 1, uVar1 != uVar10)" ( (comma_expression "uVar10 = uVar10 + 1, uVar1 != uVar10" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) , (binary_expression "uVar1 != uVar10" identifier != identifier)) ))) )) ;) })) (if_statement "if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }" if (parenthesized_expression "(uVar7 < uVar22)" ( (binary_expression "uVar7 < uVar22" identifier < identifier) )) (compound_statement "{\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }" { (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "uVar22 = uVar7;" (assignment_expression "uVar22 = uVar7" identifier = identifier) ;) (if_statement "if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }" if (parenthesized_expression "(*(long *)(param_1 + 0x238) != 0)" ( (binary_expression "*(long *)(param_1 + 0x238) != 0" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }" { (expression_statement "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);" (assignment_expression "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238)" (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) )))) = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x238) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x238) = lVar23" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) = identifier) ;) })) })) })) (goto_statement "goto LAB_00126e0b;" goto statement_identifier ;) })) (expression_statement "puVar20 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar20 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar20 = 2;" (assignment_expression "*puVar20 = 2" (pointer_expression "*puVar20" * identifier) = number_literal) ;) (expression_statement "lVar23 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar21 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (if_statement "if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }" if (parenthesized_expression "(uVar1 != 0)" ( (binary_expression "uVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);" do (compound_statement "{\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      }" { (expression_statement "puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);" (assignment_expression "puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7)" (subscript_expression "puVar20[uVar7 + 1]" identifier [ (binary_expression "uVar7 + 1" identifier + number_literal) ]) = (binary_expression "*(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7)" (pointer_expression "*(char *)(lVar23 + 1 + uVar7)" * (cast_expression "(char *)(lVar23 + 1 + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + 1 + uVar7)" ( (binary_expression "lVar23 + 1 + uVar7" (binary_expression "lVar23 + 1" identifier + number_literal) + identifier) )))) - (pointer_expression "*(char *)(lVar21 + 1 + uVar7)" * (cast_expression "(char *)(lVar21 + 1 + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + 1 + uVar7)" ( (binary_expression "lVar21 + 1 + uVar7" (binary_expression "lVar21 + 1" identifier + number_literal) + identifier) )))))) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 != uVar7)" ( (binary_expression "uVar1 != uVar7" identifier != identifier) )) ;) })) (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) }))) (if_statement "if (bVar4 == 0x80) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }" if (parenthesized_expression "(bVar4 == 0x80)" ( (binary_expression "bVar4 == 0x80" identifier == number_literal) )) (compound_statement "{\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }" { (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar2 = 4;" (assignment_expression "*puVar2 = 4" (pointer_expression "*puVar2" * identifier) = number_literal) ;) (expression_statement "lVar17 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "lVar23 = lVar17 + 1;" (assignment_expression "lVar23 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" identifier = (binary_expression "puVar2 + 1" identifier + number_literal)) ;) (expression_statement "lVar6 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = lVar6 + 1;" (assignment_expression "lVar21 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar22 = (ulong)uVar15;" (assignment_expression "uVar22 = (ulong)uVar15" identifier = (cast_expression "(ulong)uVar15" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }" { (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);" do (compound_statement "{\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      }" { (expression_statement "puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);" (assignment_expression "puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7)" (subscript_expression "puVar2[uVar7 + 1]" identifier [ (binary_expression "uVar7 + 1" identifier + number_literal) ]) = (binary_expression "*(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7)" (pointer_expression "*(char *)(lVar17 + 1 + uVar7)" * (cast_expression "(char *)(lVar17 + 1 + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + uVar7)" ( (binary_expression "lVar17 + 1 + uVar7" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) )))) - (pointer_expression "*(char *)(lVar6 + 1 + uVar7)" * (cast_expression "(char *)(lVar6 + 1 + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 1 + uVar7)" ( (binary_expression "lVar6 + 1 + uVar7" (binary_expression "lVar6 + 1" identifier + number_literal) + identifier) )))))) ;) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar22 != uVar7)" ( (binary_expression "uVar22 != uVar7" identifier != identifier) )) ;) (expression_statement "lVar23 = lVar23 + uVar7;" (assignment_expression "lVar23 = lVar23 + uVar7" identifier = (binary_expression "lVar23 + uVar7" identifier + identifier)) ;) (expression_statement "lVar21 = lVar21 + uVar7;" (assignment_expression "lVar21 = lVar21 + uVar7" identifier = (binary_expression "lVar21 + uVar7" identifier + identifier)) ;) (expression_statement "puVar20 = puVar20 + uVar7;" (assignment_expression "puVar20 = puVar20 + uVar7" identifier = (binary_expression "puVar20 + uVar7" identifier + identifier)) ;) (expression_statement "uVar22 = uVar7;" (assignment_expression "uVar22 = uVar7" identifier = identifier) ;) })) (if_statement "if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }" if (parenthesized_expression "(uVar22 < uVar1)" ( (binary_expression "uVar22 < uVar1" identifier < identifier) )) (compound_statement "{\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }" { (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);" do (compound_statement "{\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      }" { (expression_statement "bVar3 = *(byte *)(lVar6 + 1 + lVar11);" (assignment_expression "bVar3 = *(byte *)(lVar6 + 1 + lVar11)" identifier = (pointer_expression "*(byte *)(lVar6 + 1 + lVar11)" * (cast_expression "(byte *)(lVar6 + 1 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 1 + lVar11)" ( (binary_expression "lVar6 + 1 + lVar11" (binary_expression "lVar6 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "bVar4 = *(byte *)(lVar17 + 1 + lVar11);" (assignment_expression "bVar4 = *(byte *)(lVar17 + 1 + lVar11)" identifier = (pointer_expression "*(byte *)(lVar17 + 1 + lVar11)" * (cast_expression "(byte *)(lVar17 + 1 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + lVar11)" ( (binary_expression "lVar17 + 1 + lVar11" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;" (assignment_expression "uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3" identifier = (binary_expression "(uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3" (binary_expression "(uint)*(byte *)(lVar21 + lVar11)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar21 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar11)" ( (binary_expression "lVar21 + lVar11" identifier + identifier) )))) - (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "uVar16 = (uint)bVar4 - (uint)bVar3;" (assignment_expression "uVar16 = (uint)bVar4 - (uint)bVar3" identifier = (binary_expression "(uint)bVar4 - (uint)bVar3" (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier) - (cast_expression "(uint)bVar3" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);" (assignment_expression "iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f)" identifier = (binary_expression "((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f)" (parenthesized_expression "((int)uVar15 >> 0x1f ^ uVar15)" ( (binary_expression "(int)uVar15 >> 0x1f ^ uVar15" (binary_expression "(int)uVar15 >> 0x1f" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ^ identifier) )) - (parenthesized_expression "((int)uVar15 >> 0x1f)" ( (binary_expression "(int)uVar15 >> 0x1f" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);" (assignment_expression "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" identifier = (binary_expression "((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" (parenthesized_expression "((int)uVar16 >> 0x1f ^ uVar16)" ( (binary_expression "(int)uVar16 >> 0x1f ^ uVar16" (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ^ identifier) )) - (parenthesized_expression "((int)uVar16 >> 0x1f)" ( (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar18 = (int)(uVar15 + uVar16) >> 0x1f;" (assignment_expression "uVar18 = (int)(uVar15 + uVar16) >> 0x1f" identifier = (binary_expression "(int)(uVar15 + uVar16) >> 0x1f" (cast_expression "(int)(uVar15 + uVar16)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar15 + uVar16)" ( (binary_expression "uVar15 + uVar16" identifier + identifier) ))) >> number_literal)) ;) (expression_statement "iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;" (assignment_expression "iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18" identifier = (binary_expression "(uVar15 + uVar16 ^ uVar18) - uVar18" (parenthesized_expression "(uVar15 + uVar16 ^ uVar18)" ( (binary_expression "uVar15 + uVar16 ^ uVar18" (binary_expression "uVar15 + uVar16" identifier + identifier) ^ identifier) )) - identifier)) ;) (if_statement "if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }" if (parenthesized_expression "(((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5))" ( (binary_expression "((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)" (parenthesized_expression "((iVar13 < iVar12) || (iVar5 < iVar12))" ( (binary_expression "(iVar13 < iVar12) || (iVar5 < iVar12)" (parenthesized_expression "(iVar13 < iVar12)" ( (binary_expression "iVar13 < iVar12" identifier < identifier) )) || (parenthesized_expression "(iVar5 < iVar12)" ( (binary_expression "iVar5 < iVar12" identifier < identifier) ))) )) && (parenthesized_expression "(bVar4 = bVar3, iVar13 <= iVar5)" ( (comma_expression "bVar4 = bVar3, iVar13 <= iVar5" (assignment_expression "bVar4 = bVar3" identifier = identifier) , (binary_expression "iVar13 <= iVar5" identifier <= identifier)) ))) )) (compound_statement "{\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }" { (expression_statement "bVar4 = *(byte *)(lVar21 + lVar11);" (assignment_expression "bVar4 = *(byte *)(lVar21 + lVar11)" identifier = (pointer_expression "*(byte *)(lVar21 + lVar11)" * (cast_expression "(byte *)(lVar21 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar11)" ( (binary_expression "lVar21 + lVar11" identifier + identifier) ))))) ;) })) (expression_statement "puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;" (assignment_expression "puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4" (subscript_expression "puVar20[lVar11]" identifier [ identifier ]) = (binary_expression "*(char *)(lVar23 + lVar11) - bVar4" (pointer_expression "*(char *)(lVar23 + lVar11)" * (cast_expression "(char *)(lVar23 + lVar11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar23 + lVar11)" ( (binary_expression "lVar23 + lVar11" identifier + identifier) )))) - identifier)) ;) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar1 - uVar22 != lVar11)" ( (binary_expression "uVar1 - uVar22 != lVar11" (binary_expression "uVar1 - uVar22" identifier - identifier) != identifier) )) ;) })) (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) }) (else_clause "else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }" else (if_statement "if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }" if (parenthesized_expression "((bVar4 & 0x80) != 0)" ( (binary_expression "(bVar4 & 0x80) != 0" (parenthesized_expression "(bVar4 & 0x80)" ( (binary_expression "bVar4 & 0x80" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }" { (expression_statement "puVar20 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar20 = *(undefined1 **)(param_1 + 0x230)" identifier = (pointer_expression "*(undefined1 **)(param_1 + 0x230)" * (cast_expression "(undefined1 **)(param_1 + 0x230)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (expression_statement "*puVar20 = 4;" (assignment_expression "*puVar20 = 4" (pointer_expression "*puVar20" * identifier) = number_literal) ;) (expression_statement "lVar17 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x228)" identifier = (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "lVar21 = lVar17 + 1;" (assignment_expression "lVar21 = lVar17 + 1" identifier = (binary_expression "lVar17 + 1" identifier + number_literal)) ;) (expression_statement "local_50 = puVar20 + 1;" (assignment_expression "local_50 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (expression_statement "lVar6 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (expression_statement "local_58 = lVar6 + 1;" (assignment_expression "local_58 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar7 = (ulong)uVar15;" (assignment_expression "uVar7 = (ulong)uVar15" identifier = (cast_expression "(ulong)uVar15" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar10 = uVar7;" (assignment_expression "uVar10 = uVar7" identifier = identifier) ;) (if_statement "if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);" do (compound_statement "{\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      }" { (expression_statement "bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);" (assignment_expression "bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14)" identifier = (binary_expression "*(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14)" (pointer_expression "*(char *)(lVar17 + 1 + uVar14)" * (cast_expression "(char *)(lVar17 + 1 + uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + uVar14)" ( (binary_expression "lVar17 + 1 + uVar14" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) )))) - (pointer_expression "*(char *)(lVar6 + 1 + uVar14)" * (cast_expression "(char *)(lVar6 + 1 + uVar14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 1 + uVar14)" ( (binary_expression "lVar6 + 1 + uVar14" (binary_expression "lVar6 + 1" identifier + number_literal) + identifier) )))))) ;) (expression_statement "puVar20[uVar14 + 1] = bVar4;" (assignment_expression "puVar20[uVar14 + 1] = bVar4" (subscript_expression "puVar20[uVar14 + 1]" identifier [ (binary_expression "uVar14 + 1" identifier + number_literal) ]) = identifier) ;) (expression_statement "uVar8 = (ulong)bVar4;" (assignment_expression "uVar8 = (ulong)bVar4" identifier = (cast_expression "(ulong)bVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (if_statement "if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }" if (parenthesized_expression "(0x7f < bVar4)" ( (binary_expression "0x7f < bVar4" number_literal < identifier) )) (compound_statement "{\n          uVar8 = (ulong)(0x100 - bVar4);\n        }" { (expression_statement "uVar8 = (ulong)(0x100 - bVar4);" (assignment_expression "uVar8 = (ulong)(0x100 - bVar4)" identifier = (call_expression "(ulong)(0x100 - bVar4)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(0x100 - bVar4)" ( (binary_expression "0x100 - bVar4" number_literal - identifier) )))) ;) })) (expression_statement "uVar10 = uVar10 + uVar8;" (assignment_expression "uVar10 = uVar10 + uVar8" identifier = (binary_expression "uVar10 + uVar8" identifier + identifier)) ;) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar14 != uVar7)" ( (binary_expression "uVar14 != uVar7" identifier != identifier) )) ;) (expression_statement "lVar21 = lVar21 + uVar7;" (assignment_expression "lVar21 = lVar21 + uVar7" identifier = (binary_expression "lVar21 + uVar7" identifier + identifier)) ;) (expression_statement "local_58 = local_58 + uVar7;" (assignment_expression "local_58 = local_58 + uVar7" identifier = (binary_expression "local_58 + uVar7" identifier + identifier)) ;) (expression_statement "local_50 = local_50 + uVar7;" (assignment_expression "local_50 = local_50 + uVar7" identifier = (binary_expression "local_50 + uVar7" identifier + identifier)) ;) })) (if_statement "if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }" if (parenthesized_expression "(uVar7 < uVar1)" ( (binary_expression "uVar7 < uVar1" identifier < identifier) )) (compound_statement "{\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }" { (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));" do (compound_statement "{\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      }" { (expression_statement "uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);" (assignment_expression "uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11)" identifier = (binary_expression "(uint)*(byte *)(lVar6 + 1 + lVar11)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(lVar6 + 1 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 1 + lVar11)" ( (binary_expression "lVar6 + 1 + lVar11" (binary_expression "lVar6 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "bVar4 = *(byte *)(lVar17 + 1 + lVar11);" (assignment_expression "bVar4 = *(byte *)(lVar17 + 1 + lVar11)" identifier = (pointer_expression "*(byte *)(lVar17 + 1 + lVar11)" * (cast_expression "(byte *)(lVar17 + 1 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 1 + lVar11)" ( (binary_expression "lVar17 + 1 + lVar11" (binary_expression "lVar17 + 1" identifier + number_literal) + identifier) ))))) ;) (expression_statement "uVar15 = *(byte *)(local_58 + lVar11) - uVar18;" (assignment_expression "uVar15 = *(byte *)(local_58 + lVar11) - uVar18" identifier = (binary_expression "*(byte *)(local_58 + lVar11) - uVar18" (pointer_expression "*(byte *)(local_58 + lVar11)" * (cast_expression "(byte *)(local_58 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + lVar11)" ( (binary_expression "local_58 + lVar11" identifier + identifier) )))) - identifier)) ;) (expression_statement "uVar16 = bVar4 - uVar18;" (assignment_expression "uVar16 = bVar4 - uVar18" identifier = (binary_expression "bVar4 - uVar18" identifier - identifier)) ;) (expression_statement "iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);" (assignment_expression "iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f)" identifier = (binary_expression "((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f)" (parenthesized_expression "((int)uVar15 >> 0x1f ^ uVar15)" ( (binary_expression "(int)uVar15 >> 0x1f ^ uVar15" (binary_expression "(int)uVar15 >> 0x1f" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ^ identifier) )) - (parenthesized_expression "((int)uVar15 >> 0x1f)" ( (binary_expression "(int)uVar15 >> 0x1f" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);" (assignment_expression "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" identifier = (binary_expression "((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" (parenthesized_expression "((int)uVar16 >> 0x1f ^ uVar16)" ( (binary_expression "(int)uVar16 >> 0x1f ^ uVar16" (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ^ identifier) )) - (parenthesized_expression "((int)uVar16 >> 0x1f)" ( (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )))) ;) (expression_statement "uVar19 = (int)(uVar15 + uVar16) >> 0x1f;" (assignment_expression "uVar19 = (int)(uVar15 + uVar16) >> 0x1f" identifier = (binary_expression "(int)(uVar15 + uVar16) >> 0x1f" (cast_expression "(int)(uVar15 + uVar16)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar15 + uVar16)" ( (binary_expression "uVar15 + uVar16" identifier + identifier) ))) >> number_literal)) ;) (expression_statement "iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;" (assignment_expression "iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19" identifier = (binary_expression "(uVar15 + uVar16 ^ uVar19) - uVar19" (parenthesized_expression "(uVar15 + uVar16 ^ uVar19)" ( (binary_expression "uVar15 + uVar16 ^ uVar19" (binary_expression "uVar15 + uVar16" identifier + identifier) ^ identifier) )) - identifier)) ;) (if_statement "if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }" if (parenthesized_expression "(((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5))" ( (binary_expression "((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)" (parenthesized_expression "((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12))" ( (binary_expression "(iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)" (parenthesized_expression "(iVar13 < iVar12)" ( (binary_expression "iVar13 < iVar12" identifier < identifier) )) || (parenthesized_expression "(uVar15 = (uint)bVar4, iVar5 < iVar12)" ( (comma_expression "uVar15 = (uint)bVar4, iVar5 < iVar12" (assignment_expression "uVar15 = (uint)bVar4" identifier = (cast_expression "(uint)bVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) , (binary_expression "iVar5 < iVar12" identifier < identifier)) ))) )) && (parenthesized_expression "(uVar15 = uVar18, iVar13 <= iVar5)" ( (comma_expression "uVar15 = uVar18, iVar13 <= iVar5" (assignment_expression "uVar15 = uVar18" identifier = identifier) , (binary_expression "iVar13 <= iVar5" identifier <= identifier)) ))) )) (compound_statement "{\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }" { (expression_statement "uVar15 = (uint)*(byte *)(local_58 + lVar11);" (assignment_expression "uVar15 = (uint)*(byte *)(local_58 + lVar11)" identifier = (binary_expression "(uint)*(byte *)(local_58 + lVar11)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(local_58 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + lVar11)" ( (binary_expression "local_58 + lVar11" identifier + identifier) ))))) ;) })) (expression_statement "uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;" (assignment_expression "uVar15 = *(byte *)(lVar21 + lVar11) - uVar15" identifier = (binary_expression "*(byte *)(lVar21 + lVar11) - uVar15" (pointer_expression "*(byte *)(lVar21 + lVar11)" * (cast_expression "(byte *)(lVar21 + lVar11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar21 + lVar11)" ( (binary_expression "lVar21 + lVar11" identifier + identifier) )))) - identifier)) ;) (expression_statement "local_50[lVar11] = (char)uVar15;" (assignment_expression "local_50[lVar11] = (char)uVar15" (subscript_expression "local_50[lVar11]" identifier [ identifier ]) = (cast_expression "(char)uVar15" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "uVar16 = uVar15 & 0xff;" (assignment_expression "uVar16 = uVar15 & 0xff" identifier = (binary_expression "uVar15 & 0xff" identifier & number_literal)) ;) (if_statement "if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }" if (parenthesized_expression "(0x7f < (uVar15 & 0xff))" ( (binary_expression "0x7f < (uVar15 & 0xff)" number_literal < (parenthesized_expression "(uVar15 & 0xff)" ( (binary_expression "uVar15 & 0xff" identifier & number_literal) ))) )) (compound_statement "{\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }" { (expression_statement "uVar16 = 0x100 - (uVar15 & 0xff);" (assignment_expression "uVar16 = 0x100 - (uVar15 & 0xff)" identifier = (binary_expression "0x100 - (uVar15 & 0xff)" number_literal - (parenthesized_expression "(uVar15 & 0xff)" ( (binary_expression "uVar15 & 0xff" identifier & number_literal) )))) ;) })) (expression_statement "uVar10 = uVar10 + uVar16;" (assignment_expression "uVar10 = uVar10 + uVar16" identifier = (binary_expression "uVar10 + uVar16" identifier + identifier)) ;) }) while (parenthesized_expression "((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7))" ( (binary_expression "(uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7)" (parenthesized_expression "(uVar10 <= uVar22)" ( (binary_expression "uVar10 <= uVar22" identifier <= identifier) )) && (parenthesized_expression "(lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7)" ( (comma_expression "lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) , (binary_expression "lVar11 != uVar1 - uVar7" identifier != (binary_expression "uVar1 - uVar7" identifier - identifier))) ))) )) ;) })) (if_statement "if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }" if (parenthesized_expression "(uVar10 < uVar22)" ( (binary_expression "uVar10 < uVar22" identifier < identifier) )) (compound_statement "{\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }" { (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" identifier = (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) ))))) ;) (if_statement "if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }" if (parenthesized_expression "(*(long *)(param_1 + 0x238) != 0)" ( (binary_expression "*(long *)(param_1 + 0x238) != 0" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }" { (expression_statement "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);" (assignment_expression "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238)" (pointer_expression "*(long *)(param_1 + 0x230)" * (cast_expression "(long *)(param_1 + 0x230)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x230)" ( (binary_expression "param_1 + 0x230" identifier + number_literal) )))) = (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x238) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x238) = lVar23" (pointer_expression "*(long *)(param_1 + 0x238)" * (cast_expression "(long *)(param_1 + 0x238)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x238)" ( (binary_expression "param_1 + 0x238" identifier + number_literal) )))) = identifier) ;) })) })) })))) (labeled_statement "LAB_00126e34:\n  FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);" statement_identifier : (expression_statement "FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);" (call_expression "FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0)" identifier (argument_list "(param_1,lVar23,*(long *)(param_2 + 8) + 1,0)" ( identifier , identifier , (binary_expression "*(long *)(param_2 + 8) + 1" (pointer_expression "*(long *)(param_2 + 8)" * (cast_expression "(long *)(param_2 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 8)" ( (binary_expression "param_2 + 8" identifier + number_literal) )))) + number_literal) , number_literal ))) ;)) (expression_statement "lVar23 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x220)" identifier = (pointer_expression "*(long *)(param_1 + 0x220)" * (cast_expression "(long *)(param_1 + 0x220)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) ))))) ;) (if_statement "if (lVar23 != 0) {\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }" if (parenthesized_expression "(lVar23 != 0)" ( (binary_expression "lVar23 != 0" identifier != number_literal) )) (compound_statement "{\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }" { (expression_statement "*(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);" (assignment_expression "*(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228)" (pointer_expression "*(undefined8 *)(param_1 + 0x220)" * (cast_expression "(undefined8 *)(param_1 + 0x220)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x220)" ( (binary_expression "param_1 + 0x220" identifier + number_literal) )))) = (pointer_expression "*(undefined8 *)(param_1 + 0x228)" * (cast_expression "(undefined8 *)(param_1 + 0x228)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) ))))) ;) (expression_statement "*(long *)(param_1 + 0x228) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x228) = lVar23" (pointer_expression "*(long *)(param_1 + 0x228)" * (cast_expression "(long *)(param_1 + 0x228)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x228)" ( (binary_expression "param_1 + 0x228" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "FUN_001268bf(param_1);" (call_expression "FUN_001268bf(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "uVar15 = *(int *)(param_1 + 0x29c) + 1;" (assignment_expression "uVar15 = *(int *)(param_1 + 0x29c) + 1" identifier = (binary_expression "*(int *)(param_1 + 0x29c) + 1" (pointer_expression "*(int *)(param_1 + 0x29c)" * (cast_expression "(int *)(param_1 + 0x29c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x29c)" ( (binary_expression "param_1 + 0x29c" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 0x29c) = uVar15;" (assignment_expression "*(uint *)(param_1 + 0x29c) = uVar15" (pointer_expression "*(uint *)(param_1 + 0x29c)" * (cast_expression "(uint *)(param_1 + 0x29c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x29c)" ( (binary_expression "param_1 + 0x29c" identifier + number_literal) )))) = identifier) ;) (if_statement "if ((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)) {\n    png_write_flush(param_1);\n  }" if (parenthesized_expression "((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0))" ( (binary_expression "(*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)" (parenthesized_expression "(*(uint *)(param_1 + 0x298) <= uVar15)" ( (binary_expression "*(uint *)(param_1 + 0x298) <= uVar15" (pointer_expression "*(uint *)(param_1 + 0x298)" * (cast_expression "(uint *)(param_1 + 0x298)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) <= identifier) )) && (parenthesized_expression "(*(uint *)(param_1 + 0x298) != 0)" ( (binary_expression "*(uint *)(param_1 + 0x298) != 0" (pointer_expression "*(uint *)(param_1 + 0x298)" * (cast_expression "(uint *)(param_1 + 0x298)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x298)" ( (binary_expression "param_1 + 0x298" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n    png_write_flush(param_1);\n  }" { (expression_statement "png_write_flush(param_1);" (call_expression "png_write_flush(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (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 IDENT + LIT) )))) + LIT) ))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT - IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) )) ;) })) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_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 ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) - (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) + LIT) != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) + LIT)) ;) (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)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) - (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ))) >> LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + LIT) + IDENT) < IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) - (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT - IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) + LIT)) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) + LIT)) ;) (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)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ))) >> LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression (binary_expression IDENT + LIT) + IDENT) < IDENT))) ))) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) })) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT - IDENT) )))) ;) })) (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 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 = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT - IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != (binary_expression IDENT - IDENT))) ))) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT - IDENT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != IDENT)) ))) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) })) })) (goto_statement goto statement_identifier ;) })) (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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (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 = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ^ IDENT) )) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ^ IDENT) )) - (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 IDENT + IDENT) ))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) ^ IDENT) )) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT <= IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT - IDENT) )))) ;) })) (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 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 ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ^ IDENT) )) - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ^ IDENT) )) - (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 IDENT + IDENT) ))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) ^ IDENT) )) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (binary_expression IDENT < IDENT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT <= IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != (binary_expression IDENT - IDENT))) ))) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) })) })))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT ))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00126d89(long param_1,long param_2)\n\n{\n  ulong uVar1;\n  undefined1 *puVar2;\n  byte bVar3;\n  byte bVar4;\n  int iVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  byte *pbVar9;\n  ulong uVar10;\n  long lVar11;\n  int iVar12;\n  int iVar13;\n  ulong uVar14;\n  uint uVar15;\n  uint uVar16;\n  long lVar17;\n  uint uVar18;\n  uint uVar19;\n  undefined1 *puVar20;\n  long lVar21;\n  ulong uVar22;\n  long lVar23;\n  long local_58;\n  undefined1 *local_50;\n  \n  bVar4 = *(byte *)(param_1 + 0x266);\n  uVar1 = *(ulong *)(param_2 + 8);\n  uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3;\n  lVar23 = *(long *)(param_1 + 0x228);\n  if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }\n  else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }\n  if (bVar4 == 0x10) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  if (bVar4 == 0x80) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }\nLAB_00126e34:\n  FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);\n  lVar23 = *(long *)(param_1 + 0x220);\n  if (lVar23 != 0) {\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }\n  FUN_001268bf(param_1);\n  uVar15 = *(int *)(param_1 + 0x29c) + 1;\n  *(uint *)(param_1 + 0x29c) = uVar15;\n  if ((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)) {\n    png_write_flush(param_1);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00126d89(long param_1,long param_2)" (identifier "FUN_00126d89") (parameter_list "(long param_1,long param_2)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) () ")"))) (compound_statement "{\n  ulong uVar1;\n  undefined1 *puVar2;\n  byte bVar3;\n  byte bVar4;\n  int iVar5;\n  long lVar6;\n  ulong uVar7;\n  ulong uVar8;\n  byte *pbVar9;\n  ulong uVar10;\n  long lVar11;\n  int iVar12;\n  int iVar13;\n  ulong uVar14;\n  uint uVar15;\n  uint uVar16;\n  long lVar17;\n  uint uVar18;\n  uint uVar19;\n  undefined1 *puVar20;\n  long lVar21;\n  ulong uVar22;\n  long lVar23;\n  long local_58;\n  undefined1 *local_50;\n  \n  bVar4 = *(byte *)(param_1 + 0x266);\n  uVar1 = *(ulong *)(param_2 + 8);\n  uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3;\n  lVar23 = *(long *)(param_1 + 0x228);\n  if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }\n  else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }\n  if (bVar4 == 0x10) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  if (bVar4 == 0x80) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }\nLAB_00126e34:\n  FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);\n  lVar23 = *(long *)(param_1 + 0x220);\n  if (lVar23 != 0) {\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }\n  FUN_001268bf(param_1);\n  uVar15 = *(int *)(param_1 + 0x29c) + 1;\n  *(uint *)(param_1 + 0x29c) = uVar15;\n  if ((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)) {\n    png_write_flush(param_1);\n  }\n  return;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "undefined1 *puVar2;" (type_identifier "undefined1") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "ulong uVar10;" (type_identifier "ulong") (identifier "uVar10") (; ";")) (declaration "long lVar11;" (sized_type_specifier "long" (long "long")) (identifier "lVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "ulong uVar14;" (type_identifier "ulong") (identifier "uVar14") (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "long lVar17;" (sized_type_specifier "long" (long "long")) (identifier "lVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "uint uVar19;" (type_identifier "uint") (identifier "uVar19") (; ";")) (declaration "undefined1 *puVar20;" (type_identifier "undefined1") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "long lVar21;" (sized_type_specifier "long" (long "long")) (identifier "lVar21") (; ";")) (declaration "ulong uVar22;" (type_identifier "ulong") (identifier "uVar22") (; ";")) (declaration "long lVar23;" (sized_type_specifier "long" (long "long")) (identifier "lVar23") (; ";")) (declaration "long local_58;" (sized_type_specifier "long" (long "long")) (identifier "local_58") (; ";")) (declaration "undefined1 *local_50;" (type_identifier "undefined1") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (expression_statement "bVar4 = *(byte *)(param_1 + 0x266);" (assignment_expression "bVar4 = *(byte *)(param_1 + 0x266)" (identifier "bVar4") (= "=") (pointer_expression "*(byte *)(param_1 + 0x266)" (* "*") (cast_expression "(byte *)(param_1 + 0x266)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x266)" (( "(") (binary_expression "param_1 + 0x266" (identifier "param_1") (+ "+") (number_literal "0x266")) () ")"))))) (; ";")) (expression_statement "uVar1 = *(ulong *)(param_2 + 8);" (assignment_expression "uVar1 = *(ulong *)(param_2 + 8)" (identifier "uVar1") (= "=") (pointer_expression "*(ulong *)(param_2 + 8)" (* "*") (cast_expression "(ulong *)(param_2 + 8)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3;" (assignment_expression "uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3" (identifier "uVar15") (= "=") (binary_expression "(int)(*(byte *)(param_2 + 0x13) + 7) >> 3" (cast_expression "(int)(*(byte *)(param_2 + 0x13) + 7)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(*(byte *)(param_2 + 0x13) + 7)" (( "(") (binary_expression "*(byte *)(param_2 + 0x13) + 7" (pointer_expression "*(byte *)(param_2 + 0x13)" (* "*") (cast_expression "(byte *)(param_2 + 0x13)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x13)" (( "(") (binary_expression "param_2 + 0x13" (identifier "param_2") (+ "+") (number_literal "0x13")) () ")")))) (+ "+") (number_literal "7")) () ")"))) (>> ">>") (number_literal "3"))) (; ";")) (expression_statement "lVar23 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x228)" (identifier "lVar23") (= "=") (pointer_expression "*(long *)(param_1 + 0x228)" (* "*") (cast_expression "(long *)(param_1 + 0x228)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x228)" (( "(") (binary_expression "param_1 + 0x228" (identifier "param_1") (+ "+") (number_literal "0x228")) () ")"))))) (; ";")) (if_statement "if (uVar1 < 0x1ffffffffffffff) {\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }\n  else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }" (if "if") (parenthesized_expression "(uVar1 < 0x1ffffffffffffff)" (( "(") (binary_expression "uVar1 < 0x1ffffffffffffff" (identifier "uVar1") (< "<") (number_literal "0x1ffffffffffffff")) () ")")) (compound_statement "{\n    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }\n  }" ({ "{") (if_statement "if (((bVar4 & 8) == 0) || (bVar4 == 8)) {\n      uVar22 = 0xfffffffffffffeff;\n    }\n    else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }" (if "if") (parenthesized_expression "(((bVar4 & 8) == 0) || (bVar4 == 8))" (( "(") (binary_expression "((bVar4 & 8) == 0) || (bVar4 == 8)" (parenthesized_expression "((bVar4 & 8) == 0)" (( "(") (binary_expression "(bVar4 & 8) == 0" (parenthesized_expression "(bVar4 & 8)" (( "(") (binary_expression "bVar4 & 8" (identifier "bVar4") (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(bVar4 == 8)" (( "(") (binary_expression "bVar4 == 8" (identifier "bVar4") (== "==") (number_literal "8")) () ")"))) () ")")) (compound_statement "{\n      uVar22 = 0xfffffffffffffeff;\n    }" ({ "{") (expression_statement "uVar22 = 0xfffffffffffffeff;" (assignment_expression "uVar22 = 0xfffffffffffffeff" (identifier "uVar22") (= "=") (number_literal "0xfffffffffffffeff")) (; ";")) (} "}")) (else_clause "else {\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }" (else "else") (compound_statement "{\n      pbVar9 = (byte *)(lVar23 + 1);\n      uVar22 = uVar1;\n      if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }\n    }" ({ "{") (expression_statement "pbVar9 = (byte *)(lVar23 + 1);" (assignment_expression "pbVar9 = (byte *)(lVar23 + 1)" (identifier "pbVar9") (= "=") (cast_expression "(byte *)(lVar23 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 1)" (( "(") (binary_expression "lVar23 + 1" (identifier "lVar23") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar22 = uVar1;" (assignment_expression "uVar22 = uVar1" (identifier "uVar22") (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (uVar1 != 0) {\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }" (if "if") (parenthesized_expression "(uVar1 != 0)" (( "(") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar22 = 0;\n        do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));\n      }" ({ "{") (expression_statement "uVar22 = 0;" (assignment_expression "uVar22 = 0" (identifier "uVar22") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));" (do "do") (compound_statement "{\n          bVar3 = *pbVar9;\n          uVar7 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }\n          uVar22 = uVar22 + uVar7;\n          pbVar9 = pbVar9 + 1;\n        }" ({ "{") (expression_statement "bVar3 = *pbVar9;" (assignment_expression "bVar3 = *pbVar9" (identifier "bVar3") (= "=") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9"))) (; ";")) (expression_statement "uVar7 = (ulong)bVar3;" (assignment_expression "uVar7 = (ulong)bVar3" (identifier "uVar7") (= "=") (cast_expression "(ulong)bVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar3"))) (; ";")) (if_statement "if (0x7f < bVar3) {\n            uVar7 = (ulong)(0x100 - bVar3);\n          }" (if "if") (parenthesized_expression "(0x7f < bVar3)" (( "(") (binary_expression "0x7f < bVar3" (number_literal "0x7f") (< "<") (identifier "bVar3")) () ")")) (compound_statement "{\n            uVar7 = (ulong)(0x100 - bVar3);\n          }" ({ "{") (expression_statement "uVar7 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar7 = (ulong)(0x100 - bVar3)" (identifier "uVar7") (= "=") (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(0x100 - bVar3)" (( "(") (binary_expression "0x100 - bVar3" (number_literal "0x100") (- "-") (identifier "bVar3")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar22 = uVar22 + uVar7;" (assignment_expression "uVar22 = uVar22 + uVar7" (identifier "uVar22") (= "=") (binary_expression "uVar22 + uVar7" (identifier "uVar22") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar9 != (byte *)(lVar23 + 1 + uVar1))" (( "(") (binary_expression "pbVar9 != (byte *)(lVar23 + 1 + uVar1)" (identifier "pbVar9") (!= "!=") (cast_expression "(byte *)(lVar23 + 1 + uVar1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 1 + uVar1)" (( "(") (binary_expression "lVar23 + 1 + uVar1" (binary_expression "lVar23 + 1" (identifier "lVar23") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar1")) () ")")))) () ")")) (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }" (else "else") (compound_statement "{\n    bVar4 = bVar4 & -bVar4;\n    uVar22 = 0xfffffffffffffeff;\n  }" ({ "{") (expression_statement "bVar4 = bVar4 & -bVar4;" (assignment_expression "bVar4 = bVar4 & -bVar4" (identifier "bVar4") (= "=") (binary_expression "bVar4 & -bVar4" (identifier "bVar4") (& "&") (unary_expression "-bVar4" (- "-") (identifier "bVar4")))) (; ";")) (expression_statement "uVar22 = 0xfffffffffffffeff;" (assignment_expression "uVar22 = 0xfffffffffffffeff" (identifier "uVar22") (= "=") (number_literal "0xfffffffffffffeff")) (; ";")) (} "}")))) (if_statement "if (bVar4 == 0x10) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }\n  else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }" (if "if") (parenthesized_expression "(bVar4 == 0x10)" (( "(") (binary_expression "bVar4 == 0x10" (identifier "bVar4") (== "==") (number_literal "0x10")) () ")")) (compound_statement "{\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 1;\n    lVar21 = lVar23 + 1;\n    puVar20 = puVar2 + 1;\n    uVar7 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\nLAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }\n    if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined1 **)(param_1 + 0x230)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0x230)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (expression_statement "*puVar2 = 1;" (assignment_expression "*puVar2 = 1" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (number_literal "1")) (; ";")) (expression_statement "lVar21 = lVar23 + 1;" (assignment_expression "lVar21 = lVar23 + 1" (identifier "lVar21") (= "=") (binary_expression "lVar23 + 1" (identifier "lVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" (identifier "puVar20") (= "=") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar7 = (ulong)uVar15;" (assignment_expression "uVar7 = (ulong)uVar15" (identifier "uVar7") (= "=") (cast_expression "(ulong)uVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar15"))) (; ";")) (if_statement "if (uVar15 != 0) {\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }" (if "if") (parenthesized_expression "(uVar15 != 0)" (( "(") (binary_expression "uVar15 != 0" (identifier "uVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar10 = 0;\n      do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n    }" ({ "{") (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      } while (uVar10 != uVar7);" (do "do") (compound_statement "{\n        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);\n        uVar10 = uVar10 + 1;\n      }" ({ "{") (expression_statement "puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);" (assignment_expression "puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10)" (subscript_expression "puVar2[uVar10 + 1]" (identifier "puVar2") ([ "[") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1")) (] "]")) (= "=") (pointer_expression "*(undefined1 *)(lVar23 + 1 + uVar10)" (* "*") (cast_expression "(undefined1 *)(lVar23 + 1 + uVar10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 1 + uVar10)" (( "(") (binary_expression "lVar23 + 1 + uVar10" (binary_expression "lVar23 + 1" (identifier "lVar23") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar10")) () ")"))))) (; ";")) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar10 != uVar7)" (( "(") (binary_expression "uVar10 != uVar7" (identifier "uVar10") (!= "!=") (identifier "uVar7")) () ")")) (; ";")) (expression_statement "lVar21 = lVar21 + uVar7;" (assignment_expression "lVar21 = lVar21 + uVar7" (identifier "lVar21") (= "=") (binary_expression "lVar21 + uVar7" (identifier "lVar21") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "puVar20 = puVar20 + uVar7;" (assignment_expression "puVar20 = puVar20 + uVar7" (identifier "puVar20") (= "=") (binary_expression "puVar20 + uVar7" (identifier "puVar20") (+ "+") (identifier "uVar7"))) (; ";")) (} "}"))) (if_statement "if (uVar7 < uVar1) {\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }" (if "if") (parenthesized_expression "(uVar7 < uVar1)" (( "(") (binary_expression "uVar7 < uVar1" (identifier "uVar7") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n      lVar17 = 0;\n      do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);\n    }" ({ "{") (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" (identifier "lVar17") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      } while (uVar1 - uVar7 != lVar17);" (do "do") (compound_statement "{\n        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n        lVar17 = lVar17 + 1;\n      }" ({ "{") (expression_statement "puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);" (assignment_expression "puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17)" (subscript_expression "puVar20[lVar17]" (identifier "puVar20") ([ "[") (identifier "lVar17") (] "]")) (= "=") (binary_expression "*(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17)" (pointer_expression "*(char *)(lVar21 + lVar17)" (* "*") (cast_expression "(char *)(lVar21 + lVar17)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + lVar17)" (( "(") (binary_expression "lVar21 + lVar17" (identifier "lVar21") (+ "+") (identifier "lVar17")) () ")")))) (- "-") (pointer_expression "*(char *)(lVar23 + 1 + lVar17)" (* "*") (cast_expression "(char *)(lVar23 + 1 + lVar17)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 1 + lVar17)" (( "(") (binary_expression "lVar23 + 1 + lVar17" (binary_expression "lVar23 + 1" (identifier "lVar23") (+ "+") (number_literal "1")) (+ "+") (identifier "lVar17")) () ")")))))) (; ";")) (expression_statement "lVar17 = lVar17 + 1;" (assignment_expression "lVar17 = lVar17 + 1" (identifier "lVar17") (= "=") (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar1 - uVar7 != lVar17)" (( "(") (binary_expression "uVar1 - uVar7 != lVar17" (binary_expression "uVar1 - uVar7" (identifier "uVar1") (- "-") (identifier "uVar7")) (!= "!=") (identifier "lVar17")) () ")")) (; ";")) (} "}"))) (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" (identifier "lVar23") (= "=") (pointer_expression "*(long *)(param_1 + 0x230)" (* "*") (cast_expression "(long *)(param_1 + 0x230)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (labeled_statement "LAB_00126e0b:\n    if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }" (statement_identifier "LAB_00126e0b") (: ":") (if_statement "if (bVar4 == 0x40) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }" (if "if") (parenthesized_expression "(bVar4 == 0x40)" (( "(") (binary_expression "bVar4 == 0x40" (identifier "bVar4") (== "==") (number_literal "0x40")) () ")")) (compound_statement "{\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar23 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      lVar21 = lVar6 + 1;\n      if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }\n      lVar23 = *(long *)(param_1 + 0x230);\n      goto LAB_00126e34;\n    }" ({ "{") (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined1 **)(param_1 + 0x230)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0x230)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (expression_statement "*puVar2 = 3;" (assignment_expression "*puVar2 = 3" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (number_literal "3")) (; ";")) (expression_statement "lVar17 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x228)" (identifier "lVar17") (= "=") (pointer_expression "*(long *)(param_1 + 0x228)" (* "*") (cast_expression "(long *)(param_1 + 0x228)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x228)" (( "(") (binary_expression "param_1 + 0x228" (identifier "param_1") (+ "+") (number_literal "0x228")) () ")"))))) (; ";")) (expression_statement "lVar23 = lVar17 + 1;" (assignment_expression "lVar23 = lVar17 + 1" (identifier "lVar23") (= "=") (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" (identifier "puVar20") (= "=") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar6 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x220)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(param_1 + 0x220)" (* "*") (cast_expression "(long *)(param_1 + 0x220)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "lVar21 = lVar6 + 1;" (assignment_expression "lVar21 = lVar6 + 1" (identifier "lVar21") (= "=") (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar15 != 0) {\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" (if "if") (parenthesized_expression "(uVar15 != 0)" (( "(") (binary_expression "uVar15 != 0" (identifier "uVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        lVar11 = 1;\n        do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar23 = lVar23 + lVar6;\n        lVar21 = lVar21 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" ({ "{") (expression_statement "lVar11 = 1;" (assignment_expression "lVar11 = 1" (identifier "lVar11") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        } while ((ulong)(uVar15 - 1) + 2 != lVar11);" (do "do") (compound_statement "{\n          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          lVar11 = lVar11 + 1;\n        }" ({ "{") (expression_statement "puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);" (assignment_expression "puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1)" (subscript_expression "puVar2[lVar11]" (identifier "puVar2") ([ "[") (identifier "lVar11") (] "]")) (= "=") (binary_expression "*(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1)" (pointer_expression "*(char *)(lVar17 + lVar11)" (* "*") (cast_expression "(char *)(lVar17 + lVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + lVar11)" (( "(") (binary_expression "lVar17 + lVar11" (identifier "lVar17") (+ "+") (identifier "lVar11")) () ")")))) (- "-") (parenthesized_expression "(*(byte *)(lVar6 + lVar11) >> 1)" (( "(") (binary_expression "*(byte *)(lVar6 + lVar11) >> 1" (pointer_expression "*(byte *)(lVar6 + lVar11)" (* "*") (cast_expression "(byte *)(lVar6 + lVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + lVar11)" (( "(") (binary_expression "lVar6 + lVar11" (identifier "lVar6") (+ "+") (identifier "lVar11")) () ")")))) (>> ">>") (number_literal "1")) () ")")))) (; ";")) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + 1" (identifier "lVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((ulong)(uVar15 - 1) + 2 != lVar11)" (( "(") (binary_expression "(ulong)(uVar15 - 1) + 2 != lVar11" (binary_expression "(ulong)(uVar15 - 1) + 2" (call_expression "(ulong)(uVar15 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar15 - 1)" (( "(") (binary_expression "uVar15 - 1" (identifier "uVar15") (- "-") (number_literal "1")) () ")"))) (+ "+") (number_literal "2")) (!= "!=") (identifier "lVar11")) () ")")) (; ";")) (expression_statement "lVar6 = (ulong)(uVar15 - 1) + 1;" (assignment_expression "lVar6 = (ulong)(uVar15 - 1) + 1" (identifier "lVar6") (= "=") (binary_expression "(ulong)(uVar15 - 1) + 1" (call_expression "(ulong)(uVar15 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar15 - 1)" (( "(") (binary_expression "uVar15 - 1" (identifier "uVar15") (- "-") (number_literal "1")) () ")"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar23 = lVar23 + lVar6;" (assignment_expression "lVar23 = lVar23 + lVar6" (identifier "lVar23") (= "=") (binary_expression "lVar23 + lVar6" (identifier "lVar23") (+ "+") (identifier "lVar6"))) (; ";")) (expression_statement "lVar21 = lVar21 + lVar6;" (assignment_expression "lVar21 = lVar21 + lVar6" (identifier "lVar21") (= "=") (binary_expression "lVar21 + lVar6" (identifier "lVar21") (+ "+") (identifier "lVar6"))) (; ";")) (expression_statement "puVar20 = puVar20 + lVar6;" (assignment_expression "puVar20 = puVar20 + lVar6" (identifier "puVar20") (= "=") (binary_expression "puVar20 + lVar6" (identifier "puVar20") (+ "+") (identifier "lVar6"))) (; ";")) (} "}"))) (if_statement "if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }" (if "if") (parenthesized_expression "(uVar15 < uVar1)" (( "(") (binary_expression "uVar15 < uVar1" (identifier "uVar15") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n        lVar6 = 0;\n        do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);\n      }" ({ "{") (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" (identifier "lVar6") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        } while (uVar15 + 1 + iVar5 < uVar1);" (do "do") (compound_statement "{\n          puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);\n          iVar5 = (int)lVar6;\n          lVar6 = lVar6 + 1;\n        }" ({ "{") (expression_statement "puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1);" (assignment_expression "puVar20[lVar6] =\n               *(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1)" (subscript_expression "puVar20[lVar6]" (identifier "puVar20") ([ "[") (identifier "lVar6") (] "]")) (= "=") (binary_expression "*(char *)(lVar23 + lVar6) -\n               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1)" (pointer_expression "*(char *)(lVar23 + lVar6)" (* "*") (cast_expression "(char *)(lVar23 + lVar6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + lVar6)" (( "(") (binary_expression "lVar23 + lVar6" (identifier "lVar23") (+ "+") (identifier "lVar6")) () ")")))) (- "-") (cast_expression "(char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1)" (( "(") (binary_expression "(int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                     >> 1" (cast_expression "(int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))" (( "(") (binary_expression "(uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6)" (binary_expression "(uint)*(byte *)(lVar21 + lVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(lVar21 + lVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + lVar6)" (( "(") (binary_expression "lVar21 + lVar6" (identifier "lVar21") (+ "+") (identifier "lVar6")) () ")")))) (+ "+") (binary_expression "(uint)*(byte *)(lVar17 + 1 + lVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(lVar17 + 1 + lVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 1 + lVar6)" (( "(") (binary_expression "lVar17 + 1 + lVar6" (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1")) (+ "+") (identifier "lVar6")) () ")"))))) () ")"))) (>> ">>") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "iVar5 = (int)lVar6;" (assignment_expression "iVar5 = (int)lVar6" (identifier "iVar5") (= "=") (cast_expression "(int)lVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar6"))) (; ";")) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" (identifier "lVar6") (= "=") (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar15 + 1 + iVar5 < uVar1)" (( "(") (binary_expression "uVar15 + 1 + iVar5 < uVar1" (binary_expression "uVar15 + 1 + iVar5" (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1")) (+ "+") (identifier "iVar5")) (< "<") (identifier "uVar1")) () ")")) (; ";")) (} "}"))) (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" (identifier "lVar23") (= "=") (pointer_expression "*(long *)(param_1 + 0x230)" (* "*") (cast_expression "(long *)(param_1 + 0x230)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (goto_statement "goto LAB_00126e34;" (goto "goto") (statement_identifier "LAB_00126e34") (; ";")) (} "}")))) (if_statement "if ((bVar4 & 0x40) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }" (if "if") (parenthesized_expression "((bVar4 & 0x40) != 0)" (( "(") (binary_expression "(bVar4 & 0x40) != 0" (parenthesized_expression "(bVar4 & 0x40)" (( "(") (binary_expression "bVar4 & 0x40" (identifier "bVar4") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 3;\n      lVar17 = *(long *)(param_1 + 0x228);\n      lVar21 = lVar17 + 1;\n      puVar20 = puVar2 + 1;\n      lVar6 = *(long *)(param_1 + 0x220);\n      local_58 = lVar6 + 1;\n      if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }\n      if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }\n      if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }" ({ "{") (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined1 **)(param_1 + 0x230)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0x230)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (expression_statement "*puVar2 = 3;" (assignment_expression "*puVar2 = 3" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (number_literal "3")) (; ";")) (expression_statement "lVar17 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x228)" (identifier "lVar17") (= "=") (pointer_expression "*(long *)(param_1 + 0x228)" (* "*") (cast_expression "(long *)(param_1 + 0x228)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x228)" (( "(") (binary_expression "param_1 + 0x228" (identifier "param_1") (+ "+") (number_literal "0x228")) () ")"))))) (; ";")) (expression_statement "lVar21 = lVar17 + 1;" (assignment_expression "lVar21 = lVar17 + 1" (identifier "lVar21") (= "=") (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" (identifier "puVar20") (= "=") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar6 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x220)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(param_1 + 0x220)" (* "*") (cast_expression "(long *)(param_1 + 0x220)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "local_58 = lVar6 + 1;" (assignment_expression "local_58 = lVar6 + 1" (identifier "local_58") (= "=") (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar15 == 0) {\n        uVar7 = 0;\n      }\n      else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" (if "if") (parenthesized_expression "(uVar15 == 0)" (( "(") (binary_expression "uVar15 == 0" (identifier "uVar15") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar7 = 0;\n      }" ({ "{") (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" (else "else") (compound_statement "{\n        lVar11 = 1;\n        uVar7 = 0;\n        do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);\n        lVar6 = (ulong)(uVar15 - 1) + 1;\n        lVar21 = lVar21 + lVar6;\n        local_58 = local_58 + lVar6;\n        puVar20 = puVar20 + lVar6;\n      }" ({ "{") (expression_statement "lVar11 = 1;" (assignment_expression "lVar11 = 1" (identifier "lVar11") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        } while (lVar11 != (ulong)(uVar15 - 1) + 2);" (do "do") (compound_statement "{\n          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);\n          puVar2[lVar11] = bVar3;\n          uVar10 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }\n          uVar7 = uVar7 + uVar10;\n          lVar11 = lVar11 + 1;\n        }" ({ "{") (expression_statement "bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);" (assignment_expression "bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1)" (identifier "bVar3") (= "=") (binary_expression "*(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1)" (pointer_expression "*(char *)(lVar17 + lVar11)" (* "*") (cast_expression "(char *)(lVar17 + lVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + lVar11)" (( "(") (binary_expression "lVar17 + lVar11" (identifier "lVar17") (+ "+") (identifier "lVar11")) () ")")))) (- "-") (parenthesized_expression "(*(byte *)(lVar6 + lVar11) >> 1)" (( "(") (binary_expression "*(byte *)(lVar6 + lVar11) >> 1" (pointer_expression "*(byte *)(lVar6 + lVar11)" (* "*") (cast_expression "(byte *)(lVar6 + lVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + lVar11)" (( "(") (binary_expression "lVar6 + lVar11" (identifier "lVar6") (+ "+") (identifier "lVar11")) () ")")))) (>> ">>") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar2[lVar11] = bVar3;" (assignment_expression "puVar2[lVar11] = bVar3" (subscript_expression "puVar2[lVar11]" (identifier "puVar2") ([ "[") (identifier "lVar11") (] "]")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "uVar10 = (ulong)bVar3;" (assignment_expression "uVar10 = (ulong)bVar3" (identifier "uVar10") (= "=") (cast_expression "(ulong)bVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar3"))) (; ";")) (if_statement "if (0x7f < bVar3) {\n            uVar10 = (ulong)(0x100 - bVar3);\n          }" (if "if") (parenthesized_expression "(0x7f < bVar3)" (( "(") (binary_expression "0x7f < bVar3" (number_literal "0x7f") (< "<") (identifier "bVar3")) () ")")) (compound_statement "{\n            uVar10 = (ulong)(0x100 - bVar3);\n          }" ({ "{") (expression_statement "uVar10 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar10 = (ulong)(0x100 - bVar3)" (identifier "uVar10") (= "=") (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(0x100 - bVar3)" (( "(") (binary_expression "0x100 - bVar3" (number_literal "0x100") (- "-") (identifier "bVar3")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar7 = uVar7 + uVar10;" (assignment_expression "uVar7 = uVar7 + uVar10" (identifier "uVar7") (= "=") (binary_expression "uVar7 + uVar10" (identifier "uVar7") (+ "+") (identifier "uVar10"))) (; ";")) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + 1" (identifier "lVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar11 != (ulong)(uVar15 - 1) + 2)" (( "(") (binary_expression "lVar11 != (ulong)(uVar15 - 1) + 2" (identifier "lVar11") (!= "!=") (binary_expression "(ulong)(uVar15 - 1) + 2" (call_expression "(ulong)(uVar15 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar15 - 1)" (( "(") (binary_expression "uVar15 - 1" (identifier "uVar15") (- "-") (number_literal "1")) () ")"))) (+ "+") (number_literal "2"))) () ")")) (; ";")) (expression_statement "lVar6 = (ulong)(uVar15 - 1) + 1;" (assignment_expression "lVar6 = (ulong)(uVar15 - 1) + 1" (identifier "lVar6") (= "=") (binary_expression "(ulong)(uVar15 - 1) + 1" (call_expression "(ulong)(uVar15 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar15 - 1)" (( "(") (binary_expression "uVar15 - 1" (identifier "uVar15") (- "-") (number_literal "1")) () ")"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar21 = lVar21 + lVar6;" (assignment_expression "lVar21 = lVar21 + lVar6" (identifier "lVar21") (= "=") (binary_expression "lVar21 + lVar6" (identifier "lVar21") (+ "+") (identifier "lVar6"))) (; ";")) (expression_statement "local_58 = local_58 + lVar6;" (assignment_expression "local_58 = local_58 + lVar6" (identifier "local_58") (= "=") (binary_expression "local_58 + lVar6" (identifier "local_58") (+ "+") (identifier "lVar6"))) (; ";")) (expression_statement "puVar20 = puVar20 + lVar6;" (assignment_expression "puVar20 = puVar20 + lVar6" (identifier "puVar20") (= "=") (binary_expression "puVar20 + lVar6" (identifier "puVar20") (+ "+") (identifier "lVar6"))) (; ";")) (} "}")))) (if_statement "if (uVar15 < uVar1) {\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }" (if "if") (parenthesized_expression "(uVar15 < uVar1)" (( "(") (binary_expression "uVar15 < uVar1" (identifier "uVar15") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n        lVar6 = 0;\n        do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));\n      }" ({ "{") (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" (identifier "lVar6") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        } while ((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));" (do "do") (compound_statement "{\n          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);\n          puVar20[lVar6] = (char)uVar18;\n          uVar16 = uVar18 & 0xff;\n          if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }\n          uVar7 = uVar7 + uVar16;\n        }" ({ "{") (expression_statement "uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1);" (assignment_expression "uVar18 = (uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1)" (identifier "uVar18") (= "=") (binary_expression "(uint)*(byte *)(lVar21 + lVar6) -\n                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1)" (binary_expression "(uint)*(byte *)(lVar21 + lVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(lVar21 + lVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + lVar6)" (( "(") (binary_expression "lVar21 + lVar6" (identifier "lVar21") (+ "+") (identifier "lVar6")) () ")")))) (- "-") (parenthesized_expression "((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1)" (( "(") (binary_expression "(int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))\n                   >> 1" (cast_expression "(int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))" (( "(") (binary_expression "(uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6)" (binary_expression "(uint)*(byte *)(local_58 + lVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(local_58 + lVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_58 + lVar6)" (( "(") (binary_expression "local_58 + lVar6" (identifier "local_58") (+ "+") (identifier "lVar6")) () ")")))) (+ "+") (binary_expression "(uint)*(byte *)(lVar17 + 1 + lVar6)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(lVar17 + 1 + lVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 1 + lVar6)" (( "(") (binary_expression "lVar17 + 1 + lVar6" (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1")) (+ "+") (identifier "lVar6")) () ")"))))) () ")"))) (>> ">>") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar20[lVar6] = (char)uVar18;" (assignment_expression "puVar20[lVar6] = (char)uVar18" (subscript_expression "puVar20[lVar6]" (identifier "puVar20") ([ "[") (identifier "lVar6") (] "]")) (= "=") (cast_expression "(char)uVar18" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar18"))) (; ";")) (expression_statement "uVar16 = uVar18 & 0xff;" (assignment_expression "uVar16 = uVar18 & 0xff" (identifier "uVar16") (= "=") (binary_expression "uVar18 & 0xff" (identifier "uVar18") (& "&") (number_literal "0xff"))) (; ";")) (if_statement "if (0x7f < (uVar18 & 0xff)) {\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }" (if "if") (parenthesized_expression "(0x7f < (uVar18 & 0xff))" (( "(") (binary_expression "0x7f < (uVar18 & 0xff)" (number_literal "0x7f") (< "<") (parenthesized_expression "(uVar18 & 0xff)" (( "(") (binary_expression "uVar18 & 0xff" (identifier "uVar18") (& "&") (number_literal "0xff")) () ")"))) () ")")) (compound_statement "{\n            uVar16 = 0x100 - (uVar18 & 0xff);\n          }" ({ "{") (expression_statement "uVar16 = 0x100 - (uVar18 & 0xff);" (assignment_expression "uVar16 = 0x100 - (uVar18 & 0xff)" (identifier "uVar16") (= "=") (binary_expression "0x100 - (uVar18 & 0xff)" (number_literal "0x100") (- "-") (parenthesized_expression "(uVar18 & 0xff)" (( "(") (binary_expression "uVar18 & 0xff" (identifier "uVar18") (& "&") (number_literal "0xff")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar7 = uVar7 + uVar16;" (assignment_expression "uVar7 = uVar7 + uVar16" (identifier "uVar7") (= "=") (binary_expression "uVar7 + uVar16" (identifier "uVar7") (+ "+") (identifier "uVar16"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1))" (( "(") (binary_expression "(uVar7 <= uVar22) &&\n                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1)" (parenthesized_expression "(uVar7 <= uVar22)" (( "(") (binary_expression "uVar7 <= uVar22" (identifier "uVar7") (<= "<=") (identifier "uVar22")) () ")")) (&& "&&") (parenthesized_expression "(iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1)" (( "(") (comma_expression "iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1" (assignment_expression "iVar5 = (int)lVar6" (identifier "iVar5") (= "=") (cast_expression "(int)lVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar6"))) (, ",") (comma_expression "lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1" (assignment_expression "lVar6 = lVar6 + 1" (identifier "lVar6") (= "=") (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1"))) (, ",") (binary_expression "uVar15 + 1 + iVar5 < uVar1" (binary_expression "uVar15 + 1 + iVar5" (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1")) (+ "+") (identifier "iVar5")) (< "<") (identifier "uVar1")))) () ")"))) () ")")) (; ";")) (} "}"))) (if_statement "if (uVar7 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }" (if "if") (parenthesized_expression "(uVar7 < uVar22)" (( "(") (binary_expression "uVar7 < uVar22" (identifier "uVar7") (< "<") (identifier "uVar22")) () ")")) (compound_statement "{\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar7;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }" ({ "{") (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" (identifier "lVar23") (= "=") (pointer_expression "*(long *)(param_1 + 0x230)" (* "*") (cast_expression "(long *)(param_1 + 0x230)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (expression_statement "uVar22 = uVar7;" (assignment_expression "uVar22 = uVar7" (identifier "uVar22") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x238) != 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x238) != 0" (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }" ({ "{") (expression_statement "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);" (assignment_expression "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238)" (pointer_expression "*(long *)(param_1 + 0x230)" (* "*") (cast_expression "(long *)(param_1 + 0x230)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")")))) (= "=") (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")"))))) (; ";")) (expression_statement "*(long *)(param_1 + 0x238) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x238) = lVar23" (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")")))) (= "=") (identifier "lVar23")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }" (else "else") (compound_statement "{\n    if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }\n    if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 2;\n    lVar23 = *(long *)(param_1 + 0x228);\n    lVar21 = *(long *)(param_1 + 0x220);\n    if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }" ({ "{") (if_statement "if ((bVar4 & 0x10) != 0) {\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }" (if "if") (parenthesized_expression "((bVar4 & 0x10) != 0)" (( "(") (binary_expression "(bVar4 & 0x10) != 0" (parenthesized_expression "(bVar4 & 0x10)" (( "(") (binary_expression "bVar4 & 0x10" (identifier "bVar4") (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar2 = *(undefined1 **)(param_1 + 0x230);\n      *puVar2 = 1;\n      lVar21 = lVar23 + 1;\n      puVar20 = puVar2 + 1;\n      uVar7 = (ulong)uVar15;\n      uVar10 = uVar7;\n      if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }\n      if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }\n      if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }\n    }" ({ "{") (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined1 **)(param_1 + 0x230)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0x230)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (expression_statement "*puVar2 = 1;" (assignment_expression "*puVar2 = 1" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (number_literal "1")) (; ";")) (expression_statement "lVar21 = lVar23 + 1;" (assignment_expression "lVar21 = lVar23 + 1" (identifier "lVar21") (= "=") (binary_expression "lVar23 + 1" (identifier "lVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" (identifier "puVar20") (= "=") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar7 = (ulong)uVar15;" (assignment_expression "uVar7 = (ulong)uVar15" (identifier "uVar7") (= "=") (cast_expression "(ulong)uVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar10 = uVar7;" (assignment_expression "uVar10 = uVar7" (identifier "uVar10") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (uVar15 != 0) {\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }" (if "if") (parenthesized_expression "(uVar15 != 0)" (( "(") (binary_expression "uVar15 != 0" (identifier "uVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        uVar14 = 0;\n        uVar10 = 0;\n        do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);\n        lVar21 = lVar21 + uVar7;\n        puVar20 = puVar20 + uVar7;\n      }" ({ "{") (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        } while (uVar14 != uVar7);" (do "do") (compound_statement "{\n          bVar3 = *(byte *)(lVar23 + 1 + uVar14);\n          puVar2[uVar14 + 1] = bVar3;\n          uVar8 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar8;\n          uVar14 = uVar14 + 1;\n        }" ({ "{") (expression_statement "bVar3 = *(byte *)(lVar23 + 1 + uVar14);" (assignment_expression "bVar3 = *(byte *)(lVar23 + 1 + uVar14)" (identifier "bVar3") (= "=") (pointer_expression "*(byte *)(lVar23 + 1 + uVar14)" (* "*") (cast_expression "(byte *)(lVar23 + 1 + uVar14)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 1 + uVar14)" (( "(") (binary_expression "lVar23 + 1 + uVar14" (binary_expression "lVar23 + 1" (identifier "lVar23") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar14")) () ")"))))) (; ";")) (expression_statement "puVar2[uVar14 + 1] = bVar3;" (assignment_expression "puVar2[uVar14 + 1] = bVar3" (subscript_expression "puVar2[uVar14 + 1]" (identifier "puVar2") ([ "[") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1")) (] "]")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "uVar8 = (ulong)bVar3;" (assignment_expression "uVar8 = (ulong)bVar3" (identifier "uVar8") (= "=") (cast_expression "(ulong)bVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar3"))) (; ";")) (if_statement "if (0x7f < bVar3) {\n            uVar8 = (ulong)(0x100 - bVar3);\n          }" (if "if") (parenthesized_expression "(0x7f < bVar3)" (( "(") (binary_expression "0x7f < bVar3" (number_literal "0x7f") (< "<") (identifier "bVar3")) () ")")) (compound_statement "{\n            uVar8 = (ulong)(0x100 - bVar3);\n          }" ({ "{") (expression_statement "uVar8 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar8 = (ulong)(0x100 - bVar3)" (identifier "uVar8") (= "=") (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(0x100 - bVar3)" (( "(") (binary_expression "0x100 - bVar3" (number_literal "0x100") (- "-") (identifier "bVar3")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar10 = uVar10 + uVar8;" (assignment_expression "uVar10 = uVar10 + uVar8" (identifier "uVar10") (= "=") (binary_expression "uVar10 + uVar8" (identifier "uVar10") (+ "+") (identifier "uVar8"))) (; ";")) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar14 != uVar7)" (( "(") (binary_expression "uVar14 != uVar7" (identifier "uVar14") (!= "!=") (identifier "uVar7")) () ")")) (; ";")) (expression_statement "lVar21 = lVar21 + uVar7;" (assignment_expression "lVar21 = lVar21 + uVar7" (identifier "lVar21") (= "=") (binary_expression "lVar21 + uVar7" (identifier "lVar21") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "puVar20 = puVar20 + uVar7;" (assignment_expression "puVar20 = puVar20 + uVar7" (identifier "puVar20") (= "=") (binary_expression "puVar20 + uVar7" (identifier "puVar20") (+ "+") (identifier "uVar7"))) (; ";")) (} "}"))) (if_statement "if (uVar7 < uVar1) {\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }" (if "if") (parenthesized_expression "(uVar7 < uVar1)" (( "(") (binary_expression "uVar7 < uVar1" (identifier "uVar7") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n        lVar17 = 0;\n        do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));\n      }" ({ "{") (expression_statement "lVar17 = 0;" (assignment_expression "lVar17 = 0" (identifier "lVar17") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));" (do "do") (compound_statement "{\n          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);\n          puVar20[lVar17] = bVar3;\n          uVar14 = (ulong)bVar3;\n          if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }\n          uVar10 = uVar10 + uVar14;\n        }" ({ "{") (expression_statement "bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);" (assignment_expression "bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17)" (identifier "bVar3") (= "=") (binary_expression "*(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17)" (pointer_expression "*(char *)(lVar21 + lVar17)" (* "*") (cast_expression "(char *)(lVar21 + lVar17)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + lVar17)" (( "(") (binary_expression "lVar21 + lVar17" (identifier "lVar21") (+ "+") (identifier "lVar17")) () ")")))) (- "-") (pointer_expression "*(char *)(lVar23 + 1 + lVar17)" (* "*") (cast_expression "(char *)(lVar23 + 1 + lVar17)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 1 + lVar17)" (( "(") (binary_expression "lVar23 + 1 + lVar17" (binary_expression "lVar23 + 1" (identifier "lVar23") (+ "+") (number_literal "1")) (+ "+") (identifier "lVar17")) () ")")))))) (; ";")) (expression_statement "puVar20[lVar17] = bVar3;" (assignment_expression "puVar20[lVar17] = bVar3" (subscript_expression "puVar20[lVar17]" (identifier "puVar20") ([ "[") (identifier "lVar17") (] "]")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "uVar14 = (ulong)bVar3;" (assignment_expression "uVar14 = (ulong)bVar3" (identifier "uVar14") (= "=") (cast_expression "(ulong)bVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar3"))) (; ";")) (if_statement "if (0x7f < bVar3) {\n            uVar14 = (ulong)(0x100 - bVar3);\n          }" (if "if") (parenthesized_expression "(0x7f < bVar3)" (( "(") (binary_expression "0x7f < bVar3" (number_literal "0x7f") (< "<") (identifier "bVar3")) () ")")) (compound_statement "{\n            uVar14 = (ulong)(0x100 - bVar3);\n          }" ({ "{") (expression_statement "uVar14 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar14 = (ulong)(0x100 - bVar3)" (identifier "uVar14") (= "=") (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(0x100 - bVar3)" (( "(") (binary_expression "0x100 - bVar3" (number_literal "0x100") (- "-") (identifier "bVar3")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar10 = uVar10 + uVar14;" (assignment_expression "uVar10 = uVar10 + uVar14" (identifier "uVar10") (= "=") (binary_expression "uVar10 + uVar14" (identifier "uVar10") (+ "+") (identifier "uVar14"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7))" (( "(") (binary_expression "(uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7)" (parenthesized_expression "(uVar10 <= uVar22)" (( "(") (binary_expression "uVar10 <= uVar22" (identifier "uVar10") (<= "<=") (identifier "uVar22")) () ")")) (&& "&&") (parenthesized_expression "(lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7)" (( "(") (comma_expression "lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7" (assignment_expression "lVar17 = lVar17 + 1" (identifier "lVar17") (= "=") (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1"))) (, ",") (binary_expression "lVar17 != uVar1 - uVar7" (identifier "lVar17") (!= "!=") (binary_expression "uVar1 - uVar7" (identifier "uVar1") (- "-") (identifier "uVar7")))) () ")"))) () ")")) (; ";")) (} "}"))) (if_statement "if (uVar10 < uVar22) {\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }" (if "if") (parenthesized_expression "(uVar10 < uVar22)" (( "(") (binary_expression "uVar10 < uVar22" (identifier "uVar10") (< "<") (identifier "uVar22")) () ")")) (compound_statement "{\n        lVar23 = *(long *)(param_1 + 0x230);\n        uVar22 = uVar10;\n        if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }\n      }" ({ "{") (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" (identifier "lVar23") (= "=") (pointer_expression "*(long *)(param_1 + 0x230)" (* "*") (cast_expression "(long *)(param_1 + 0x230)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (expression_statement "uVar22 = uVar10;" (assignment_expression "uVar22 = uVar10" (identifier "uVar22") (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (*(long *)(param_1 + 0x238) != 0) {\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x238) != 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x238) != 0" (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n          *(long *)(param_1 + 0x238) = lVar23;\n        }" ({ "{") (expression_statement "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);" (assignment_expression "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238)" (pointer_expression "*(long *)(param_1 + 0x230)" (* "*") (cast_expression "(long *)(param_1 + 0x230)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")")))) (= "=") (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")"))))) (; ";")) (expression_statement "*(long *)(param_1 + 0x238) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x238) = lVar23" (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")")))) (= "=") (identifier "lVar23")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (if_statement "if (bVar4 != 0x20) {\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }" (if "if") (parenthesized_expression "(bVar4 != 0x20)" (( "(") (binary_expression "bVar4 != 0x20" (identifier "bVar4") (!= "!=") (number_literal "0x20")) () ")")) (compound_statement "{\n      if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }\n      goto LAB_00126e0b;\n    }" ({ "{") (if_statement "if ((bVar4 & 0x20) != 0) {\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }" (if "if") (parenthesized_expression "((bVar4 & 0x20) != 0)" (( "(") (binary_expression "(bVar4 & 0x20) != 0" (parenthesized_expression "(bVar4 & 0x20)" (( "(") (binary_expression "bVar4 & 0x20" (identifier "bVar4") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        puVar20 = *(undefined1 **)(param_1 + 0x230);\n        *puVar20 = 2;\n        lVar21 = *(long *)(param_1 + 0x228);\n        lVar17 = *(long *)(param_1 + 0x220);\n        uVar7 = uVar1;\n        if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }\n        if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }\n      }" ({ "{") (expression_statement "puVar20 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar20 = *(undefined1 **)(param_1 + 0x230)" (identifier "puVar20") (= "=") (pointer_expression "*(undefined1 **)(param_1 + 0x230)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0x230)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (expression_statement "*puVar20 = 2;" (assignment_expression "*puVar20 = 2" (pointer_expression "*puVar20" (* "*") (identifier "puVar20")) (= "=") (number_literal "2")) (; ";")) (expression_statement "lVar21 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar21 = *(long *)(param_1 + 0x228)" (identifier "lVar21") (= "=") (pointer_expression "*(long *)(param_1 + 0x228)" (* "*") (cast_expression "(long *)(param_1 + 0x228)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x228)" (( "(") (binary_expression "param_1 + 0x228" (identifier "param_1") (+ "+") (number_literal "0x228")) () ")"))))) (; ";")) (expression_statement "lVar17 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x220)" (identifier "lVar17") (= "=") (pointer_expression "*(long *)(param_1 + 0x220)" (* "*") (cast_expression "(long *)(param_1 + 0x220)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "uVar7 = uVar1;" (assignment_expression "uVar7 = uVar1" (identifier "uVar7") (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (uVar1 != 0) {\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }" (if "if") (parenthesized_expression "(uVar1 != 0)" (( "(") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar10 = 0;\n          uVar7 = 0;\n          do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));\n        }" ({ "{") (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));" (do "do") (compound_statement "{\n            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);\n            puVar20[uVar10 + 1] = bVar3;\n            uVar14 = (ulong)bVar3;\n            if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }\n            uVar7 = uVar7 + uVar14;\n          }" ({ "{") (expression_statement "bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);" (assignment_expression "bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10)" (identifier "bVar3") (= "=") (binary_expression "*(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10)" (pointer_expression "*(char *)(lVar21 + 1 + uVar10)" (* "*") (cast_expression "(char *)(lVar21 + 1 + uVar10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + 1 + uVar10)" (( "(") (binary_expression "lVar21 + 1 + uVar10" (binary_expression "lVar21 + 1" (identifier "lVar21") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar10")) () ")")))) (- "-") (pointer_expression "*(char *)(lVar17 + 1 + uVar10)" (* "*") (cast_expression "(char *)(lVar17 + 1 + uVar10)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 1 + uVar10)" (( "(") (binary_expression "lVar17 + 1 + uVar10" (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar10")) () ")")))))) (; ";")) (expression_statement "puVar20[uVar10 + 1] = bVar3;" (assignment_expression "puVar20[uVar10 + 1] = bVar3" (subscript_expression "puVar20[uVar10 + 1]" (identifier "puVar20") ([ "[") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1")) (] "]")) (= "=") (identifier "bVar3")) (; ";")) (expression_statement "uVar14 = (ulong)bVar3;" (assignment_expression "uVar14 = (ulong)bVar3" (identifier "uVar14") (= "=") (cast_expression "(ulong)bVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar3"))) (; ";")) (if_statement "if (0x7f < bVar3) {\n              uVar14 = (ulong)(0x100 - bVar3);\n            }" (if "if") (parenthesized_expression "(0x7f < bVar3)" (( "(") (binary_expression "0x7f < bVar3" (number_literal "0x7f") (< "<") (identifier "bVar3")) () ")")) (compound_statement "{\n              uVar14 = (ulong)(0x100 - bVar3);\n            }" ({ "{") (expression_statement "uVar14 = (ulong)(0x100 - bVar3);" (assignment_expression "uVar14 = (ulong)(0x100 - bVar3)" (identifier "uVar14") (= "=") (call_expression "(ulong)(0x100 - bVar3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(0x100 - bVar3)" (( "(") (binary_expression "0x100 - bVar3" (number_literal "0x100") (- "-") (identifier "bVar3")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar7 = uVar7 + uVar14;" (assignment_expression "uVar7 = uVar7 + uVar14" (identifier "uVar7") (= "=") (binary_expression "uVar7 + uVar14" (identifier "uVar7") (+ "+") (identifier "uVar14"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10))" (( "(") (binary_expression "(uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10)" (parenthesized_expression "(uVar7 <= uVar22)" (( "(") (binary_expression "uVar7 <= uVar22" (identifier "uVar7") (<= "<=") (identifier "uVar22")) () ")")) (&& "&&") (parenthesized_expression "(uVar10 = uVar10 + 1, uVar1 != uVar10)" (( "(") (comma_expression "uVar10 = uVar10 + 1, uVar1 != uVar10" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (, ",") (binary_expression "uVar1 != uVar10" (identifier "uVar1") (!= "!=") (identifier "uVar10"))) () ")"))) () ")")) (; ";")) (} "}"))) (if_statement "if (uVar7 < uVar22) {\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }" (if "if") (parenthesized_expression "(uVar7 < uVar22)" (( "(") (binary_expression "uVar7 < uVar22" (identifier "uVar7") (< "<") (identifier "uVar22")) () ")")) (compound_statement "{\n          lVar23 = *(long *)(param_1 + 0x230);\n          uVar22 = uVar7;\n          if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }\n        }" ({ "{") (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" (identifier "lVar23") (= "=") (pointer_expression "*(long *)(param_1 + 0x230)" (* "*") (cast_expression "(long *)(param_1 + 0x230)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (expression_statement "uVar22 = uVar7;" (assignment_expression "uVar22 = uVar7" (identifier "uVar22") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (*(long *)(param_1 + 0x238) != 0) {\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x238) != 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x238) != 0" (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n            *(long *)(param_1 + 0x238) = lVar23;\n          }" ({ "{") (expression_statement "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);" (assignment_expression "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238)" (pointer_expression "*(long *)(param_1 + 0x230)" (* "*") (cast_expression "(long *)(param_1 + 0x230)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")")))) (= "=") (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")"))))) (; ";")) (expression_statement "*(long *)(param_1 + 0x238) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x238) = lVar23" (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")")))) (= "=") (identifier "lVar23")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (goto_statement "goto LAB_00126e0b;" (goto "goto") (statement_identifier "LAB_00126e0b") (; ";")) (} "}"))) (expression_statement "puVar20 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar20 = *(undefined1 **)(param_1 + 0x230)" (identifier "puVar20") (= "=") (pointer_expression "*(undefined1 **)(param_1 + 0x230)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0x230)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (expression_statement "*puVar20 = 2;" (assignment_expression "*puVar20 = 2" (pointer_expression "*puVar20" (* "*") (identifier "puVar20")) (= "=") (number_literal "2")) (; ";")) (expression_statement "lVar23 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x228)" (identifier "lVar23") (= "=") (pointer_expression "*(long *)(param_1 + 0x228)" (* "*") (cast_expression "(long *)(param_1 + 0x228)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x228)" (( "(") (binary_expression "param_1 + 0x228" (identifier "param_1") (+ "+") (number_literal "0x228")) () ")"))))) (; ";")) (expression_statement "lVar21 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar21 = *(long *)(param_1 + 0x220)" (identifier "lVar21") (= "=") (pointer_expression "*(long *)(param_1 + 0x220)" (* "*") (cast_expression "(long *)(param_1 + 0x220)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (if_statement "if (uVar1 != 0) {\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }" (if "if") (parenthesized_expression "(uVar1 != 0)" (( "(") (binary_expression "uVar1 != 0" (identifier "uVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar7 = 0;\n      do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);\n    }" ({ "{") (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar1 != uVar7);" (do "do") (compound_statement "{\n        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      }" ({ "{") (expression_statement "puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);" (assignment_expression "puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7)" (subscript_expression "puVar20[uVar7 + 1]" (identifier "puVar20") ([ "[") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "*(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7)" (pointer_expression "*(char *)(lVar23 + 1 + uVar7)" (* "*") (cast_expression "(char *)(lVar23 + 1 + uVar7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + 1 + uVar7)" (( "(") (binary_expression "lVar23 + 1 + uVar7" (binary_expression "lVar23 + 1" (identifier "lVar23") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar7")) () ")")))) (- "-") (pointer_expression "*(char *)(lVar21 + 1 + uVar7)" (* "*") (cast_expression "(char *)(lVar21 + 1 + uVar7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + 1 + uVar7)" (( "(") (binary_expression "lVar21 + 1 + uVar7" (binary_expression "lVar21 + 1" (identifier "lVar21") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar7")) () ")")))))) (; ";")) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar1 != uVar7)" (( "(") (binary_expression "uVar1 != uVar7" (identifier "uVar1") (!= "!=") (identifier "uVar7")) () ")")) (; ";")) (} "}"))) (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" (identifier "lVar23") (= "=") (pointer_expression "*(long *)(param_1 + 0x230)" (* "*") (cast_expression "(long *)(param_1 + 0x230)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (bVar4 == 0x80) {\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }\n  else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(bVar4 == 0x80)" (( "(") (binary_expression "bVar4 == 0x80" (identifier "bVar4") (== "==") (number_literal "0x80")) () ")")) (compound_statement "{\n    puVar2 = *(undefined1 **)(param_1 + 0x230);\n    *puVar2 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar23 = lVar17 + 1;\n    puVar20 = puVar2 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    lVar21 = lVar6 + 1;\n    uVar22 = (ulong)uVar15;\n    if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }\n    if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }\n    lVar23 = *(long *)(param_1 + 0x230);\n  }" ({ "{") (expression_statement "puVar2 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar2 = *(undefined1 **)(param_1 + 0x230)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined1 **)(param_1 + 0x230)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0x230)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (expression_statement "*puVar2 = 4;" (assignment_expression "*puVar2 = 4" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (number_literal "4")) (; ";")) (expression_statement "lVar17 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x228)" (identifier "lVar17") (= "=") (pointer_expression "*(long *)(param_1 + 0x228)" (* "*") (cast_expression "(long *)(param_1 + 0x228)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x228)" (( "(") (binary_expression "param_1 + 0x228" (identifier "param_1") (+ "+") (number_literal "0x228")) () ")"))))) (; ";")) (expression_statement "lVar23 = lVar17 + 1;" (assignment_expression "lVar23 = lVar17 + 1" (identifier "lVar23") (= "=") (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar20 = puVar2 + 1;" (assignment_expression "puVar20 = puVar2 + 1" (identifier "puVar20") (= "=") (binary_expression "puVar2 + 1" (identifier "puVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar6 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x220)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(param_1 + 0x220)" (* "*") (cast_expression "(long *)(param_1 + 0x220)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "lVar21 = lVar6 + 1;" (assignment_expression "lVar21 = lVar6 + 1" (identifier "lVar21") (= "=") (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar22 = (ulong)uVar15;" (assignment_expression "uVar22 = (ulong)uVar15" (identifier "uVar22") (= "=") (cast_expression "(ulong)uVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar15"))) (; ";")) (if_statement "if (uVar15 != 0) {\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }" (if "if") (parenthesized_expression "(uVar15 != 0)" (( "(") (binary_expression "uVar15 != 0" (identifier "uVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar7 = 0;\n      do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);\n      lVar23 = lVar23 + uVar7;\n      lVar21 = lVar21 + uVar7;\n      puVar20 = puVar20 + uVar7;\n      uVar22 = uVar7;\n    }" ({ "{") (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" (identifier "uVar7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      } while (uVar22 != uVar7);" (do "do") (compound_statement "{\n        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);\n        uVar7 = uVar7 + 1;\n      }" ({ "{") (expression_statement "puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);" (assignment_expression "puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7)" (subscript_expression "puVar2[uVar7 + 1]" (identifier "puVar2") ([ "[") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1")) (] "]")) (= "=") (binary_expression "*(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7)" (pointer_expression "*(char *)(lVar17 + 1 + uVar7)" (* "*") (cast_expression "(char *)(lVar17 + 1 + uVar7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 1 + uVar7)" (( "(") (binary_expression "lVar17 + 1 + uVar7" (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar7")) () ")")))) (- "-") (pointer_expression "*(char *)(lVar6 + 1 + uVar7)" (* "*") (cast_expression "(char *)(lVar6 + 1 + uVar7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 1 + uVar7)" (( "(") (binary_expression "lVar6 + 1 + uVar7" (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar7")) () ")")))))) (; ";")) (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" (identifier "uVar7") (= "=") (binary_expression "uVar7 + 1" (identifier "uVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar22 != uVar7)" (( "(") (binary_expression "uVar22 != uVar7" (identifier "uVar22") (!= "!=") (identifier "uVar7")) () ")")) (; ";")) (expression_statement "lVar23 = lVar23 + uVar7;" (assignment_expression "lVar23 = lVar23 + uVar7" (identifier "lVar23") (= "=") (binary_expression "lVar23 + uVar7" (identifier "lVar23") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "lVar21 = lVar21 + uVar7;" (assignment_expression "lVar21 = lVar21 + uVar7" (identifier "lVar21") (= "=") (binary_expression "lVar21 + uVar7" (identifier "lVar21") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "puVar20 = puVar20 + uVar7;" (assignment_expression "puVar20 = puVar20 + uVar7" (identifier "puVar20") (= "=") (binary_expression "puVar20 + uVar7" (identifier "puVar20") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "uVar22 = uVar7;" (assignment_expression "uVar22 = uVar7" (identifier "uVar22") (= "=") (identifier "uVar7")) (; ";")) (} "}"))) (if_statement "if (uVar22 < uVar1) {\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }" (if "if") (parenthesized_expression "(uVar22 < uVar1)" (( "(") (binary_expression "uVar22 < uVar1" (identifier "uVar22") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n      lVar11 = 0;\n      do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);\n    }" ({ "{") (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" (identifier "lVar11") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      } while (uVar1 - uVar22 != lVar11);" (do "do") (compound_statement "{\n        bVar3 = *(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;\n        uVar16 = (uint)bVar4 - (uint)bVar3;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;\n        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }\n        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;\n        lVar11 = lVar11 + 1;\n      }" ({ "{") (expression_statement "bVar3 = *(byte *)(lVar6 + 1 + lVar11);" (assignment_expression "bVar3 = *(byte *)(lVar6 + 1 + lVar11)" (identifier "bVar3") (= "=") (pointer_expression "*(byte *)(lVar6 + 1 + lVar11)" (* "*") (cast_expression "(byte *)(lVar6 + 1 + lVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 1 + lVar11)" (( "(") (binary_expression "lVar6 + 1 + lVar11" (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1")) (+ "+") (identifier "lVar11")) () ")"))))) (; ";")) (expression_statement "bVar4 = *(byte *)(lVar17 + 1 + lVar11);" (assignment_expression "bVar4 = *(byte *)(lVar17 + 1 + lVar11)" (identifier "bVar4") (= "=") (pointer_expression "*(byte *)(lVar17 + 1 + lVar11)" (* "*") (cast_expression "(byte *)(lVar17 + 1 + lVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 1 + lVar11)" (( "(") (binary_expression "lVar17 + 1 + lVar11" (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1")) (+ "+") (identifier "lVar11")) () ")"))))) (; ";")) (expression_statement "uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;" (assignment_expression "uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3" (identifier "uVar15") (= "=") (binary_expression "(uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3" (binary_expression "(uint)*(byte *)(lVar21 + lVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(lVar21 + lVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + lVar11)" (( "(") (binary_expression "lVar21 + lVar11" (identifier "lVar21") (+ "+") (identifier "lVar11")) () ")")))) (- "-") (cast_expression "(uint)bVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar3")))) (; ";")) (expression_statement "uVar16 = (uint)bVar4 - (uint)bVar3;" (assignment_expression "uVar16 = (uint)bVar4 - (uint)bVar3" (identifier "uVar16") (= "=") (binary_expression "(uint)bVar4 - (uint)bVar3" (cast_expression "(uint)bVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar4")) (- "-") (cast_expression "(uint)bVar3" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar3")))) (; ";")) (expression_statement "iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);" (assignment_expression "iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f)" (identifier "iVar12") (= "=") (binary_expression "((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f)" (parenthesized_expression "((int)uVar15 >> 0x1f ^ uVar15)" (( "(") (binary_expression "(int)uVar15 >> 0x1f ^ uVar15" (binary_expression "(int)uVar15 >> 0x1f" (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15")) (>> ">>") (number_literal "0x1f")) (^ "^") (identifier "uVar15")) () ")")) (- "-") (parenthesized_expression "((int)uVar15 >> 0x1f)" (( "(") (binary_expression "(int)uVar15 >> 0x1f" (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);" (assignment_expression "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" (identifier "iVar13") (= "=") (binary_expression "((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" (parenthesized_expression "((int)uVar16 >> 0x1f ^ uVar16)" (( "(") (binary_expression "(int)uVar16 >> 0x1f ^ uVar16" (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x1f")) (^ "^") (identifier "uVar16")) () ")")) (- "-") (parenthesized_expression "((int)uVar16 >> 0x1f)" (( "(") (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar18 = (int)(uVar15 + uVar16) >> 0x1f;" (assignment_expression "uVar18 = (int)(uVar15 + uVar16) >> 0x1f" (identifier "uVar18") (= "=") (binary_expression "(int)(uVar15 + uVar16) >> 0x1f" (cast_expression "(int)(uVar15 + uVar16)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar15 + uVar16)" (( "(") (binary_expression "uVar15 + uVar16" (identifier "uVar15") (+ "+") (identifier "uVar16")) () ")"))) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;" (assignment_expression "iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18" (identifier "iVar5") (= "=") (binary_expression "(uVar15 + uVar16 ^ uVar18) - uVar18" (parenthesized_expression "(uVar15 + uVar16 ^ uVar18)" (( "(") (binary_expression "uVar15 + uVar16 ^ uVar18" (binary_expression "uVar15 + uVar16" (identifier "uVar15") (+ "+") (identifier "uVar16")) (^ "^") (identifier "uVar18")) () ")")) (- "-") (identifier "uVar18"))) (; ";")) (if_statement "if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }" (if "if") (parenthesized_expression "(((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5))" (( "(") (binary_expression "((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)" (parenthesized_expression "((iVar13 < iVar12) || (iVar5 < iVar12))" (( "(") (binary_expression "(iVar13 < iVar12) || (iVar5 < iVar12)" (parenthesized_expression "(iVar13 < iVar12)" (( "(") (binary_expression "iVar13 < iVar12" (identifier "iVar13") (< "<") (identifier "iVar12")) () ")")) (|| "||") (parenthesized_expression "(iVar5 < iVar12)" (( "(") (binary_expression "iVar5 < iVar12" (identifier "iVar5") (< "<") (identifier "iVar12")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(bVar4 = bVar3, iVar13 <= iVar5)" (( "(") (comma_expression "bVar4 = bVar3, iVar13 <= iVar5" (assignment_expression "bVar4 = bVar3" (identifier "bVar4") (= "=") (identifier "bVar3")) (, ",") (binary_expression "iVar13 <= iVar5" (identifier "iVar13") (<= "<=") (identifier "iVar5"))) () ")"))) () ")")) (compound_statement "{\n          bVar4 = *(byte *)(lVar21 + lVar11);\n        }" ({ "{") (expression_statement "bVar4 = *(byte *)(lVar21 + lVar11);" (assignment_expression "bVar4 = *(byte *)(lVar21 + lVar11)" (identifier "bVar4") (= "=") (pointer_expression "*(byte *)(lVar21 + lVar11)" (* "*") (cast_expression "(byte *)(lVar21 + lVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + lVar11)" (( "(") (binary_expression "lVar21 + lVar11" (identifier "lVar21") (+ "+") (identifier "lVar11")) () ")"))))) (; ";")) (} "}"))) (expression_statement "puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;" (assignment_expression "puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4" (subscript_expression "puVar20[lVar11]" (identifier "puVar20") ([ "[") (identifier "lVar11") (] "]")) (= "=") (binary_expression "*(char *)(lVar23 + lVar11) - bVar4" (pointer_expression "*(char *)(lVar23 + lVar11)" (* "*") (cast_expression "(char *)(lVar23 + lVar11)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar23 + lVar11)" (( "(") (binary_expression "lVar23 + lVar11" (identifier "lVar23") (+ "+") (identifier "lVar11")) () ")")))) (- "-") (identifier "bVar4"))) (; ";")) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + 1" (identifier "lVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar1 - uVar22 != lVar11)" (( "(") (binary_expression "uVar1 - uVar22 != lVar11" (binary_expression "uVar1 - uVar22" (identifier "uVar1") (- "-") (identifier "uVar22")) (!= "!=") (identifier "lVar11")) () ")")) (; ";")) (} "}"))) (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" (identifier "lVar23") (= "=") (pointer_expression "*(long *)(param_1 + 0x230)" (* "*") (cast_expression "(long *)(param_1 + 0x230)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (} "}")) (else_clause "else if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }" (else "else") (if_statement "if ((bVar4 & 0x80) != 0) {\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((bVar4 & 0x80) != 0)" (( "(") (binary_expression "(bVar4 & 0x80) != 0" (parenthesized_expression "(bVar4 & 0x80)" (( "(") (binary_expression "bVar4 & 0x80" (identifier "bVar4") (& "&") (number_literal "0x80")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    puVar20 = *(undefined1 **)(param_1 + 0x230);\n    *puVar20 = 4;\n    lVar17 = *(long *)(param_1 + 0x228);\n    lVar21 = lVar17 + 1;\n    local_50 = puVar20 + 1;\n    lVar6 = *(long *)(param_1 + 0x220);\n    local_58 = lVar6 + 1;\n    uVar7 = (ulong)uVar15;\n    uVar10 = uVar7;\n    if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }\n    if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }\n    if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }\n  }" ({ "{") (expression_statement "puVar20 = *(undefined1 **)(param_1 + 0x230);" (assignment_expression "puVar20 = *(undefined1 **)(param_1 + 0x230)" (identifier "puVar20") (= "=") (pointer_expression "*(undefined1 **)(param_1 + 0x230)" (* "*") (cast_expression "(undefined1 **)(param_1 + 0x230)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (expression_statement "*puVar20 = 4;" (assignment_expression "*puVar20 = 4" (pointer_expression "*puVar20" (* "*") (identifier "puVar20")) (= "=") (number_literal "4")) (; ";")) (expression_statement "lVar17 = *(long *)(param_1 + 0x228);" (assignment_expression "lVar17 = *(long *)(param_1 + 0x228)" (identifier "lVar17") (= "=") (pointer_expression "*(long *)(param_1 + 0x228)" (* "*") (cast_expression "(long *)(param_1 + 0x228)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x228)" (( "(") (binary_expression "param_1 + 0x228" (identifier "param_1") (+ "+") (number_literal "0x228")) () ")"))))) (; ";")) (expression_statement "lVar21 = lVar17 + 1;" (assignment_expression "lVar21 = lVar17 + 1" (identifier "lVar21") (= "=") (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_50 = puVar20 + 1;" (assignment_expression "local_50 = puVar20 + 1" (identifier "local_50") (= "=") (binary_expression "puVar20 + 1" (identifier "puVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar6 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar6 = *(long *)(param_1 + 0x220)" (identifier "lVar6") (= "=") (pointer_expression "*(long *)(param_1 + 0x220)" (* "*") (cast_expression "(long *)(param_1 + 0x220)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (expression_statement "local_58 = lVar6 + 1;" (assignment_expression "local_58 = lVar6 + 1" (identifier "local_58") (= "=") (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar7 = (ulong)uVar15;" (assignment_expression "uVar7 = (ulong)uVar15" (identifier "uVar7") (= "=") (cast_expression "(ulong)uVar15" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar10 = uVar7;" (assignment_expression "uVar10 = uVar7" (identifier "uVar10") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (uVar15 != 0) {\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }" (if "if") (parenthesized_expression "(uVar15 != 0)" (( "(") (binary_expression "uVar15 != 0" (identifier "uVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar14 = 0;\n      uVar10 = 0;\n      do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);\n      lVar21 = lVar21 + uVar7;\n      local_58 = local_58 + uVar7;\n      local_50 = local_50 + uVar7;\n    }" ({ "{") (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" (identifier "uVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      } while (uVar14 != uVar7);" (do "do") (compound_statement "{\n        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);\n        puVar20[uVar14 + 1] = bVar4;\n        uVar8 = (ulong)bVar4;\n        if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }\n        uVar10 = uVar10 + uVar8;\n        uVar14 = uVar14 + 1;\n      }" ({ "{") (expression_statement "bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);" (assignment_expression "bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14)" (identifier "bVar4") (= "=") (binary_expression "*(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14)" (pointer_expression "*(char *)(lVar17 + 1 + uVar14)" (* "*") (cast_expression "(char *)(lVar17 + 1 + uVar14)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 1 + uVar14)" (( "(") (binary_expression "lVar17 + 1 + uVar14" (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar14")) () ")")))) (- "-") (pointer_expression "*(char *)(lVar6 + 1 + uVar14)" (* "*") (cast_expression "(char *)(lVar6 + 1 + uVar14)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 1 + uVar14)" (( "(") (binary_expression "lVar6 + 1 + uVar14" (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1")) (+ "+") (identifier "uVar14")) () ")")))))) (; ";")) (expression_statement "puVar20[uVar14 + 1] = bVar4;" (assignment_expression "puVar20[uVar14 + 1] = bVar4" (subscript_expression "puVar20[uVar14 + 1]" (identifier "puVar20") ([ "[") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1")) (] "]")) (= "=") (identifier "bVar4")) (; ";")) (expression_statement "uVar8 = (ulong)bVar4;" (assignment_expression "uVar8 = (ulong)bVar4" (identifier "uVar8") (= "=") (cast_expression "(ulong)bVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar4"))) (; ";")) (if_statement "if (0x7f < bVar4) {\n          uVar8 = (ulong)(0x100 - bVar4);\n        }" (if "if") (parenthesized_expression "(0x7f < bVar4)" (( "(") (binary_expression "0x7f < bVar4" (number_literal "0x7f") (< "<") (identifier "bVar4")) () ")")) (compound_statement "{\n          uVar8 = (ulong)(0x100 - bVar4);\n        }" ({ "{") (expression_statement "uVar8 = (ulong)(0x100 - bVar4);" (assignment_expression "uVar8 = (ulong)(0x100 - bVar4)" (identifier "uVar8") (= "=") (call_expression "(ulong)(0x100 - bVar4)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(0x100 - bVar4)" (( "(") (binary_expression "0x100 - bVar4" (number_literal "0x100") (- "-") (identifier "bVar4")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar10 = uVar10 + uVar8;" (assignment_expression "uVar10 = uVar10 + uVar8" (identifier "uVar10") (= "=") (binary_expression "uVar10 + uVar8" (identifier "uVar10") (+ "+") (identifier "uVar8"))) (; ";")) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" (identifier "uVar14") (= "=") (binary_expression "uVar14 + 1" (identifier "uVar14") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar14 != uVar7)" (( "(") (binary_expression "uVar14 != uVar7" (identifier "uVar14") (!= "!=") (identifier "uVar7")) () ")")) (; ";")) (expression_statement "lVar21 = lVar21 + uVar7;" (assignment_expression "lVar21 = lVar21 + uVar7" (identifier "lVar21") (= "=") (binary_expression "lVar21 + uVar7" (identifier "lVar21") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "local_58 = local_58 + uVar7;" (assignment_expression "local_58 = local_58 + uVar7" (identifier "local_58") (= "=") (binary_expression "local_58 + uVar7" (identifier "local_58") (+ "+") (identifier "uVar7"))) (; ";")) (expression_statement "local_50 = local_50 + uVar7;" (assignment_expression "local_50 = local_50 + uVar7" (identifier "local_50") (= "=") (binary_expression "local_50 + uVar7" (identifier "local_50") (+ "+") (identifier "uVar7"))) (; ";")) (} "}"))) (if_statement "if (uVar7 < uVar1) {\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }" (if "if") (parenthesized_expression "(uVar7 < uVar1)" (( "(") (binary_expression "uVar7 < uVar1" (identifier "uVar7") (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n      lVar11 = 0;\n      do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));\n    }" ({ "{") (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" (identifier "lVar11") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));" (do "do") (compound_statement "{\n        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);\n        bVar4 = *(byte *)(lVar17 + 1 + lVar11);\n        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;\n        uVar16 = bVar4 - uVar18;\n        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);\n        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);\n        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;\n        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;\n        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }\n        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;\n        local_50[lVar11] = (char)uVar15;\n        uVar16 = uVar15 & 0xff;\n        if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }\n        uVar10 = uVar10 + uVar16;\n      }" ({ "{") (expression_statement "uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);" (assignment_expression "uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11)" (identifier "uVar18") (= "=") (binary_expression "(uint)*(byte *)(lVar6 + 1 + lVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(lVar6 + 1 + lVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 1 + lVar11)" (( "(") (binary_expression "lVar6 + 1 + lVar11" (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1")) (+ "+") (identifier "lVar11")) () ")"))))) (; ";")) (expression_statement "bVar4 = *(byte *)(lVar17 + 1 + lVar11);" (assignment_expression "bVar4 = *(byte *)(lVar17 + 1 + lVar11)" (identifier "bVar4") (= "=") (pointer_expression "*(byte *)(lVar17 + 1 + lVar11)" (* "*") (cast_expression "(byte *)(lVar17 + 1 + lVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 1 + lVar11)" (( "(") (binary_expression "lVar17 + 1 + lVar11" (binary_expression "lVar17 + 1" (identifier "lVar17") (+ "+") (number_literal "1")) (+ "+") (identifier "lVar11")) () ")"))))) (; ";")) (expression_statement "uVar15 = *(byte *)(local_58 + lVar11) - uVar18;" (assignment_expression "uVar15 = *(byte *)(local_58 + lVar11) - uVar18" (identifier "uVar15") (= "=") (binary_expression "*(byte *)(local_58 + lVar11) - uVar18" (pointer_expression "*(byte *)(local_58 + lVar11)" (* "*") (cast_expression "(byte *)(local_58 + lVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_58 + lVar11)" (( "(") (binary_expression "local_58 + lVar11" (identifier "local_58") (+ "+") (identifier "lVar11")) () ")")))) (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "uVar16 = bVar4 - uVar18;" (assignment_expression "uVar16 = bVar4 - uVar18" (identifier "uVar16") (= "=") (binary_expression "bVar4 - uVar18" (identifier "bVar4") (- "-") (identifier "uVar18"))) (; ";")) (expression_statement "iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);" (assignment_expression "iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f)" (identifier "iVar12") (= "=") (binary_expression "((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f)" (parenthesized_expression "((int)uVar15 >> 0x1f ^ uVar15)" (( "(") (binary_expression "(int)uVar15 >> 0x1f ^ uVar15" (binary_expression "(int)uVar15 >> 0x1f" (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15")) (>> ">>") (number_literal "0x1f")) (^ "^") (identifier "uVar15")) () ")")) (- "-") (parenthesized_expression "((int)uVar15 >> 0x1f)" (( "(") (binary_expression "(int)uVar15 >> 0x1f" (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);" (assignment_expression "iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" (identifier "iVar13") (= "=") (binary_expression "((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f)" (parenthesized_expression "((int)uVar16 >> 0x1f ^ uVar16)" (( "(") (binary_expression "(int)uVar16 >> 0x1f ^ uVar16" (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x1f")) (^ "^") (identifier "uVar16")) () ")")) (- "-") (parenthesized_expression "((int)uVar16 >> 0x1f)" (( "(") (binary_expression "(int)uVar16 >> 0x1f" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar19 = (int)(uVar15 + uVar16) >> 0x1f;" (assignment_expression "uVar19 = (int)(uVar15 + uVar16) >> 0x1f" (identifier "uVar19") (= "=") (binary_expression "(int)(uVar15 + uVar16) >> 0x1f" (cast_expression "(int)(uVar15 + uVar16)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar15 + uVar16)" (( "(") (binary_expression "uVar15 + uVar16" (identifier "uVar15") (+ "+") (identifier "uVar16")) () ")"))) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;" (assignment_expression "iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19" (identifier "iVar5") (= "=") (binary_expression "(uVar15 + uVar16 ^ uVar19) - uVar19" (parenthesized_expression "(uVar15 + uVar16 ^ uVar19)" (( "(") (binary_expression "uVar15 + uVar16 ^ uVar19" (binary_expression "uVar15 + uVar16" (identifier "uVar15") (+ "+") (identifier "uVar16")) (^ "^") (identifier "uVar19")) () ")")) (- "-") (identifier "uVar19"))) (; ";")) (if_statement "if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)) {\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }" (if "if") (parenthesized_expression "(((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5))" (( "(") (binary_expression "((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&\n           (uVar15 = uVar18, iVar13 <= iVar5)" (parenthesized_expression "((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12))" (( "(") (binary_expression "(iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)" (parenthesized_expression "(iVar13 < iVar12)" (( "(") (binary_expression "iVar13 < iVar12" (identifier "iVar13") (< "<") (identifier "iVar12")) () ")")) (|| "||") (parenthesized_expression "(uVar15 = (uint)bVar4, iVar5 < iVar12)" (( "(") (comma_expression "uVar15 = (uint)bVar4, iVar5 < iVar12" (assignment_expression "uVar15 = (uint)bVar4" (identifier "uVar15") (= "=") (cast_expression "(uint)bVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar4"))) (, ",") (binary_expression "iVar5 < iVar12" (identifier "iVar5") (< "<") (identifier "iVar12"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar15 = uVar18, iVar13 <= iVar5)" (( "(") (comma_expression "uVar15 = uVar18, iVar13 <= iVar5" (assignment_expression "uVar15 = uVar18" (identifier "uVar15") (= "=") (identifier "uVar18")) (, ",") (binary_expression "iVar13 <= iVar5" (identifier "iVar13") (<= "<=") (identifier "iVar5"))) () ")"))) () ")")) (compound_statement "{\n          uVar15 = (uint)*(byte *)(local_58 + lVar11);\n        }" ({ "{") (expression_statement "uVar15 = (uint)*(byte *)(local_58 + lVar11);" (assignment_expression "uVar15 = (uint)*(byte *)(local_58 + lVar11)" (identifier "uVar15") (= "=") (binary_expression "(uint)*(byte *)(local_58 + lVar11)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(local_58 + lVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_58 + lVar11)" (( "(") (binary_expression "local_58 + lVar11" (identifier "local_58") (+ "+") (identifier "lVar11")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;" (assignment_expression "uVar15 = *(byte *)(lVar21 + lVar11) - uVar15" (identifier "uVar15") (= "=") (binary_expression "*(byte *)(lVar21 + lVar11) - uVar15" (pointer_expression "*(byte *)(lVar21 + lVar11)" (* "*") (cast_expression "(byte *)(lVar21 + lVar11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar21 + lVar11)" (( "(") (binary_expression "lVar21 + lVar11" (identifier "lVar21") (+ "+") (identifier "lVar11")) () ")")))) (- "-") (identifier "uVar15"))) (; ";")) (expression_statement "local_50[lVar11] = (char)uVar15;" (assignment_expression "local_50[lVar11] = (char)uVar15" (subscript_expression "local_50[lVar11]" (identifier "local_50") ([ "[") (identifier "lVar11") (] "]")) (= "=") (cast_expression "(char)uVar15" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar15"))) (; ";")) (expression_statement "uVar16 = uVar15 & 0xff;" (assignment_expression "uVar16 = uVar15 & 0xff" (identifier "uVar16") (= "=") (binary_expression "uVar15 & 0xff" (identifier "uVar15") (& "&") (number_literal "0xff"))) (; ";")) (if_statement "if (0x7f < (uVar15 & 0xff)) {\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }" (if "if") (parenthesized_expression "(0x7f < (uVar15 & 0xff))" (( "(") (binary_expression "0x7f < (uVar15 & 0xff)" (number_literal "0x7f") (< "<") (parenthesized_expression "(uVar15 & 0xff)" (( "(") (binary_expression "uVar15 & 0xff" (identifier "uVar15") (& "&") (number_literal "0xff")) () ")"))) () ")")) (compound_statement "{\n          uVar16 = 0x100 - (uVar15 & 0xff);\n        }" ({ "{") (expression_statement "uVar16 = 0x100 - (uVar15 & 0xff);" (assignment_expression "uVar16 = 0x100 - (uVar15 & 0xff)" (identifier "uVar16") (= "=") (binary_expression "0x100 - (uVar15 & 0xff)" (number_literal "0x100") (- "-") (parenthesized_expression "(uVar15 & 0xff)" (( "(") (binary_expression "uVar15 & 0xff" (identifier "uVar15") (& "&") (number_literal "0xff")) () ")")))) (; ";")) (} "}"))) (expression_statement "uVar10 = uVar10 + uVar16;" (assignment_expression "uVar10 = uVar10 + uVar16" (identifier "uVar10") (= "=") (binary_expression "uVar10 + uVar16" (identifier "uVar10") (+ "+") (identifier "uVar16"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7))" (( "(") (binary_expression "(uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7)" (parenthesized_expression "(uVar10 <= uVar22)" (( "(") (binary_expression "uVar10 <= uVar22" (identifier "uVar10") (<= "<=") (identifier "uVar22")) () ")")) (&& "&&") (parenthesized_expression "(lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7)" (( "(") (comma_expression "lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7" (assignment_expression "lVar11 = lVar11 + 1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + 1" (identifier "lVar11") (+ "+") (number_literal "1"))) (, ",") (binary_expression "lVar11 != uVar1 - uVar7" (identifier "lVar11") (!= "!=") (binary_expression "uVar1 - uVar7" (identifier "uVar1") (- "-") (identifier "uVar7")))) () ")"))) () ")")) (; ";")) (} "}"))) (if_statement "if (uVar10 < uVar22) {\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }" (if "if") (parenthesized_expression "(uVar10 < uVar22)" (( "(") (binary_expression "uVar10 < uVar22" (identifier "uVar10") (< "<") (identifier "uVar22")) () ")")) (compound_statement "{\n      lVar23 = *(long *)(param_1 + 0x230);\n      if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }\n    }" ({ "{") (expression_statement "lVar23 = *(long *)(param_1 + 0x230);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x230)" (identifier "lVar23") (= "=") (pointer_expression "*(long *)(param_1 + 0x230)" (* "*") (cast_expression "(long *)(param_1 + 0x230)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")"))))) (; ";")) (if_statement "if (*(long *)(param_1 + 0x238) != 0) {\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x238) != 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x238) != 0" (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);\n        *(long *)(param_1 + 0x238) = lVar23;\n      }" ({ "{") (expression_statement "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);" (assignment_expression "*(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238)" (pointer_expression "*(long *)(param_1 + 0x230)" (* "*") (cast_expression "(long *)(param_1 + 0x230)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x230)" (( "(") (binary_expression "param_1 + 0x230" (identifier "param_1") (+ "+") (number_literal "0x230")) () ")")))) (= "=") (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")"))))) (; ";")) (expression_statement "*(long *)(param_1 + 0x238) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x238) = lVar23" (pointer_expression "*(long *)(param_1 + 0x238)" (* "*") (cast_expression "(long *)(param_1 + 0x238)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x238)" (( "(") (binary_expression "param_1 + 0x238" (identifier "param_1") (+ "+") (number_literal "0x238")) () ")")))) (= "=") (identifier "lVar23")) (; ";")) (} "}"))) (} "}"))) (} "}"))))) (labeled_statement "LAB_00126e34:\n  FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);" (statement_identifier "LAB_00126e34") (: ":") (expression_statement "FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);" (call_expression "FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0)" (identifier "FUN_00126469") (argument_list "(param_1,lVar23,*(long *)(param_2 + 8) + 1,0)" (( "(") (identifier "param_1") (, ",") (identifier "lVar23") (, ",") (binary_expression "*(long *)(param_2 + 8) + 1" (pointer_expression "*(long *)(param_2 + 8)" (* "*") (cast_expression "(long *)(param_2 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 8)" (( "(") (binary_expression "param_2 + 8" (identifier "param_2") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "1")) (, ",") (number_literal "0") () ")"))) (; ";"))) (expression_statement "lVar23 = *(long *)(param_1 + 0x220);" (assignment_expression "lVar23 = *(long *)(param_1 + 0x220)" (identifier "lVar23") (= "=") (pointer_expression "*(long *)(param_1 + 0x220)" (* "*") (cast_expression "(long *)(param_1 + 0x220)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")"))))) (; ";")) (if_statement "if (lVar23 != 0) {\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }" (if "if") (parenthesized_expression "(lVar23 != 0)" (( "(") (binary_expression "lVar23 != 0" (identifier "lVar23") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);\n    *(long *)(param_1 + 0x228) = lVar23;\n  }" ({ "{") (expression_statement "*(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);" (assignment_expression "*(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228)" (pointer_expression "*(undefined8 *)(param_1 + 0x220)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x220)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x220)" (( "(") (binary_expression "param_1 + 0x220" (identifier "param_1") (+ "+") (number_literal "0x220")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)(param_1 + 0x228)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x228)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x228)" (( "(") (binary_expression "param_1 + 0x228" (identifier "param_1") (+ "+") (number_literal "0x228")) () ")"))))) (; ";")) (expression_statement "*(long *)(param_1 + 0x228) = lVar23;" (assignment_expression "*(long *)(param_1 + 0x228) = lVar23" (pointer_expression "*(long *)(param_1 + 0x228)" (* "*") (cast_expression "(long *)(param_1 + 0x228)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x228)" (( "(") (binary_expression "param_1 + 0x228" (identifier "param_1") (+ "+") (number_literal "0x228")) () ")")))) (= "=") (identifier "lVar23")) (; ";")) (} "}"))) (expression_statement "FUN_001268bf(param_1);" (call_expression "FUN_001268bf(param_1)" (identifier "FUN_001268bf") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "uVar15 = *(int *)(param_1 + 0x29c) + 1;" (assignment_expression "uVar15 = *(int *)(param_1 + 0x29c) + 1" (identifier "uVar15") (= "=") (binary_expression "*(int *)(param_1 + 0x29c) + 1" (pointer_expression "*(int *)(param_1 + 0x29c)" (* "*") (cast_expression "(int *)(param_1 + 0x29c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x29c)" (( "(") (binary_expression "param_1 + 0x29c" (identifier "param_1") (+ "+") (number_literal "0x29c")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x29c) = uVar15;" (assignment_expression "*(uint *)(param_1 + 0x29c) = uVar15" (pointer_expression "*(uint *)(param_1 + 0x29c)" (* "*") (cast_expression "(uint *)(param_1 + 0x29c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x29c)" (( "(") (binary_expression "param_1 + 0x29c" (identifier "param_1") (+ "+") (number_literal "0x29c")) () ")")))) (= "=") (identifier "uVar15")) (; ";")) (if_statement "if ((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)) {\n    png_write_flush(param_1);\n  }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0))" (( "(") (binary_expression "(*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)" (parenthesized_expression "(*(uint *)(param_1 + 0x298) <= uVar15)" (( "(") (binary_expression "*(uint *)(param_1 + 0x298) <= uVar15" (pointer_expression "*(uint *)(param_1 + 0x298)" (* "*") (cast_expression "(uint *)(param_1 + 0x298)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (<= "<=") (identifier "uVar15")) () ")")) (&& "&&") (parenthesized_expression "(*(uint *)(param_1 + 0x298) != 0)" (( "(") (binary_expression "*(uint *)(param_1 + 0x298) != 0" (pointer_expression "*(uint *)(param_1 + 0x298)" (* "*") (cast_expression "(uint *)(param_1 + 0x298)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x298)" (( "(") (binary_expression "param_1 + 0x298" (identifier "param_1") (+ "+") (number_literal "0x298")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    png_write_flush(param_1);\n  }" ({ "{") (expression_statement "png_write_flush(param_1);" (call_expression "png_write_flush(param_1)" (identifier "png_write_flush") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 png_ptr,type_2 row_info)

{
  type_3 var_1;
  type_4 var_14;
  type_4 var_16;
  type_4 var_15;
  type_5 var_4;
  type_5 var_2;
  int var_18;
  type_3 var_6;
  type_3 var_23;
  type_5 *var_7;
  type_3 var_10;
  long var_13;
  int var_25;
  type_6 var_3;
  int var_24;
  type_3 var_22;
  type_7 var_9;
  type_7 var_19;
  type_7 var_21;
  type_7 var_27;
  type_6 var_11;
  type_4 var_8;
  type_4 var_17;
  type_4 var_12;
  type_3 var_5;
  type_4 var_20;
  type_4 var_26;
  
  var_2 = png_ptr->do_filter;
  var_1 = row_info->rowbytes;
  var_9 = (int)(row_info->pixel_depth + 7) >> 3;
  var_3 = png_ptr->row_buf;
  if (var_1 < 0x1ffffffffffffff) {
    if (((var_2 & 8) == 0) || (var_2 == 8)) {
      var_5 = 0xfffffffffffffeff;
    }
    else {
      var_7 = var_3 + 1;
      var_5 = var_1;
      if (var_1 != 0) {
        var_5 = 0;
        do {
          var_4 = *var_7;
          var_6 = (type_3)var_4;
          if (0x7f < var_4) {
            var_6 = (type_3)(0x100 - var_4);
          }
          var_5 = var_5 + var_6;
          var_7 = var_7 + 1;
        } while (var_7 != var_3 + var_1 + 1);
      }
    }
  }
  else {
    var_2 = var_2 & -var_2;
    var_5 = 0xfffffffffffffeff;
  }
  if (var_2 == 0x10) {
    var_8 = png_ptr->try_row;
    *var_8 = '\x01';
    var_11 = var_3 + 1;
    var_12 = var_8 + 1;
    var_6 = (type_3)var_9;
    if (var_9 != 0) {
      var_10 = 0;
      do {
        var_8[var_10 + 1] = var_3[var_10 + 1];
        var_10 = var_10 + 1;
      } while (var_10 != var_6);
      var_11 = var_11 + var_6;
      var_12 = var_12 + var_6;
    }
    if (var_6 < var_1) {
      var_13 = 0;
      do {
        var_12[var_13] = var_11[var_13] - var_3[var_13 + 1];
        var_13 = var_13 + 1;
      } while (var_1 - var_6 != var_13);
    }
    var_3 = png_ptr->try_row;
LAB_00126e0b:
    if (var_2 == 0x40) {
      var_15 = png_ptr->try_row;
      *var_15 = '\x03';
      var_14 = png_ptr->row_buf;
      var_12 = var_14 + 1;
      var_8 = var_15 + 1;
      var_16 = png_ptr->prev_row;
      var_17 = var_16 + 1;
      if (var_9 != 0) {
        var_13 = 1;
        do {
          var_15[var_13] = var_14[var_13] - (var_16[var_13] >> 1);
          var_13 = var_13 + 1;
        } while ((type_3)(var_9 - 1) + 2 != var_13);
        var_13 = (type_3)(var_9 - 1) + 1;
        var_12 = var_12 + var_13;
        var_17 = var_17 + var_13;
        var_8 = var_8 + var_13;
      }
      if (var_9 < var_1) {
        var_13 = 0;
        do {
          var_8[var_13] =
               var_12[var_13] -
               (char)((int)((type_7)var_17[var_13] + (type_7)var_14[var_13 + 1]) >> 1);
          var_18 = (int)var_13;
          var_13 = var_13 + 1;
        } while (var_9 + 1 + var_18 < var_1);
      }
      var_3 = png_ptr->try_row;
      goto LAB_00126e34;
    }
    if ((var_2 & 0x40) != 0) {
      var_17 = png_ptr->try_row;
      *var_17 = '\x03';
      var_15 = png_ptr->row_buf;
      var_12 = var_15 + 1;
      var_8 = var_17 + 1;
      var_14 = png_ptr->prev_row;
      var_20 = var_14 + 1;
      if (var_9 == 0) {
        var_6 = 0;
      }
      else {
        var_13 = 1;
        var_6 = 0;
        do {
          var_4 = var_15[var_13] - (var_14[var_13] >> 1);
          var_17[var_13] = var_4;
          var_19 = (type_7)var_4;
          if (0x7f < var_4) {
            var_19 = 0x100 - var_4;
          }
          var_6 = var_6 + var_19;
          var_13 = var_13 + 1;
        } while (var_13 != (type_3)(var_9 - 1) + 2);
        var_13 = (type_3)(var_9 - 1) + 1;
        var_12 = var_12 + var_13;
        var_20 = var_20 + var_13;
        var_8 = var_8 + var_13;
      }
      if (var_9 < var_1) {
        var_13 = 0;
        do {
          var_21 = (type_7)var_12[var_13] -
                   ((int)((type_7)var_20[var_13] + (type_7)var_15[var_13 + 1]) >> 1);
          var_8[var_13] = (type_8)var_21;
          var_19 = var_21 & 0xff;
          if (0x7f < (var_21 & 0xff)) {
            var_19 = 0x100 - (var_21 & 0xff);
          }
          var_6 = var_6 + var_19;
        } while ((var_6 <= var_5) &&
                (var_18 = (int)var_13, var_13 = var_13 + 1, var_9 + 1 + var_18 < var_1));
      }
      if (var_6 < var_5) {
        var_3 = png_ptr->try_row;
        var_5 = var_6;
        if (png_ptr->tst_row != (type_4)0x0) {
          png_ptr->try_row = png_ptr->tst_row;
          png_ptr->tst_row = var_3;
        }
      }
    }
  }
  else {
    if ((var_2 & 0x10) != 0) {
      var_8 = png_ptr->try_row;
      *var_8 = '\x01';
      var_11 = var_3 + 1;
      var_12 = var_8 + 1;
      var_6 = (type_3)var_9;
      var_10 = var_6;
      if (var_9 != 0) {
        var_22 = 0;
        var_10 = 0;
        do {
          var_4 = var_3[var_22 + 1];
          var_8[var_22 + 1] = var_4;
          var_23 = (type_3)var_4;
          if (0x7f < var_4) {
            var_23 = (type_3)(0x100 - var_4);
          }
          var_10 = var_10 + var_23;
          var_22 = var_22 + 1;
        } while (var_22 != var_6);
        var_11 = var_11 + var_6;
        var_12 = var_12 + var_6;
      }
      if (var_6 < var_1) {
        var_13 = 0;
        do {
          var_4 = var_11[var_13] - var_3[var_13 + 1];
          var_12[var_13] = var_4;
          var_22 = (type_3)var_4;
          if (0x7f < var_4) {
            var_22 = (type_3)(0x100 - var_4);
          }
          var_10 = var_10 + var_22;
        } while ((var_10 <= var_5) && (var_13 = var_13 + 1, var_13 != var_1 - var_6));
      }
      if (var_10 < var_5) {
        var_3 = png_ptr->try_row;
        var_5 = var_10;
        if (png_ptr->tst_row != (type_4)0x0) {
          png_ptr->try_row = png_ptr->tst_row;
          png_ptr->tst_row = var_3;
        }
      }
    }
    if (var_2 != 0x20) {
      if ((var_2 & 0x20) != 0) {
        var_12 = png_ptr->try_row;
        *var_12 = '\x02';
        var_8 = png_ptr->row_buf;
        var_17 = png_ptr->prev_row;
        var_6 = var_1;
        if (var_1 != 0) {
          var_10 = 0;
          var_6 = 0;
          do {
            var_4 = var_8[var_10 + 1] - var_17[var_10 + 1];
            var_12[var_10 + 1] = var_4;
            var_22 = (type_3)var_4;
            if (0x7f < var_4) {
              var_22 = (type_3)(0x100 - var_4);
            }
            var_6 = var_6 + var_22;
          } while ((var_6 <= var_5) && (var_10 = var_10 + 1, var_1 != var_10));
        }
        if (var_6 < var_5) {
          var_3 = png_ptr->try_row;
          var_5 = var_6;
          if (png_ptr->tst_row != (type_4)0x0) {
            png_ptr->try_row = png_ptr->tst_row;
            png_ptr->tst_row = var_3;
          }
        }
      }
      goto LAB_00126e0b;
    }
    var_12 = png_ptr->try_row;
    *var_12 = '\x02';
    var_8 = png_ptr->row_buf;
    var_17 = png_ptr->prev_row;
    if (var_1 != 0) {
      var_6 = 0;
      do {
        var_12[var_6 + 1] = var_8[var_6 + 1] - var_17[var_6 + 1];
        var_6 = var_6 + 1;
      } while (var_1 != var_6);
    }
    var_3 = png_ptr->try_row;
  }
  if (var_2 == 0x80) {
    var_15 = png_ptr->try_row;
    *var_15 = '\x04';
    var_14 = png_ptr->row_buf;
    var_12 = var_14 + 1;
    var_8 = var_15 + 1;
    var_16 = png_ptr->prev_row;
    var_17 = var_16 + 1;
    var_5 = (type_3)var_9;
    if (var_9 != 0) {
      var_6 = 0;
      do {
        var_15[var_6 + 1] = var_14[var_6 + 1] - var_16[var_6 + 1];
        var_6 = var_6 + 1;
      } while (var_5 != var_6);
      var_12 = var_12 + var_6;
      var_17 = var_17 + var_6;
      var_8 = var_8 + var_6;
      var_5 = var_6;
    }
    if (var_5 < var_1) {
      var_13 = 0;
      do {
        var_2 = var_16[var_13 + 1];
        var_9 = (type_7)var_17[var_13] - (type_7)var_2;
        var_19 = (type_7)var_14[var_13 + 1] - (type_7)var_2;
        var_25 = ((int)var_9 >> 0x1f ^ var_9) - ((int)var_9 >> 0x1f);
        var_24 = ((int)var_19 >> 0x1f ^ var_19) - ((int)var_19 >> 0x1f);
        var_21 = (int)(var_9 + var_19) >> 0x1f;
        var_18 = (var_9 + var_19 ^ var_21) - var_21;
        if (((var_24 < var_25) || (var_4 = var_14[var_13 + 1], var_18 < var_25)) &&
           (var_4 = var_2, var_24 <= var_18)) {
          var_4 = var_17[var_13];
        }
        var_8[var_13] = var_12[var_13] - var_4;
        var_13 = var_13 + 1;
      } while (var_1 - var_5 != var_13);
    }
    var_3 = png_ptr->try_row;
  }
  else if ((var_2 & 0x80) != 0) {
    var_8 = png_ptr->try_row;
    *var_8 = '\x04';
    var_17 = png_ptr->row_buf;
    var_12 = var_17 + 1;
    var_26 = var_8 + 1;
    var_15 = png_ptr->prev_row;
    var_20 = var_15 + 1;
    var_6 = (type_3)var_9;
    var_10 = var_6;
    if (var_9 != 0) {
      var_22 = 0;
      var_10 = 0;
      do {
        var_2 = var_17[var_22 + 1] - var_15[var_22 + 1];
        var_8[var_22 + 1] = var_2;
        var_23 = (type_3)var_2;
        if (0x7f < var_2) {
          var_23 = (type_3)(0x100 - var_2);
        }
        var_10 = var_10 + var_23;
        var_22 = var_22 + 1;
      } while (var_22 != var_6);
      var_12 = var_12 + var_6;
      var_20 = var_20 + var_6;
      var_26 = var_26 + var_6;
    }
    if (var_6 < var_1) {
      var_13 = 0;
      do {
        var_21 = (type_7)var_15[var_13 + 1];
        var_9 = var_20[var_13] - var_21;
        var_19 = var_17[var_13 + 1] - var_21;
        var_25 = ((int)var_9 >> 0x1f ^ var_9) - ((int)var_9 >> 0x1f);
        var_24 = ((int)var_19 >> 0x1f ^ var_19) - ((int)var_19 >> 0x1f);
        var_27 = (int)(var_9 + var_19) >> 0x1f;
        var_18 = (var_9 + var_19 ^ var_27) - var_27;
        if (((var_24 < var_25) || (var_9 = (type_7)var_17[var_13 + 1], var_18 < var_25)) &&
           (var_9 = var_21, var_24 <= var_18)) {
          var_9 = (type_7)var_20[var_13];
        }
        var_9 = var_12[var_13] - var_9;
        var_26[var_13] = (type_8)var_9;
        var_19 = var_9 & 0xff;
        if (0x7f < (var_9 & 0xff)) {
          var_19 = 0x100 - (var_9 & 0xff);
        }
        var_10 = var_10 + var_19;
      } while ((var_10 <= var_5) && (var_13 = var_13 + 1, var_13 != var_1 - var_6));
    }
    if (var_10 < var_5) {
      var_3 = png_ptr->try_row;
      if (png_ptr->tst_row != (type_4)0x0) {
        png_ptr->try_row = png_ptr->tst_row;
        png_ptr->tst_row = var_3;
      }
    }
  }
LAB_00126e34:
  var_28(png_ptr,var_3,row_info->rowbytes + 1,0);
  var_12 = png_ptr->prev_row;
  if (var_12 != (type_4)0x0) {
    png_ptr->prev_row = png_ptr->row_buf;
    png_ptr->row_buf = var_12;
  }
  var_29(png_ptr);
  var_9 = png_ptr->flush_rows + 1;
  png_ptr->flush_rows = var_9;
  if ((png_ptr->flush_dist <= var_9) && (png_ptr->flush_dist != 0)) {
    var_30(png_ptr);
  }
  return;
}


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

void MASKED(long param_1,long param_2)

{
  ulong uVar1;
  undefined1 *puVar2;
  byte bVar3;
  byte bVar4;
  int iVar5;
  long lVar6;
  ulong uVar7;
  ulong uVar8;
  byte *pbVar9;
  ulong uVar10;
  long lVar11;
  int iVar12;
  int iVar13;
  ulong uVar14;
  uint uVar15;
  uint uVar16;
  long lVar17;
  uint uVar18;
  uint uVar19;
  undefined1 *puVar20;
  long lVar21;
  ulong uVar22;
  long lVar23;
  long local_58;
  undefined1 *local_50;
  
  bVar4 = *(byte *)(param_1 + 0x266);
  uVar1 = *(ulong *)(param_2 + 8);
  uVar15 = (int)(*(byte *)(param_2 + 0x13) + 7) >> 3;
  lVar23 = *(long *)(param_1 + 0x228);
  if (uVar1 < 0x1ffffffffffffff) {
    if (((bVar4 & 8) == 0) || (bVar4 == 8)) {
      uVar22 = 0xfffffffffffffeff;
    }
    else {
      pbVar9 = (byte *)(lVar23 + 1);
      uVar22 = uVar1;
      if (uVar1 != 0) {
        uVar22 = 0;
        do {
          bVar3 = *pbVar9;
          uVar7 = (ulong)bVar3;
          if (0x7f < bVar3) {
            uVar7 = (ulong)(0x100 - bVar3);
          }
          uVar22 = uVar22 + uVar7;
          pbVar9 = pbVar9 + 1;
        } while (pbVar9 != (byte *)(lVar23 + 1 + uVar1));
      }
    }
  }
  else {
    bVar4 = bVar4 & -bVar4;
    uVar22 = 0xfffffffffffffeff;
  }
  if (bVar4 == 0x10) {
    puVar2 = *(undefined1 **)(param_1 + 0x230);
    *puVar2 = 1;
    lVar21 = lVar23 + 1;
    puVar20 = puVar2 + 1;
    uVar7 = (ulong)uVar15;
    if (uVar15 != 0) {
      uVar10 = 0;
      do {
        puVar2[uVar10 + 1] = *(undefined1 *)(lVar23 + 1 + uVar10);
        uVar10 = uVar10 + 1;
      } while (uVar10 != uVar7);
      lVar21 = lVar21 + uVar7;
      puVar20 = puVar20 + uVar7;
    }
    if (uVar7 < uVar1) {
      lVar17 = 0;
      do {
        puVar20[lVar17] = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);
        lVar17 = lVar17 + 1;
      } while (uVar1 - uVar7 != lVar17);
    }
    lVar23 = *(long *)(param_1 + 0x230);
LAB_00126e0b:
    if (bVar4 == 0x40) {
      puVar2 = *(undefined1 **)(param_1 + 0x230);
      *puVar2 = 3;
      lVar17 = *(long *)(param_1 + 0x228);
      lVar23 = lVar17 + 1;
      puVar20 = puVar2 + 1;
      lVar6 = *(long *)(param_1 + 0x220);
      lVar21 = lVar6 + 1;
      if (uVar15 != 0) {
        lVar11 = 1;
        do {
          puVar2[lVar11] = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);
          lVar11 = lVar11 + 1;
        } while ((ulong)(uVar15 - 1) + 2 != lVar11);
        lVar6 = (ulong)(uVar15 - 1) + 1;
        lVar23 = lVar23 + lVar6;
        lVar21 = lVar21 + lVar6;
        puVar20 = puVar20 + lVar6;
      }
      if (uVar15 < uVar1) {
        lVar6 = 0;
        do {
          puVar20[lVar6] =
               *(char *)(lVar23 + lVar6) -
               (char)((int)((uint)*(byte *)(lVar21 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))
                     >> 1);
          iVar5 = (int)lVar6;
          lVar6 = lVar6 + 1;
        } while (uVar15 + 1 + iVar5 < uVar1);
      }
      lVar23 = *(long *)(param_1 + 0x230);
      goto LAB_00126e34;
    }
    if ((bVar4 & 0x40) != 0) {
      puVar2 = *(undefined1 **)(param_1 + 0x230);
      *puVar2 = 3;
      lVar17 = *(long *)(param_1 + 0x228);
      lVar21 = lVar17 + 1;
      puVar20 = puVar2 + 1;
      lVar6 = *(long *)(param_1 + 0x220);
      local_58 = lVar6 + 1;
      if (uVar15 == 0) {
        uVar7 = 0;
      }
      else {
        lVar11 = 1;
        uVar7 = 0;
        do {
          bVar3 = *(char *)(lVar17 + lVar11) - (*(byte *)(lVar6 + lVar11) >> 1);
          puVar2[lVar11] = bVar3;
          uVar10 = (ulong)bVar3;
          if (0x7f < bVar3) {
            uVar10 = (ulong)(0x100 - bVar3);
          }
          uVar7 = uVar7 + uVar10;
          lVar11 = lVar11 + 1;
        } while (lVar11 != (ulong)(uVar15 - 1) + 2);
        lVar6 = (ulong)(uVar15 - 1) + 1;
        lVar21 = lVar21 + lVar6;
        local_58 = local_58 + lVar6;
        puVar20 = puVar20 + lVar6;
      }
      if (uVar15 < uVar1) {
        lVar6 = 0;
        do {
          uVar18 = (uint)*(byte *)(lVar21 + lVar6) -
                   ((int)((uint)*(byte *)(local_58 + lVar6) + (uint)*(byte *)(lVar17 + 1 + lVar6))
                   >> 1);
          puVar20[lVar6] = (char)uVar18;
          uVar16 = uVar18 & 0xff;
          if (0x7f < (uVar18 & 0xff)) {
            uVar16 = 0x100 - (uVar18 & 0xff);
          }
          uVar7 = uVar7 + uVar16;
        } while ((uVar7 <= uVar22) &&
                (iVar5 = (int)lVar6, lVar6 = lVar6 + 1, uVar15 + 1 + iVar5 < uVar1));
      }
      if (uVar7 < uVar22) {
        lVar23 = *(long *)(param_1 + 0x230);
        uVar22 = uVar7;
        if (*(long *)(param_1 + 0x238) != 0) {
          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);
          *(long *)(param_1 + 0x238) = lVar23;
        }
      }
    }
  }
  else {
    if ((bVar4 & 0x10) != 0) {
      puVar2 = *(undefined1 **)(param_1 + 0x230);
      *puVar2 = 1;
      lVar21 = lVar23 + 1;
      puVar20 = puVar2 + 1;
      uVar7 = (ulong)uVar15;
      uVar10 = uVar7;
      if (uVar15 != 0) {
        uVar14 = 0;
        uVar10 = 0;
        do {
          bVar3 = *(byte *)(lVar23 + 1 + uVar14);
          puVar2[uVar14 + 1] = bVar3;
          uVar8 = (ulong)bVar3;
          if (0x7f < bVar3) {
            uVar8 = (ulong)(0x100 - bVar3);
          }
          uVar10 = uVar10 + uVar8;
          uVar14 = uVar14 + 1;
        } while (uVar14 != uVar7);
        lVar21 = lVar21 + uVar7;
        puVar20 = puVar20 + uVar7;
      }
      if (uVar7 < uVar1) {
        lVar17 = 0;
        do {
          bVar3 = *(char *)(lVar21 + lVar17) - *(char *)(lVar23 + 1 + lVar17);
          puVar20[lVar17] = bVar3;
          uVar14 = (ulong)bVar3;
          if (0x7f < bVar3) {
            uVar14 = (ulong)(0x100 - bVar3);
          }
          uVar10 = uVar10 + uVar14;
        } while ((uVar10 <= uVar22) && (lVar17 = lVar17 + 1, lVar17 != uVar1 - uVar7));
      }
      if (uVar10 < uVar22) {
        lVar23 = *(long *)(param_1 + 0x230);
        uVar22 = uVar10;
        if (*(long *)(param_1 + 0x238) != 0) {
          *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);
          *(long *)(param_1 + 0x238) = lVar23;
        }
      }
    }
    if (bVar4 != 0x20) {
      if ((bVar4 & 0x20) != 0) {
        puVar20 = *(undefined1 **)(param_1 + 0x230);
        *puVar20 = 2;
        lVar21 = *(long *)(param_1 + 0x228);
        lVar17 = *(long *)(param_1 + 0x220);
        uVar7 = uVar1;
        if (uVar1 != 0) {
          uVar10 = 0;
          uVar7 = 0;
          do {
            bVar3 = *(char *)(lVar21 + 1 + uVar10) - *(char *)(lVar17 + 1 + uVar10);
            puVar20[uVar10 + 1] = bVar3;
            uVar14 = (ulong)bVar3;
            if (0x7f < bVar3) {
              uVar14 = (ulong)(0x100 - bVar3);
            }
            uVar7 = uVar7 + uVar14;
          } while ((uVar7 <= uVar22) && (uVar10 = uVar10 + 1, uVar1 != uVar10));
        }
        if (uVar7 < uVar22) {
          lVar23 = *(long *)(param_1 + 0x230);
          uVar22 = uVar7;
          if (*(long *)(param_1 + 0x238) != 0) {
            *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);
            *(long *)(param_1 + 0x238) = lVar23;
          }
        }
      }
      goto LAB_00126e0b;
    }
    puVar20 = *(undefined1 **)(param_1 + 0x230);
    *puVar20 = 2;
    lVar23 = *(long *)(param_1 + 0x228);
    lVar21 = *(long *)(param_1 + 0x220);
    if (uVar1 != 0) {
      uVar7 = 0;
      do {
        puVar20[uVar7 + 1] = *(char *)(lVar23 + 1 + uVar7) - *(char *)(lVar21 + 1 + uVar7);
        uVar7 = uVar7 + 1;
      } while (uVar1 != uVar7);
    }
    lVar23 = *(long *)(param_1 + 0x230);
  }
  if (bVar4 == 0x80) {
    puVar2 = *(undefined1 **)(param_1 + 0x230);
    *puVar2 = 4;
    lVar17 = *(long *)(param_1 + 0x228);
    lVar23 = lVar17 + 1;
    puVar20 = puVar2 + 1;
    lVar6 = *(long *)(param_1 + 0x220);
    lVar21 = lVar6 + 1;
    uVar22 = (ulong)uVar15;
    if (uVar15 != 0) {
      uVar7 = 0;
      do {
        puVar2[uVar7 + 1] = *(char *)(lVar17 + 1 + uVar7) - *(char *)(lVar6 + 1 + uVar7);
        uVar7 = uVar7 + 1;
      } while (uVar22 != uVar7);
      lVar23 = lVar23 + uVar7;
      lVar21 = lVar21 + uVar7;
      puVar20 = puVar20 + uVar7;
      uVar22 = uVar7;
    }
    if (uVar22 < uVar1) {
      lVar11 = 0;
      do {
        bVar3 = *(byte *)(lVar6 + 1 + lVar11);
        bVar4 = *(byte *)(lVar17 + 1 + lVar11);
        uVar15 = (uint)*(byte *)(lVar21 + lVar11) - (uint)bVar3;
        uVar16 = (uint)bVar4 - (uint)bVar3;
        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);
        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);
        uVar18 = (int)(uVar15 + uVar16) >> 0x1f;
        iVar5 = (uVar15 + uVar16 ^ uVar18) - uVar18;
        if (((iVar13 < iVar12) || (iVar5 < iVar12)) && (bVar4 = bVar3, iVar13 <= iVar5)) {
          bVar4 = *(byte *)(lVar21 + lVar11);
        }
        puVar20[lVar11] = *(char *)(lVar23 + lVar11) - bVar4;
        lVar11 = lVar11 + 1;
      } while (uVar1 - uVar22 != lVar11);
    }
    lVar23 = *(long *)(param_1 + 0x230);
  }
  else if ((bVar4 & 0x80) != 0) {
    puVar20 = *(undefined1 **)(param_1 + 0x230);
    *puVar20 = 4;
    lVar17 = *(long *)(param_1 + 0x228);
    lVar21 = lVar17 + 1;
    local_50 = puVar20 + 1;
    lVar6 = *(long *)(param_1 + 0x220);
    local_58 = lVar6 + 1;
    uVar7 = (ulong)uVar15;
    uVar10 = uVar7;
    if (uVar15 != 0) {
      uVar14 = 0;
      uVar10 = 0;
      do {
        bVar4 = *(char *)(lVar17 + 1 + uVar14) - *(char *)(lVar6 + 1 + uVar14);
        puVar20[uVar14 + 1] = bVar4;
        uVar8 = (ulong)bVar4;
        if (0x7f < bVar4) {
          uVar8 = (ulong)(0x100 - bVar4);
        }
        uVar10 = uVar10 + uVar8;
        uVar14 = uVar14 + 1;
      } while (uVar14 != uVar7);
      lVar21 = lVar21 + uVar7;
      local_58 = local_58 + uVar7;
      local_50 = local_50 + uVar7;
    }
    if (uVar7 < uVar1) {
      lVar11 = 0;
      do {
        uVar18 = (uint)*(byte *)(lVar6 + 1 + lVar11);
        bVar4 = *(byte *)(lVar17 + 1 + lVar11);
        uVar15 = *(byte *)(local_58 + lVar11) - uVar18;
        uVar16 = bVar4 - uVar18;
        iVar12 = ((int)uVar15 >> 0x1f ^ uVar15) - ((int)uVar15 >> 0x1f);
        iVar13 = ((int)uVar16 >> 0x1f ^ uVar16) - ((int)uVar16 >> 0x1f);
        uVar19 = (int)(uVar15 + uVar16) >> 0x1f;
        iVar5 = (uVar15 + uVar16 ^ uVar19) - uVar19;
        if (((iVar13 < iVar12) || (uVar15 = (uint)bVar4, iVar5 < iVar12)) &&
           (uVar15 = uVar18, iVar13 <= iVar5)) {
          uVar15 = (uint)*(byte *)(local_58 + lVar11);
        }
        uVar15 = *(byte *)(lVar21 + lVar11) - uVar15;
        local_50[lVar11] = (char)uVar15;
        uVar16 = uVar15 & 0xff;
        if (0x7f < (uVar15 & 0xff)) {
          uVar16 = 0x100 - (uVar15 & 0xff);
        }
        uVar10 = uVar10 + uVar16;
      } while ((uVar10 <= uVar22) && (lVar11 = lVar11 + 1, lVar11 != uVar1 - uVar7));
    }
    if (uVar10 < uVar22) {
      lVar23 = *(long *)(param_1 + 0x230);
      if (*(long *)(param_1 + 0x238) != 0) {
        *(long *)(param_1 + 0x230) = *(long *)(param_1 + 0x238);
        *(long *)(param_1 + 0x238) = lVar23;
      }
    }
  }
LAB_00126e34:
  FUN_00126469(param_1,lVar23,*(long *)(param_2 + 8) + 1,0);
  lVar23 = *(long *)(param_1 + 0x220);
  if (lVar23 != 0) {
    *(undefined8 *)(param_1 + 0x220) = *(undefined8 *)(param_1 + 0x228);
    *(long *)(param_1 + 0x228) = lVar23;
  }
  FUN_001268bf(param_1);
  uVar15 = *(int *)(param_1 + 0x29c) + 1;
  *(uint *)(param_1 + 0x29c) = uVar15;
  if ((*(uint *)(param_1 + 0x298) <= uVar15) && (*(uint *)(param_1 + 0x298) != 0)) {
    png_write_flush(param_1);
  }
  return;
}

