
void png_read_row(png_structrp png_ptr,png_bytep row,png_bytep dsp_row)

{
  bool bVar1;
  ushort uVar2;
  undefined *puVar3;
  int iVar4;
  int *piVar5;
  png_uint_32 pVar6;
  uint uVar7;
  byte *pbVar8;
  void *pvVar9;
  int iVar10;
  ushort uVar11;
  byte bVar12;
  byte bVar13;
  undefined4 *arg;
  char cVar14;
  uint uVar15;
  undefined4 *puVar16;
  byte *pbVar17;
  undefined *puVar18;
  undefined4 uVar19;
  _func_int_png_voidp *function;
  ushort *puVar20;
  byte *pbVar21;
  int iVar22;
  uint uVar23;
  ushort *puVar24;
  byte *pbVar25;
  int iVar26;
  uint uVar27;
  byte *pbVar28;
  png_structrp unaff_s0;
  png_structrp png_ptr_00;
  undefined4 *puVar29;
  int iVar30;
  uint uVar31;
  int iVar32;
  int iVar33;
  png_bytep unaff_s2;
  png_structrp ppVar34;
  png_imagep paVar35;
  uint uVar36;
  int iVar37;
  png_infop ppVar38;
  int iVar39;
  int iVar40;
  undefined *puVar41;
  code *pcVar42;
  code *pcVar43;
  uint uVar44;
  int iStackY_164;
  int iStackY_15c;
  uint uStackY_154;
  int iStackY_100;
  int iStackY_f8;
  uint uStackY_f4;
  uint uStackY_ec;
  uint uStackY_e8;
  uint uStack_80;
  ushort uStack_7c;
  ushort uStack_7a;
  ushort uStack_78;
  int iStack_74;
  png_structrp ppStack_70;
  undefined *puStack_6c;
  png_bytep ppStack_68;
  png_bytep ppStack_64;
  png_row_info row_info;
  
  puVar3 = PTR___stack_chk_guard_000534bc;
  iVar4 = *(int *)PTR___stack_chk_guard_000534bc;
  if (png_ptr != (png_structrp)0x0) {
    ppVar34 = png_ptr;
    if ((png_ptr->flags & 0x40) == 0) goto LAB_00021340;
LAB_00021100:
    uVar11._0_1_ = png_ptr->pixel_depth;
    uVar11._1_1_ = png_ptr->channels;
    bVar13 = png_ptr->pixel_depth;
    row_info.width = png_ptr->iwidth;
    row_info.color_type = png_ptr->color_type;
    row_info._10_2_ = (ushort)((uVar11 & 0xff) << 8) | uVar11 >> 8;
    row_info.bit_depth = png_ptr->bit_depth;
    if (bVar13 < 8) {
      row_info.rowbytes = bVar13 * row_info.width + 7 >> 3;
    }
    else {
      row_info.rowbytes = (bVar13 >> 3) * row_info.width;
    }
    unaff_s0 = png_ptr;
    unaff_s2 = dsp_row;
    if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) != 0)) {
      if (png_ptr->pass < 6) {
                    /* WARNING: Could not emulate address calculation at 0x00021174 */
                    /* WARNING: Treating indirect jump as call */
        (*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)))();
        return;
      }
      if ((png_ptr->row_number & 1) == 0) {
        png_read_finish_row(png_ptr);
        goto LAB_000212f4;
      }
    }
    if ((png_ptr->mode & 4) == 0) goto LAB_000215cc;
    *png_ptr->row_buf = 0xff;
    png_read_IDAT_data(png_ptr,png_ptr->row_buf,row_info.rowbytes + 1);
    pbVar8 = png_ptr->row_buf;
    uVar44 = (uint)*pbVar8;
    if (uVar44 != 0) {
      if (4 < uVar44) goto LAB_000215e0;
      png_read_filter_row(png_ptr,&row_info,pbVar8 + 1,png_ptr->prev_row + 1,uVar44);
      pbVar8 = png_ptr->row_buf;
    }
    (*(code *)PTR_memcpy_000534c4)(png_ptr->prev_row,pbVar8,row_info.rowbytes + 1);
    if ((((png_ptr->mng_features_permitted & 4) == 0) || (png_ptr->filter_type != '@')) ||
       ((row_info.color_type & 2) == 0)) {
LAB_00021248:
      pVar6 = png_ptr->transformations;
    }
    else {
      puVar20 = (ushort *)(png_ptr->row_buf + 1);
      if (row_info.bit_depth != '\b') {
        if (row_info.bit_depth == '\x10') {
          if (row_info.color_type == '\x02') {
            iVar32 = 6;
          }
          else {
            iVar32 = 8;
            if (row_info.color_type != '\x06') goto LAB_00021248;
          }
          pVar6 = 0;
          if (row_info.width != 0) {
            do {
              pVar6 = pVar6 + 1;
              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;
              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;
              *(char *)((int)puVar20 + 1) = (char)uVar15;
              *(char *)((int)puVar20 + 5) = (char)uVar44;
              *(char *)puVar20 = (char)(uVar15 >> 8);
              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);
              puVar20 = (ushort *)((int)puVar20 + iVar32);
            } while (row_info.width != pVar6);
            pVar6 = png_ptr->transformations;
            goto LAB_0002124c;
          }
        }
        goto LAB_00021248;
      }
      if (row_info.color_type == '\x02') {
        iVar32 = 3;
      }
      else {
        iVar32 = 4;
        if (row_info.color_type != '\x06') goto LAB_00021248;
      }
      pVar6 = 0;
      if (row_info.width == 0) goto LAB_00021248;
      do {
        uVar11 = *puVar20;
        pVar6 = pVar6 + 1;
        *(char *)puVar20 = (char)uVar11 + *(char *)puVar20;
        *(char *)(puVar20 + 1) = (char)uVar11 + *(char *)(puVar20 + 1);
        puVar20 = (ushort *)((int)puVar20 + iVar32);
      } while (row_info.width != pVar6);
      pVar6 = png_ptr->transformations;
    }
LAB_0002124c:
    if (pVar6 != 0) {
      png_do_read_transformations(png_ptr,&row_info);
    }
    if (png_ptr->transformed_pixel_depth != '\0') {
      if (png_ptr->transformed_pixel_depth == row_info.pixel_depth) goto LAB_00021274;
      ppVar34 = png_ptr;
      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3c0);
LAB_00021340:
      png_read_start_row(ppVar34);
      goto LAB_00021100;
    }
    png_ptr->transformed_pixel_depth = row_info.pixel_depth;
    puVar18 = PTR_s_nt_0005301c;
    if (png_ptr->maximum_pixel_depth < row_info.pixel_depth) goto LAB_000215f4;
LAB_00021274:
    if ((png_ptr->interlaced == '\0') || ((png_ptr->transformations & 2) == 0)) {
      if (row != (png_bytep)0x0) {
        png_combine_row(png_ptr,row,-1);
      }
      if (dsp_row != (png_bytep)0x0) {
        png_combine_row(png_ptr,dsp_row,-1);
      }
    }
    else {
      if (png_ptr->pass < 6) {
        png_do_read_interlace
                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations);
      }
      if (dsp_row != (png_bytep)0x0) {
        png_combine_row(png_ptr,dsp_row,1);
      }
      if (row != (png_bytep)0x0) {
        png_combine_row(png_ptr,row,0);
      }
    }
    png_read_finish_row(png_ptr);
    if (png_ptr->read_row_fn != (png_read_status_ptr)0x0) {
      (*png_ptr->read_row_fn)(png_ptr,png_ptr->row_number,(int)png_ptr->pass);
    }
  }
LAB_000212f4:
  if (iVar4 == *(int *)puVar3) {
    return;
  }
  (*(code *)PTR___stack_chk_fail_00053484)();
  png_ptr = unaff_s0;
  dsp_row = unaff_s2;
LAB_000215cc:
  (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3fc);
LAB_000215e0:
  puVar18 = PTR_s_nt_0005301c + -0x9d4;
  (*(code *)PTR_png_error_0005340c)(png_ptr,puVar18);
LAB_000215f4:
  ppVar34 = png_ptr;
  puVar41 = PTR_png_error_0005340c;
  (*(code *)PTR_png_error_0005340c)(png_ptr,puVar18 + -0x3d8);
  piVar5 = *(int **)(puVar41 + 0x31eb8);
  paVar35 = (png_imagep)ppVar34->jmp_buf_local[0].__jmpbuf[0].__pc;
  iStack_74 = *piVar5;
  puStack_6c = puVar3;
  uVar31 = paVar35->format;
  uVar15 = uVar31 & 4;
  png_ptr_00 = paVar35->opaque->png_ptr;
  ppVar38 = paVar35->opaque->info_ptr;
  ppStack_70 = png_ptr;
  ppStack_68 = dsp_row;
  ppStack_64 = row;
  (**(code **)(puVar41 + 0x31d60))(png_ptr_00);
  pVar6 = png_image_format(png_ptr_00);
  uVar44 = pVar6 & 0xfffffff7 ^ uVar31;
  if ((uVar44 & 2) == 0) {
    uVar36 = 0;
    if ((pVar6 & 4) != 0) goto LAB_000217f4;
LAB_000216e8:
    pcVar42 = *(code **)(puVar41 + 0x31d88);
  }
  else {
    if ((uVar31 & 2) == 0) {
      (**(code **)(puVar41 + 0x31dac))(png_ptr_00,1,0xffffffff,0xffffffff);
      uVar36 = pVar6 & 1;
    }
    else {
      uVar36 = 0;
      (**(code **)(puVar41 + 0x31d00))(png_ptr_00);
    }
    uVar44 = uVar44 & 0xfffffffd;
    if ((pVar6 & 4) == 0) goto LAB_000216e8;
LAB_000217f4:
    pcVar42 = *(code **)(puVar41 + 0x31d88);
    if ((paVar35->flags & 4) == 0) {
      (*pcVar42)(png_ptr_00,0,100000);
      goto joined_r0x0002181c;
    }
  }
  (*pcVar42)(png_ptr_00,0,0xffffffff);
joined_r0x0002181c:
  if ((uVar31 & 4) == 0) {
    uVar27 = 0;
    iVar4 = -1;
  }
  else {
    uVar27 = pVar6 & 1;
    iVar4 = 100000;
  }
  if ((uVar44 & 0x40) != 0) {
    uVar27 = 2;
    uVar44 = uVar44 & 0xffffffbf;
  }
  if (uVar36 != 0) goto LAB_00021afc;
  do {
    uVar7 = uVar44 & 4;
LAB_00021734:
    if (uVar7 != 0) {
      if ((uVar31 & 4) == 0) {
        (**(code **)(puVar41 + 0x31cc8))(png_ptr_00);
      }
      else {
        (**(code **)(puVar41 + 0x31cf8))(png_ptr_00);
      }
      uVar44 = uVar44 & 0xfffffffb;
    }
    if ((uVar44 & 1) == 0) {
      pVar6 = 0;
    }
    else {
      uVar19 = 0xffff;
      if ((pVar6 & 1) == 0) {
        bVar1 = (uVar31 & 0x20) != 0;
        if ((uVar31 & 4) == 0) {
          uVar19 = 0xff;
        }
        if (bVar1) {
          uVar44 = uVar44 & 0xffffffdf;
        }
        pVar6 = 0;
        (**(code **)(puVar41 + 0x31d8c))(png_ptr_00,uVar19,!bVar1);
        uVar44 = uVar44 & 0xfffffffe;
      }
      else if (uVar36 == 0) {
        if ((uVar31 & 4) == 0) {
          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];
          if (pbVar8 == (byte *)0x0) {
            uVar27 = 2;
            pVar6 = 1;
            uVar44 = uVar44 & 0xfffffffe;
          }
          else {
            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;
            pVar6 = 0;
            uStack_7c = (ushort)pbVar8[1];
            uStack_7a = (ushort)pbVar8[2];
            uStack_78 = uStack_7c;
            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);
            uVar44 = uVar44 & 0xfffffffe;
          }
        }
        else {
          pVar6 = 0;
          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);
          uVar44 = uVar44 & 0xfffffffe;
        }
      }
      else {
        uVar36 = 2;
        pVar6 = 0;
        uVar44 = uVar44 & 0xfffffffe;
      }
    }
    (**(code **)(puVar41 + 0x31d88))(png_ptr_00,uVar27,iVar4);
    if ((uVar44 & 0x10) != 0) {
      if ((uVar31 & 2) == 0) {
        uVar31 = uVar31 & 0xffffffef;
        uVar44 = uVar44 & 0xffffffef;
      }
      else {
        (**(code **)(puVar41 + 0x31cec))(png_ptr_00);
        uVar44 = uVar44 & 0xffffffef;
      }
    }
    if ((uVar44 & 0x20) != 0) {
      if ((uVar31 & 1) == 0) {
        uVar31 = uVar31 & 0xffffffdf;
        uVar44 = uVar44 & 0xffffffdf;
      }
      else if (uVar36 == 2) {
        uVar44 = uVar44 & 0xffffffdf;
      }
      else {
        (**(code **)(puVar41 + 0x31f04))(png_ptr_00);
        uVar44 = uVar44 & 0xffffffdf;
      }
    }
    if (uVar44 != 0) {
      (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x390);
      goto LAB_00021ce8;
    }
    png_image_skip_unused_chunks(png_ptr_00);
    if ((pVar6 == 0) && (uVar36 != 2)) {
      iVar4 = (**(code **)(puVar41 + 0x31e24))(png_ptr_00);
    }
    else {
      iVar4 = 0;
    }
    (**(code **)(puVar41 + 0x31f14))(png_ptr_00,ppVar38);
    uVar44 = ppVar38->color_type & 2;
    if ((ppVar38->color_type & 4) == 0) {
      if (pVar6 != 0) goto LAB_00021cf4;
    }
    else if (pVar6 == 0) {
      if (uVar36 == 2) {
        if ((uVar31 & 1) != 0) {
          uVar44 = uVar44 | 1;
        }
      }
      else {
        uVar44 = uVar44 | 1;
      }
    }
    if ((uVar31 & 0x40) != 0) {
      uVar44 = uVar44 | 0x40;
    }
    if (ppVar38->bit_depth == '\x10') {
      uVar44 = uVar44 | 4;
    }
    uVar7 = png_ptr_00->transformations;
    if ((uVar7 & 1) != 0) {
      uVar44 = uVar44 | 0x10;
    }
    if (uVar36 != 2) {
      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;
LAB_00021954:
      uVar44 = uVar44 | 0x20;
LAB_00021958:
      if (uVar31 != uVar44) goto LAB_00021d04;
      pvVar9 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__sp;
      iVar32 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[0];
      if (uVar15 != 0) {
        iVar32 = iVar32 << 1;
      }
      if (iVar32 < 0) {
        pvVar9 = (void *)((int)pvVar9 - iVar32 * (paVar35->height - 1));
      }
      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4] = (int)pvVar9;
      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[5] = iVar32;
      if (pVar6 == 0) {
        if (uVar36 != 2) break;
        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);
        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);
        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;
        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x1d18);
      }
      else {
        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);
        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);
        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;
        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484);
      }
      png_safe_execute(paVar35,function,ppVar34);
      pcVar42 = *(code **)(puVar41 + 0x31d20);
      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = 0;
      (*pcVar42)(png_ptr_00,iVar4);
      goto LAB_000219e8;
    }
    if ((uVar31 & 0x20) != 0) {
      uVar44 = uVar44 | 0x20;
    }
    if ((uVar7 & 0x20000) == 0) {
LAB_00021ac8:
      if ((-1 < (int)(uVar7 << 7)) || ((png_ptr_00->flags & 0x80) != 0)) goto LAB_00021958;
      if (uVar36 != 2) goto LAB_00021954;
    }
    (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x340);
LAB_00021afc:
    iVar32 = png_muldiv((png_fixed_point_p)&uStack_80,iVar4,(png_ptr_00->colorspace).gamma,100000);
    if ((iVar32 == 0) || (iVar32 = png_gamma_significant(uStack_80), iVar32 != 0)) {
      uVar7 = uVar44 & 4;
      if (uVar27 == 1) {
        uVar27 = 0;
        uVar36 = 2;
      }
      goto LAB_00021734;
    }
    uVar36 = 0;
  } while( true );
  while (iVar4 = iVar4 + -1, -1 < iVar4) {
    iVar39 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4];
    for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {
      (**(code **)(puVar41 + 0x31da0))(png_ptr_00,iVar39,0);
      iVar39 = iVar39 + iVar32;
    }
  }
LAB_000219e8:
  if (iStack_74 == *piVar5) {
    return;
  }
LAB_00021ce8:
  (**(code **)(puVar41 + 0x31e80))();
LAB_00021cf4:
  (**(code **)(puVar41 + 0x31e08))();
LAB_00021d04:
  pcVar42 = *(code **)(puVar41 + 0x31e08);
  (*pcVar42)(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x318);
  piVar5 = (int *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__pc;
  iVar4 = piVar5[2];
  puVar29 = *(undefined4 **)*piVar5;
  iVar32 = ((undefined4 *)*piVar5)[1];
  uVar44 = piVar5[3];
  if ((puVar29[0x4b] & 0x600000) == 0) {
LAB_00022424:
    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2f0);
LAB_00022438:
    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x278);
LAB_0002244c:
    iVar39 = *(int *)(pcVar42 + 0x31304) + -0x290;
    (**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39);
  }
  else {
    if ((puVar29[0x4b] & 0x80) != 0) {
      (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2dc);
      goto LAB_00022424;
    }
    iVar39 = (**(code **)(pcVar42 + 0x316b4))(puVar29,iVar32);
    if (iVar39 != 2) goto LAB_00022470;
    uVar15 = piVar5[4];
    iVar39 = *(int *)(pcVar42 + 0x31304);
    if ((uVar15 & 5) != 1) {
      uVar31 = (uint)*(byte *)(puVar29 + 0x7f);
      if (uVar31 == 0) {
        uStackY_e8 = 1;
LAB_00021dd0:
        cVar14 = *(char *)(iVar32 + 0x18);
        if (cVar14 == '\b') {
          iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];
          iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];
          iVar26 = *(int *)(pcVar42 + 0x31454);
          iVar22 = *(int *)(pcVar42 + 0x31458);
          uStackY_ec = 1;
          uVar15 = 0;
          if (uVar31 == 1) goto LAB_00022214;
LAB_000220b0:
          uVar31 = 0;
          uVar36 = 0;
          iStackY_f8 = 1;
          iVar10 = 1;
LAB_000220c4:
          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];
          if (iVar33 == 0) goto LAB_000222bc;
          do {
            bVar13 = *(byte *)(iVar33 + 1);
            iVar33 = *(int *)(pcVar42 + 0x31450);
            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);
            if (uVar31 < uVar44) {
              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);
              do {
                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];
                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);
                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;
                    pbVar21 = pbVar21 + iVar10) {
                  uVar15 = (uint)pbVar28[1];
                  if (uVar15 == 0) {
                    *pbVar21 = bVar13;
                  }
                  else {
                    bVar12 = *pbVar28;
                    if (uVar15 != 0xff) {
                      uVar15 = (0xff - uVar15) * (uint)uVar11 +
                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;
                      uVar27 = uVar15 >> 0xf;
                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)
                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);
                    }
                    *pbVar21 = bVar12;
                  }
                  pbVar28 = pbVar28 + 2;
                }
                uVar31 = uVar31 + iStackY_f8;
                pbVar8 = pbVar8 + iStackY_f8 * iVar39;
              } while (uVar31 < uVar44);
            }
            while( true ) {
              do {
                if (uStackY_e8 == uStackY_ec) {
                  return;
                }
                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);
                uVar36 = uStackY_ec + 1;
                uVar15 = uStackY_ec;
                uStackY_ec = uVar36;
                if (uVar31 != 1) goto LAB_000220b0;
LAB_00022214:
                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);
                if (uVar15 < 2) {
                  uVar31 = ~uVar36 & 7;
                  uVar27 = 3;
                }
                else {
                  uVar27 = (int)(8 - uStackY_ec) >> 1;
                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);
                }
              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);
              uVar36 = uVar36 & 7;
              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);
              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;
              if (uVar15 < 3) {
                iStackY_f8 = 8;
                goto LAB_000220c4;
              }
              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);
              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];
              if (iVar33 != 0) break;
LAB_000222bc:
              if (uVar31 < uVar44) {
                iVar33 = *(int *)(pcVar42 + 0x31450);
                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);
                do {
                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];
                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);
                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;
                      pbVar21 = pbVar21 + iVar10) {
                    uVar15 = (uint)pbVar28[1];
                    if (uVar15 != 0) {
                      bVar13 = *pbVar28;
                      if (uVar15 != 0xff) {
                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +
                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;
                        uVar27 = uVar15 >> 0xf;
                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc
                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);
                      }
                      *pbVar21 = bVar13;
                    }
                    pbVar28 = pbVar28 + 2;
                  }
                  uVar31 = uVar31 + iStackY_f8;
                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;
                } while (uVar31 < uVar44);
              }
            }
          } while( true );
        }
        if (cVar14 == '\x10') {
          iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];
          iVar39 = (uVar15 & 1) + 1;
          uVar27 = uVar15 & 0x21 ^ 0x21;
          iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;
          uStackY_f4 = 1;
          uVar36 = 0;
          if (uVar31 != 1) goto LAB_00021ecc;
LAB_00021e54:
          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);
          if (uVar36 < 2) {
            uVar31 = ~uVar7 & 7;
            uVar23 = 3;
          }
          else {
            uVar23 = (int)(8 - uStackY_f4) >> 1;
            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);
          }
          if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {
            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;
            iVar10 = (uVar7 & 7) * iVar39;
            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);
            if (2 < uVar36) {
              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);
              goto LAB_00021edc;
            }
            iStackY_100 = 8;
            goto LAB_00021edc;
          }
          do {
            if (uStackY_e8 == uStackY_f4) {
              return;
            }
            while( true ) {
              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);
              uVar7 = uStackY_f4 + 1;
              uVar36 = uStackY_f4;
              uStackY_f4 = uVar7;
              if (uVar31 == 1) goto LAB_00021e54;
LAB_00021ecc:
              uVar31 = 0;
              iVar10 = 0;
              iStackY_100 = 1;
              iVar26 = iVar39;
LAB_00021edc:
              if (uVar44 <= uVar31) break;
              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];
              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;
              pcVar43 = *(code **)(pcVar42 + 0x3168c);
              do {
                (*pcVar43)(puVar29,puVar20,0);
                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];
                puVar24 = puVar20;
                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;
                    uVar7 = uVar7 + iVar26 * 2) {
                  uVar2 = puVar24[1];
                  uVar23 = (uint)uVar2;
                  uVar11 = *puVar24;
                  if (uVar23 == 0) {
                    uVar11 = 0;
                  }
                  else if (uVar23 != 0xffff) {
                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *
                                                   0x80008001 >> 0x20) << 1) >> 0x10);
                  }
                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;
                  if ((uVar15 & 1) != 0) {
                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;
                  }
                  puVar24 = puVar24 + 2;
                }
                uVar31 = uVar31 + iStackY_100;
                uVar36 = uVar36 + iVar32 * iStackY_100;
                pcVar43 = *(code **)(pcVar42 + 0x3168c);
              } while (uVar31 < uVar44);
              if (uStackY_e8 == uStackY_f4) {
                return;
              }
            }
          } while( true );
        }
        goto LAB_00022438;
      }
      uStackY_e8 = 7;
      if (uVar31 == 1) goto LAB_00021dd0;
      goto LAB_0002244c;
    }
  }
  (**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39 + -0x2b0);
LAB_00022470:
  pcVar43 = *(code **)(pcVar42 + 0x316f4);
  (*pcVar43)(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2c8);
  puVar16 = (undefined4 *)*puVar29;
  arg = *(undefined4 **)*puVar16;
  cVar14 = *(char *)(arg + 0x7f);
  if (cVar14 == '\0') {
    uStackY_154 = 1;
  }
  else {
    uStackY_154 = 7;
    if (cVar14 != '\x01') {
      pcVar42 = *(code **)(pcVar43 + 0x30f88);
      (*pcVar42)(arg,*(int *)(pcVar43 + 0x30b98) + -0x290);
      paVar35 = (png_imagep)*arg;
      ppVar34 = paVar35->opaque->png_ptr;
      ppVar38 = paVar35->opaque->info_ptr;
      png_image_skip_unused_chunks(ppVar34);
      if (arg[10] == 0) {
        iVar4 = (**(code **)(pcVar42 + 0x30c58))(ppVar34);
      }
      else {
        iVar4 = 0;
      }
      (**(code **)(pcVar42 + 0x30d48))(ppVar34,ppVar38);
      if ((uint)arg[10] < 5) {
                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        (*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))();
        return;
      }
      iVar32 = *(int *)(pcVar42 + 0x3084c);
LAB_00022980:
      do {
        (**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260);
        if (ppVar38->color_type != '\x03') {
          iVar32 = *(int *)(pcVar42 + 0x3084c);
          if (ppVar38->color_type != '\0') goto LAB_00022980;
        }
        iVar32 = *(int *)(pcVar42 + 0x3084c);
        if (ppVar38->bit_depth == '\b') {
          iVar39 = arg[2];
          iVar32 = arg[1];
          if (iVar39 < 0) {
            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);
          }
          arg[6] = iVar32;
          arg[7] = iVar39;
          if (iVar4 == 0) {
            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);
            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);
            arg[5] = uVar19;
            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),
                             arg);
            pcVar42 = *(code **)(pcVar42 + 0x30b54);
            arg[5] = 0;
            (*pcVar42)(ppVar34,uVar19);
            return;
          }
          while (iVar4 = iVar4 + -1, -1 < iVar4) {
            iVar32 = arg[6];
            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {
              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);
              iVar32 = iVar32 + iVar39;
            }
          }
          return;
        }
      } while( true );
    }
  }
  uVar44 = puVar16[3];
  iVar32 = puVar16[2];
  iVar4 = puVar29[7];
  if ((puVar16[4] & 2) == 0) {
    iVar39 = 1;
    iStackY_15c = iVar32;
  }
  else {
    iVar39 = 3;
    iStackY_15c = iVar32 * 3;
  }
  iVar26 = *(int *)(pcVar43 + 0x30ce4);
  iVar22 = *(int *)(pcVar43 + 0x30ce8);
  uVar15 = 0;
  do {
    uVar31 = uVar15 + 1;
    if (cVar14 == '\x01') {
      uVar36 = (uVar15 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f);
      if (uVar15 < 2) {
        uVar27 = ~uVar36 & 7;
        uVar7 = 3;
      }
      else {
        uVar7 = (int)(8 - uVar31) >> 1;
        uVar27 = ((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7);
      }
      if (uVar27 + iVar32 >> (uVar7 & 0x1f) != 0) {
        iStackY_164 = (uVar36 & 7) * iVar39;
        iVar10 = iVar39 << ((int)(8 - uVar31) >> 1 & 0x1fU);
        uVar36 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;
        if (uVar15 < 3) {
          iVar33 = 8;
        }
        else {
          iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);
        }
        goto LAB_000225b8;
      }
    }
    else {
      uVar36 = 0;
      iStackY_164 = 0;
      iVar33 = 1;
      iVar10 = iVar39;
LAB_000225b8:
      if (uVar36 < uVar44) {
        iVar30 = uVar36 * iVar4;
        do {
          iVar37 = puVar29[5];
          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);
          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);
          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);
          if (pbVar8 < pbVar28) {
            iVar40 = *(int *)(pcVar43 + 0x30cec);
            pbVar21 = (byte *)(iVar37 + iVar39);
            do {
              while( true ) {
                uVar15 = (uint)*pbVar21;
                pbVar17 = pbVar21 + -iVar39;
                if (uVar15 == 0) break;
                pbVar25 = pbVar8;
                do {
                  bVar13 = *pbVar17;
                  if (uVar15 != 0xff) {
                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +
                             (uint)bVar13 * 0xffff;
                    uVar7 = uVar27 >> 0xf;
                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +
                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);
                  }
                  pbVar17 = pbVar17 + 1;
                  *pbVar25 = bVar13;
                  pbVar25 = pbVar25 + 1;
                } while (pbVar17 != pbVar21);
                pbVar8 = pbVar8 + iVar10;
                pbVar21 = pbVar21 + iVar39 + 1;
                if (pbVar28 <= pbVar8) goto LAB_000226d4;
              }
              pbVar8 = pbVar8 + iVar10;
              pbVar21 = pbVar21 + iVar39 + 1;
            } while (pbVar8 < pbVar28);
          }
LAB_000226d4:
          uVar36 = uVar36 + iVar33;
          iVar30 = iVar30 + iVar33 * iVar4;
        } while (uVar36 < uVar44);
      }
    }
    if (uStackY_154 == uVar31) {
      return;
    }
    cVar14 = *(char *)(arg + 0x7f);
    uVar15 = uVar31;
  } while( true );
}



int png_read_row(undefined4 *param_1,int param_2,int param_3)

{
  bool bVar1;
  ushort uVar2;
  undefined *puVar3;
  int iVar4;
  int *piVar5;
  uint uVar6;
  uint uVar7;
  byte *pbVar8;
  int iVar9;
  int iVar10;
  ushort uVar12;
  byte bVar13;
  byte bVar14;
  char cVar15;
  undefined4 uVar11;
  uint uVar16;
  undefined4 *puVar17;
  byte *pbVar18;
  undefined *puVar19;
  undefined4 uVar20;
  ushort *puVar21;
  byte *pbVar22;
  ushort *puVar23;
  byte *pbVar24;
  int iVar25;
  uint uVar26;
  byte *pbVar27;
  undefined4 *unaff_s0;
  undefined4 *puVar28;
  undefined4 *puVar29;
  int iVar30;
  uint uVar31;
  int iVar32;
  int iVar33;
  int unaff_s2;
  int iVar34;
  int *piVar35;
  uint uVar36;
  int iVar37;
  int iVar38;
  undefined *puVar39;
  code *pcVar40;
  code *pcVar41;
  uint uVar42;
  int local_164;
  int local_15c;
  uint local_154;
  int local_100;
  int local_f8;
  uint local_f4;
  uint local_ec;
  uint local_e8;
  uint local_80;
  ushort local_7c;
  ushort local_7a;
  ushort local_78;
  int local_74;
  undefined4 *local_70;
  undefined *local_6c;
  int local_68;
  int local_64;
  int local_28;
  uint local_24;
  byte local_20;
  char local_1f;
  undefined2 local_1e;
  int local_1c;
  
  puVar3 = PTR___stack_chk_guard_000534bc;
  local_1c = *(int *)PTR___stack_chk_guard_000534bc;
  if (param_1 != (undefined4 *)0x0) {
    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;
LAB_00021100:
    bVar14 = *(byte *)((int)param_1 + 0x202);
    local_28 = param_1[0x71];
    local_20 = *(byte *)((int)param_1 + 0x1ff);
    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |
               *(ushort *)((int)param_1 + 0x202) >> 8;
    local_1f = *(char *)(param_1 + 0x80);
    if (bVar14 < 8) {
      local_24 = (uint)bVar14 * local_28 + 7 >> 3;
    }
    else {
      local_24 = (uint)(bVar14 >> 3) * local_28;
    }
    unaff_s0 = param_1;
    unaff_s2 = param_3;
    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {
      if (*(byte *)((int)param_1 + 0x1fd) < 6) {
                    /* WARNING: Could not emulate address calculation at 0x00021174 */
                    /* WARNING: Treating indirect jump as call */
        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +
                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();
        return iVar4;
      }
      if ((param_1[0x72] & 1) == 0) {
        FUN_00030a70(param_1);
        goto LAB_000212f4;
      }
    }
    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;
    *(undefined1 *)param_1[0x75] = 0xff;
    FUN_00030678(param_1,param_1[0x75],local_24 + 1);
    pbVar8 = (byte *)param_1[0x75];
    if (*pbVar8 != 0) {
      if (4 < *pbVar8) goto LAB_000215e0;
      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);
      pbVar8 = (byte *)param_1[0x75];
    }
    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);
    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))
    {
LAB_00021248:
      iVar4 = param_1[0x4b];
    }
    else {
      puVar21 = (ushort *)(param_1[0x75] + 1);
      if (local_1f != '\b') {
        if (local_1f == '\x10') {
          if (local_20 == 2) {
            iVar4 = 6;
          }
          else {
            iVar4 = 8;
            if (local_20 != 6) goto LAB_00021248;
          }
          iVar34 = 0;
          if (local_28 != 0) {
            do {
              iVar34 = iVar34 + 1;
              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;
              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;
              *(char *)((int)puVar21 + 1) = (char)uVar6;
              *(char *)((int)puVar21 + 5) = (char)uVar42;
              *(char *)puVar21 = (char)(uVar6 >> 8);
              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);
              puVar21 = (ushort *)((int)puVar21 + iVar4);
            } while (local_28 != iVar34);
            iVar4 = param_1[0x4b];
            goto LAB_0002124c;
          }
        }
        goto LAB_00021248;
      }
      if (local_20 == 2) {
        iVar4 = 3;
      }
      else {
        iVar4 = 4;
        if (local_20 != 6) goto LAB_00021248;
      }
      iVar34 = 0;
      if (local_28 == 0) goto LAB_00021248;
      do {
        uVar12 = *puVar21;
        iVar34 = iVar34 + 1;
        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;
        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);
        puVar21 = (ushort *)((int)puVar21 + iVar4);
      } while (local_28 != iVar34);
      iVar4 = param_1[0x4b];
    }
LAB_0002124c:
    if (iVar4 != 0) {
      FUN_000277a0(param_1,&local_28);
    }
    if (*(byte *)((int)param_1 + 0x207) != 0) {
      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;
      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);
LAB_00021340:
      FUN_00030bc4();
      goto LAB_00021100;
    }
    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;
    puVar19 = PTR_s_nt_0005301c;
    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;
LAB_00021274:
    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {
      if (param_2 != 0) {
        FUN_0002fb24(param_1,param_2,0xffffffff);
      }
      if (param_3 != 0) {
        FUN_0002fb24(param_1,param_3,0xffffffff);
      }
    }
    else {
      if (*(byte *)((int)param_1 + 0x1fd) < 6) {
        FUN_0003010c(&local_28,param_1[0x75] + 1);
      }
      if (param_3 != 0) {
        FUN_0002fb24(param_1,param_3,1);
      }
      if (param_2 != 0) {
        FUN_0002fb24(param_1,param_2,0);
      }
    }
    FUN_00030a70(param_1);
    if ((code *)param_1[0x9c] != (code *)0x0) {
      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));
    }
  }
LAB_000212f4:
  iVar4 = *(int *)puVar3;
  if (local_1c == iVar4) {
    return iVar4;
  }
  (*(code *)PTR___stack_chk_fail_00053484)();
  param_1 = unaff_s0;
  param_3 = unaff_s2;
LAB_000215cc:
  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);
LAB_000215e0:
  puVar19 = PTR_s_nt_0005301c + -0x9d4;
  (*(code *)PTR_png_error_0005340c)(param_1,puVar19);
LAB_000215f4:
  puVar29 = param_1;
  puVar39 = PTR_png_error_0005340c;
  (*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8);
  piVar5 = *(int **)(puVar39 + 0x31eb8);
  piVar35 = (int *)*puVar29;
  local_74 = *piVar5;
  local_6c = puVar3;
  uVar31 = piVar35[4];
  uVar16 = uVar31 & 4;
  puVar28 = *(undefined4 **)*piVar35;
  iVar4 = ((undefined4 *)*piVar35)[1];
  local_70 = param_1;
  local_68 = param_3;
  local_64 = param_2;
  (**(code **)(puVar39 + 0x31d60))(puVar28);
  uVar6 = FUN_0001e440(puVar28);
  uVar42 = uVar6 & 0xfffffff7 ^ uVar31;
  if ((uVar42 & 2) == 0) {
    uVar36 = 0;
    if ((uVar6 & 4) != 0) goto LAB_000217f4;
LAB_000216e8:
    pcVar40 = *(code **)(puVar39 + 0x31d88);
  }
  else {
    if ((uVar31 & 2) == 0) {
      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);
      uVar36 = uVar6 & 1;
    }
    else {
      uVar36 = 0;
      (**(code **)(puVar39 + 0x31d00))(puVar28);
    }
    uVar42 = uVar42 & 0xfffffffd;
    if ((uVar6 & 4) == 0) goto LAB_000216e8;
LAB_000217f4:
    pcVar40 = *(code **)(puVar39 + 0x31d88);
    if ((piVar35[5] & 4U) == 0) {
      (*pcVar40)(puVar28,0,100000);
      goto joined_r0x0002181c;
    }
  }
  (*pcVar40)(puVar28,0,0xffffffff);
joined_r0x0002181c:
  if ((uVar31 & 4) == 0) {
    uVar26 = 0;
    iVar34 = -1;
  }
  else {
    uVar26 = uVar6 & 1;
    iVar34 = 100000;
  }
  if ((uVar42 & 0x40) != 0) {
    uVar26 = 2;
    uVar42 = uVar42 & 0xffffffbf;
  }
  if (uVar36 != 0) goto LAB_00021afc;
  do {
    uVar7 = uVar42 & 4;
LAB_00021734:
    if (uVar7 != 0) {
      if ((uVar31 & 4) == 0) {
        (**(code **)(puVar39 + 0x31cc8))(puVar28);
      }
      else {
        (**(code **)(puVar39 + 0x31cf8))(puVar28);
      }
      uVar42 = uVar42 & 0xfffffffb;
    }
    if ((uVar42 & 1) == 0) {
      uVar6 = 0;
    }
    else {
      uVar20 = 0xffff;
      if ((uVar6 & 1) == 0) {
        bVar1 = (uVar31 & 0x20) != 0;
        if ((uVar31 & 4) == 0) {
          uVar20 = 0xff;
        }
        if (bVar1) {
          uVar42 = uVar42 & 0xffffffdf;
        }
        uVar6 = 0;
        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);
        uVar42 = uVar42 & 0xfffffffe;
      }
      else if (uVar36 == 0) {
        if ((uVar31 & 4) == 0) {
          pbVar8 = (byte *)puVar29[4];
          if (pbVar8 == (byte *)0x0) {
            uVar26 = 2;
            uVar6 = 1;
            uVar42 = uVar42 & 0xfffffffe;
          }
          else {
            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;
            uVar6 = 0;
            local_7c = (ushort)pbVar8[1];
            local_7a = (ushort)pbVar8[2];
            local_78 = local_7c;
            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);
            uVar42 = uVar42 & 0xfffffffe;
          }
        }
        else {
          uVar6 = 0;
          (**(code **)(puVar39 + 0x31d34))(puVar28);
          uVar42 = uVar42 & 0xfffffffe;
        }
      }
      else {
        uVar36 = 2;
        uVar6 = 0;
        uVar42 = uVar42 & 0xfffffffe;
      }
    }
    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);
    if ((uVar42 & 0x10) != 0) {
      if ((uVar31 & 2) == 0) {
        uVar31 = uVar31 & 0xffffffef;
        uVar42 = uVar42 & 0xffffffef;
      }
      else {
        (**(code **)(puVar39 + 0x31cec))(puVar28);
        uVar42 = uVar42 & 0xffffffef;
      }
    }
    if ((uVar42 & 0x20) != 0) {
      if ((uVar31 & 1) == 0) {
        uVar31 = uVar31 & 0xffffffdf;
        uVar42 = uVar42 & 0xffffffdf;
      }
      else if (uVar36 == 2) {
        uVar42 = uVar42 & 0xffffffdf;
      }
      else {
        (**(code **)(puVar39 + 0x31f04))(puVar28);
        uVar42 = uVar42 & 0xffffffdf;
      }
    }
    if (uVar42 != 0) {
      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);
      goto LAB_00021ce8;
    }
    FUN_0001e55c();
    if ((uVar6 == 0) && (uVar36 != 2)) {
      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);
    }
    else {
      iVar34 = 0;
    }
    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);
    uVar42 = *(byte *)(iVar4 + 0x19) & 2;
    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {
      if (uVar6 != 0) goto LAB_00021cf4;
    }
    else if (uVar6 == 0) {
      if (uVar36 == 2) {
        if ((uVar31 & 1) != 0) {
          uVar42 = uVar42 | 1;
        }
      }
      else {
        uVar42 = uVar42 | 1;
      }
    }
    if ((uVar31 & 0x40) != 0) {
      uVar42 = uVar42 | 0x40;
    }
    if (*(char *)(iVar4 + 0x18) == '\x10') {
      uVar42 = uVar42 | 4;
    }
    uVar7 = puVar28[0x4b];
    if ((uVar7 & 1) != 0) {
      uVar42 = uVar42 | 0x10;
    }
    if (uVar36 != 2) {
      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;
LAB_00021954:
      uVar42 = uVar42 | 0x20;
LAB_00021958:
      if (uVar31 != uVar42) goto LAB_00021d04;
      iVar9 = puVar29[1];
      iVar32 = puVar29[2];
      if (uVar16 != 0) {
        iVar32 = iVar32 << 1;
      }
      if (iVar32 < 0) {
        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);
      }
      puVar29[6] = iVar9;
      puVar29[7] = iVar32;
      if (uVar6 == 0) {
        if (uVar36 != 2) break;
        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);
        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);
        puVar29[5] = uVar20;
        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;
      }
      else {
        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);
        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);
        puVar29[5] = uVar20;
        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;
      }
      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);
      pcVar40 = *(code **)(puVar39 + 0x31d20);
      puVar29[5] = 0;
      (*pcVar40)(puVar28,uVar20);
      goto LAB_000219e8;
    }
    if ((uVar31 & 0x20) != 0) {
      uVar42 = uVar42 | 0x20;
    }
    if ((uVar7 & 0x20000) == 0) {
LAB_00021ac8:
      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;
      if (uVar36 != 2) goto LAB_00021954;
    }
    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);
LAB_00021afc:
    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);
    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {
      uVar7 = uVar42 & 4;
      if (uVar26 == 1) {
        uVar26 = 0;
        uVar36 = 2;
      }
      goto LAB_00021734;
    }
    uVar36 = 0;
  } while( true );
  while( true ) {
    iVar34 = iVar34 + -1;
    iVar4 = 1;
    if (iVar34 < 0) break;
    iVar9 = puVar29[6];
    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {
      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);
      iVar9 = iVar9 + iVar32;
    }
  }
LAB_000219e8:
  if (local_74 == *piVar5) {
    return iVar4;
  }
LAB_00021ce8:
  (**(code **)(puVar39 + 0x31e80))();
LAB_00021cf4:
  (**(code **)(puVar39 + 0x31e08))();
LAB_00021d04:
  pcVar40 = *(code **)(puVar39 + 0x31e08);
  (*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318);
  piVar5 = (int *)*puVar28;
  iVar4 = piVar5[2];
  puVar29 = *(undefined4 **)*piVar5;
  iVar34 = ((undefined4 *)*piVar5)[1];
  uVar42 = piVar5[3];
  if ((puVar29[0x4b] & 0x600000) == 0) {
LAB_00022424:
    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);
LAB_00022438:
    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);
LAB_0002244c:
    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;
    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);
  }
  else {
    if ((puVar29[0x4b] & 0x80) != 0) {
      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);
      goto LAB_00022424;
    }
    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);
    if (iVar9 != 2) goto LAB_00022470;
    uVar6 = piVar5[4];
    iVar9 = *(int *)(pcVar40 + 0x31304);
    if ((uVar6 & 5) != 1) {
      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);
      if (uVar16 == 0) {
        local_e8 = 1;
LAB_00021dd0:
        cVar15 = *(char *)(iVar34 + 0x18);
        if (cVar15 == '\b') {
          iVar34 = puVar28[6];
          iVar9 = puVar28[7];
          iVar25 = *(int *)(pcVar40 + 0x31454);
          iVar32 = *(int *)(pcVar40 + 0x31458);
          local_ec = 1;
          uVar6 = 0;
          if (uVar16 == 1) goto LAB_00022214;
LAB_000220b0:
          uVar16 = 0;
          uVar31 = 0;
          local_f8 = 1;
          iVar10 = 1;
LAB_000220c4:
          iVar33 = puVar28[4];
          if (iVar33 == 0) goto LAB_000222bc;
          do {
            bVar14 = *(byte *)(iVar33 + 1);
            iVar33 = *(int *)(pcVar40 + 0x31450);
            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);
            if (uVar16 < uVar42) {
              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);
              do {
                pbVar27 = (byte *)puVar28[5];
                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);
                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;
                    pbVar22 = pbVar22 + iVar10) {
                  uVar6 = (uint)pbVar27[1];
                  if (uVar6 == 0) {
                    *pbVar22 = bVar14;
                  }
                  else {
                    bVar13 = *pbVar27;
                    if (uVar6 != 0xff) {
                      uVar6 = (0xff - uVar6) * (uint)uVar12 +
                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;
                      uVar36 = uVar6 >> 0xf;
                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +
                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);
                    }
                    *pbVar22 = bVar13;
                  }
                  pbVar27 = pbVar27 + 2;
                }
                uVar16 = uVar16 + local_f8;
                pbVar8 = pbVar8 + local_f8 * iVar9;
              } while (uVar16 < uVar42);
            }
            while( true ) {
              do {
                if (local_e8 == local_ec) {
                  return 1;
                }
                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);
                uVar31 = local_ec + 1;
                uVar6 = local_ec;
                local_ec = uVar31;
                if (uVar16 != 1) goto LAB_000220b0;
LAB_00022214:
                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);
                if (uVar6 < 2) {
                  uVar16 = ~uVar31 & 7;
                  uVar36 = 3;
                }
                else {
                  uVar36 = (int)(8 - local_ec) >> 1;
                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);
                }
              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);
              uVar31 = uVar31 & 7;
              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);
              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;
              if (uVar6 < 3) {
                local_f8 = 8;
                goto LAB_000220c4;
              }
              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);
              iVar33 = puVar28[4];
              if (iVar33 != 0) break;
LAB_000222bc:
              if (uVar16 < uVar42) {
                iVar33 = *(int *)(pcVar40 + 0x31450);
                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);
                do {
                  pbVar27 = (byte *)puVar28[5];
                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);
                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;
                      pbVar22 = pbVar22 + iVar10) {
                    uVar6 = (uint)pbVar27[1];
                    if (uVar6 != 0) {
                      bVar14 = *pbVar27;
                      if (uVar6 != 0xff) {
                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +
                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;
                        uVar36 = uVar6 >> 0xf;
                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)
                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);
                      }
                      *pbVar22 = bVar14;
                    }
                    pbVar27 = pbVar27 + 2;
                  }
                  uVar16 = uVar16 + local_f8;
                  pbVar8 = pbVar8 + local_f8 * iVar9;
                } while (uVar16 < uVar42);
              }
            }
          } while( true );
        }
        if (cVar15 == '\x10') {
          iVar32 = puVar28[6];
          iVar9 = (uVar6 & 1) + 1;
          uVar36 = uVar6 & 0x21 ^ 0x21;
          iVar34 = ((int)puVar28[7] / 2) * 2;
          local_f4 = 1;
          uVar31 = 0;
          if (uVar16 != 1) goto LAB_00021ecc;
LAB_00021e54:
          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);
          if (uVar31 < 2) {
            uVar16 = ~uVar26 & 7;
            uVar7 = 3;
          }
          else {
            uVar7 = (int)(8 - local_f4) >> 1;
            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);
          }
          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {
            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;
            iVar10 = (uVar26 & 7) * iVar9;
            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);
            if (2 < uVar31) {
              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);
              goto LAB_00021edc;
            }
            local_100 = 8;
            goto LAB_00021edc;
          }
          do {
            if (local_e8 == local_f4) {
              return 1;
            }
            while( true ) {
              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);
              uVar26 = local_f4 + 1;
              uVar31 = local_f4;
              local_f4 = uVar26;
              if (uVar16 == 1) goto LAB_00021e54;
LAB_00021ecc:
              uVar16 = 0;
              iVar10 = 0;
              local_100 = 1;
              iVar25 = iVar9;
LAB_00021edc:
              if (uVar42 <= uVar16) break;
              puVar21 = (ushort *)puVar28[5];
              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;
              pcVar41 = *(code **)(pcVar40 + 0x3168c);
              do {
                (*pcVar41)(puVar29,puVar21,0);
                puVar21 = (ushort *)puVar28[5];
                puVar23 = puVar21;
                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;
                    uVar26 = uVar26 + iVar25 * 2) {
                  uVar2 = puVar23[1];
                  uVar7 = (uint)uVar2;
                  uVar12 = *puVar23;
                  if (uVar7 == 0) {
                    uVar12 = 0;
                  }
                  else if (uVar7 != 0xffff) {
                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001
                                                  >> 0x20) << 1) >> 0x10);
                  }
                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;
                  if ((uVar6 & 1) != 0) {
                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;
                  }
                  puVar23 = puVar23 + 2;
                }
                uVar16 = uVar16 + local_100;
                uVar31 = uVar31 + iVar34 * local_100;
                pcVar41 = *(code **)(pcVar40 + 0x3168c);
              } while (uVar16 < uVar42);
              if (local_e8 == local_f4) {
                return 1;
              }
            }
          } while( true );
        }
        goto LAB_00022438;
      }
      local_e8 = 7;
      if (uVar16 == 1) goto LAB_00021dd0;
      goto LAB_0002244c;
    }
  }
  (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0);
LAB_00022470:
  pcVar41 = *(code **)(pcVar40 + 0x316f4);
  (*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8);
  puVar17 = (undefined4 *)*puVar29;
  puVar28 = *(undefined4 **)*puVar17;
  cVar15 = *(char *)(puVar28 + 0x7f);
  if (cVar15 == '\0') {
    local_154 = 1;
  }
  else {
    local_154 = 7;
    if (cVar15 != '\x01') {
      pcVar40 = *(code **)(pcVar41 + 0x30f88);
      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);
      piVar5 = (int *)*puVar28;
      uVar20 = *(undefined4 *)*piVar5;
      iVar4 = ((undefined4 *)*piVar5)[1];
      FUN_0001e55c(uVar20);
      if (puVar28[10] == 0) {
        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);
      }
      else {
        iVar34 = 0;
      }
      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);
      if ((uint)puVar28[10] < 5) {
                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        iVar4 = (*(pcVar40 +
                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();
        return iVar4;
      }
      iVar9 = *(int *)(pcVar40 + 0x3084c);
LAB_00022980:
      do {
        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);
        if (*(char *)(iVar4 + 0x19) != '\x03') {
          iVar9 = *(int *)(pcVar40 + 0x3084c);
          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;
        }
        iVar9 = *(int *)(pcVar40 + 0x3084c);
        if (*(char *)(iVar4 + 0x18) == '\b') {
          iVar32 = puVar28[2];
          iVar9 = puVar28[1];
          if (iVar32 < 0) {
            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);
          }
          puVar28[6] = iVar9;
          puVar28[7] = iVar32;
          if (iVar34 == 0) {
            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);
            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);
            puVar28[5] = uVar11;
            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);
            pcVar40 = *(code **)(pcVar40 + 0x30b54);
            puVar28[5] = 0;
            (*pcVar40)(uVar20,uVar11);
            return iVar4;
          }
          while (iVar34 = iVar34 + -1, -1 < iVar34) {
            iVar9 = puVar28[6];
            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {
              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);
              iVar9 = iVar9 + iVar32;
            }
          }
          return 1;
        }
      } while( true );
    }
  }
  uVar42 = puVar17[3];
  iVar34 = puVar17[2];
  iVar4 = puVar29[7];
  if ((puVar17[4] & 2) == 0) {
    iVar9 = 1;
    local_15c = iVar34;
  }
  else {
    iVar9 = 3;
    local_15c = iVar34 * 3;
  }
  iVar25 = *(int *)(pcVar41 + 0x30ce4);
  iVar32 = *(int *)(pcVar41 + 0x30ce8);
  uVar6 = 0;
  do {
    uVar16 = uVar6 + 1;
    if (cVar15 == '\x01') {
      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);
      if (uVar6 < 2) {
        uVar36 = ~uVar31 & 7;
        uVar26 = 3;
      }
      else {
        uVar26 = (int)(8 - uVar16) >> 1;
        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);
      }
      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {
        local_164 = (uVar31 & 7) * iVar9;
        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);
        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;
        if (uVar6 < 3) {
          iVar33 = 8;
        }
        else {
          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);
        }
        goto LAB_000225b8;
      }
    }
    else {
      uVar31 = 0;
      local_164 = 0;
      iVar33 = 1;
      iVar10 = iVar9;
LAB_000225b8:
      if (uVar31 < uVar42) {
        iVar30 = uVar31 * iVar4;
        do {
          iVar37 = puVar29[5];
          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);
          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);
          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);
          if (pbVar8 < pbVar27) {
            iVar38 = *(int *)(pcVar41 + 0x30cec);
            pbVar22 = (byte *)(iVar37 + iVar9);
            do {
              while( true ) {
                uVar6 = (uint)*pbVar22;
                pbVar18 = pbVar22 + -iVar9;
                if (uVar6 == 0) break;
                pbVar24 = pbVar8;
                do {
                  bVar14 = *pbVar18;
                  if (uVar6 != 0xff) {
                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +
                             (uint)bVar14 * 0xffff;
                    uVar26 = uVar36 >> 0xf;
                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +
                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);
                  }
                  pbVar18 = pbVar18 + 1;
                  *pbVar24 = bVar14;
                  pbVar24 = pbVar24 + 1;
                } while (pbVar18 != pbVar22);
                pbVar8 = pbVar8 + iVar10;
                pbVar22 = pbVar22 + iVar9 + 1;
                if (pbVar27 <= pbVar8) goto LAB_000226d4;
              }
              pbVar8 = pbVar8 + iVar10;
              pbVar22 = pbVar22 + iVar9 + 1;
            } while (pbVar8 < pbVar27);
          }
LAB_000226d4:
          uVar31 = uVar31 + iVar33;
          iVar30 = iVar30 + iVar33 * iVar4;
        } while (uVar31 < uVar42);
      }
    }
    if (local_154 == uVar16) {
      return 1;
    }
    cVar15 = *(char *)(puVar28 + 0x7f);
    uVar6 = uVar16;
  } while( true );
}


lui gp,0x4
addiu gp,gp,-0x60c0
addu gp,gp,t9
addiu sp,sp,-0x48
sw s1,0x38(sp)
lw s1,-0x7b34(gp)
sw gp,0x18(sp)
sw ra,0x44(sp)
sw s3,0x40(sp)
sw s2,0x3c(sp)
sw s0,0x34(sp)
lw v0,0x0(s1)
sw v0,0x2c(sp)
beq a0,zero,0x000212f4
_or s3,a1,zero
lw v0,0x128(a0)
or s0,a0,zero
andi v0,v0,0x40
beq v0,zero,0x00021340
_or s2,a2,zero
lhu v1,0x202(s0)
lbu v0,0x202(s0)
lw a0,0x1c4(s0)
lbu a3,0x1ff(s0)
wsbh v1,v1
lbu a2,0x200(s0)
sltiu a1,v0,0x8
sw a0,0x20(sp)
sb a3,0x28(sp)
sb a2,0x29(sp)
beq a1,zero,0x0002131c
_sh v1,0x2a(sp)
mul v0,v0,a0
addiu v0,v0,0x7
srl v0,v0,0x3
lbu v1,0x1fc(s0)
beq v1,zero,0x000211a4
_sw v0,0x24(sp)
lw v0,0x12c(s0)
andi v0,v0,0x2
beq v0,zero,0x000211a4
_nop
lbu v0,0x1fd(s0)
sltiu v1,v0,0x6
beq v1,zero,0x0002147c
_lw a0,0x1c8(s0)
sll v1,v0,0x2
lw v0,-0x7fd4(gp)
addiu v0,v0,0x14c
addu v0,v0,v1
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
andi a0,a0,0x1
bne a0,zero,0x000214f4
_nop
lw v0,0x1b0(s0)
sltiu v0,v0,0x2
bne v0,zero,0x000214f4
_nop
lw v0,0x124(s0)
andi v0,v0,0x4
beq v0,zero,0x000215cc
_li v1,-0x1
lw v0,0x1d4(s0)
lw t9,-0x7e60(gp)
or a0,s0,zero
sb v1,0x0(v0)
lw a2,0x24(sp)
lw a1,0x1d4(s0)
bal 0x00030678
_addiu a2,a2,0x1
lw a1,0x1d4(s0)
lbu v0,0x0(a1)
beq v0,zero,0x00021214
_lw gp,0x18(sp)
sltiu v1,v0,0x5
beq v1,zero,0x000215e0
_addiu a2,a1,0x1
lw a3,0x1d0(s0)
lw t9,-0x7ec8(gp)
addiu a1,sp,0x20
sw v0,0x10(sp)
or a0,s0,zero
bal 0x000305d0
_addiu a3,a3,0x1
lw gp,0x18(sp)
lw a1,0x1d4(s0)
lw a2,0x24(sp)
lw t9,-0x7b2c(gp)
lw a0,0x1d0(s0)
jalr t9
_addiu a2,a2,0x1
lw v0,0x300(s0)
andi v0,v0,0x4
beq v0,zero,0x00021248
_lw gp,0x18(sp)
lbu v1,0x304(s0)
li v0,0x40
beq v1,v0,0x000213b4
_lbu v1,0x28(sp)
lw v0,0x12c(s0)
bne v0,zero,0x00021354
_lw t9,-0x7eb8(gp)
lbu v0,0x207(s0)
bne v0,zero,0x00021328
_lbu v1,0x2b(sp)
lbu v0,0x206(s0)
sb v1,0x207(s0)
sltu v1,v0,v1
bne v1,zero,0x000215f4
_lw a1,-0x7fd4(gp)
lbu v0,0x1fc(s0)
beq v0,zero,0x00021290
_nop
lw a3,0x12c(s0)
andi v0,a3,0x2
bne v0,zero,0x00021368
_nop
beq s3,zero,0x000212ac
_lw t9,-0x7e8c(gp)
li a2,-0x1
or a1,s3,zero
bal 0x0002fb24
_or a0,s0,zero
lw gp,0x18(sp)
beq s2,zero,0x000212c8
_lw t9,-0x7e8c(gp)
li a2,-0x1
or a1,s2,zero
bal 0x0002fb24
_or a0,s0,zero
lw gp,0x18(sp)
lw t9,-0x7e5c(gp)
bal 0x00030a70
_or a0,s0,zero
lw t9,0x270(s0)
beq t9,zero,0x000212f4
_lw gp,0x18(sp)
lbu a2,0x1fd(s0)
or a0,s0,zero
jalr t9
_lw a1,0x1c8(s0)
lw gp,0x18(sp)
lw v1,0x2c(sp)
lw v0,0x0(s1)
bne v1,v0,0x000215c0
_lw ra,0x44(sp)
lw s3,0x40(sp)
lw s2,0x3c(sp)
lw s1,0x38(sp)
lw s0,0x34(sp)
jr ra
_addiu sp,sp,0x48
srl v0,v0,0x3
b 0x0002113c
_mul v0,v0,a0
beq v0,v1,0x00021274
_lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x3c0
lw t9,-0x7e68(gp)
bal 0x00030bc4
_nop
b 0x00021100
_lw gp,0x18(sp)
addiu a1,sp,0x20
bal 0x000277a0
_or a0,s0,zero
b 0x00021254
_lw gp,0x18(sp)
lbu a2,0x1fd(s0)
sltiu v0,a2,0x6
bne v0,zero,0x00021464
_addiu a0,sp,0x20
beq s2,zero,0x00021394
_lw t9,-0x7e8c(gp)
li a2,0x1
or a1,s2,zero
bal 0x0002fb24
_or a0,s0,zero
lw gp,0x18(sp)
beq s3,zero,0x000212c8
_lw t9,-0x7e8c(gp)
or a2,zero,zero
or a1,s3,zero
bal 0x0002fb24
_or a0,s0,zero
b 0x000212c8
_lw gp,0x18(sp)
andi v0,v1,0x2
beq v0,zero,0x00021248
_li a1,0x8
lw v0,0x1d4(s0)
lbu a0,0x29(sp)
lw t0,0x20(sp)
beq a0,a1,0x00021564
_addiu v0,v0,0x1
li a1,0x10
bne a0,a1,0x00021248
_li a0,0x2
beq v1,a0,0x000215b8
_li a0,0x6
bne v1,a0,0x00021248
_li t3,0x8
beq t0,zero,0x00021248
_or t2,zero,zero
lbu t1,0x0(v0)
addiu t2,t2,0x1
lbu a2,0x4(v0)
lbu a3,0x2(v0)
lbu v1,0x5(v0)
sll t1,t1,0x8
lbu a1,0x1(v0)
sll a2,a2,0x8
lbu a0,0x3(v0)
sll a3,a3,0x8
or a2,v1,a2
or a1,a1,t1
or v1,a0,a3
addu a0,v1,a1
addu v1,v1,a2
andi a0,a0,0xffff
andi v1,v1,0xffff
sb a0,0x1(v0)
sb v1,0x5(v0)
srl a0,a0,0x8
srl v1,v1,0x8
sb a0,0x0(v0)
sb v1,0x4(v0)
bne t0,t2,0x000213f8
_addu v0,v0,t3
b 0x0002124c
_lw v0,0x12c(s0)
lw a1,0x1d4(s0)
lw t9,-0x7ec0(gp)
bal 0x0003010c
_addiu a1,a1,0x1
b 0x00021378
_lw gp,0x18(sp)
andi a0,a0,0x1
bne a0,zero,0x000211a4
_nop
lw t9,-0x7e5c(gp)
bal 0x00030a70
_or a0,s0,zero
b 0x000212f4
_lw gp,0x18(sp)
li v0,0x2
andi v1,a0,0x3
beq v1,v0,0x000211a4
_nop
beq s2,zero,0x00021488
_andi a0,a0,0x2
beq a0,zero,0x0002148c
_lw t9,-0x7e5c(gp)
lw t9,-0x7e8c(gp)
li a2,0x1
or a1,s2,zero
bal 0x0002fb24
_or a0,s0,zero
b 0x00021488
_lw gp,0x18(sp)
andi a0,a0,0x3
bne a0,zero,0x000214f4
_nop
lw v0,0x1b0(s0)
sltiu v0,v0,0x3
beq v0,zero,0x000211a4
_nop
bne s2,zero,0x000214bc
_lw t9,-0x7e5c(gp)
b 0x0002148c
_nop
li v0,0x4
andi v1,a0,0x7
beq v1,v0,0x000211a4
_nop
beq s2,zero,0x00021488
_andi a0,a0,0x4
beq a0,zero,0x00021488
_lw t9,-0x7e8c(gp)
b 0x000214c4
_li a2,0x1
andi a0,a0,0x7
bne a0,zero,0x000214f4
_nop
lw v0,0x1b0(s0)
sltiu v0,v0,0x5
beq v0,zero,0x000211a4
_nop
b 0x000214f4
_nop
andi a0,a0,0x7
beq a0,zero,0x000211a4
_nop
b 0x000214f4
_nop
li a0,0x2
beq v1,a0,0x000215b0
_li a0,0x6
bne v1,a0,0x00021248
_li a3,0x4
beq t0,zero,0x00021248
_or a1,zero,zero
lbu v1,0x1(v0)
addiu a1,a1,0x1
lbu a0,0x0(v0)
lbu a2,0x2(v0)
addu a0,v1,a0
addu v1,v1,a2
sb a0,0x0(v0)
sb v1,0x2(v0)
bne t0,a1,0x00021580
_addu v0,v0,a3
b 0x0002124c
_lw v0,0x12c(s0)
b 0x00021578
_li a3,0x3
b 0x000213f0
_li t3,0x6
lw t9,-0x7b6c(gp)
jalr t9
_nop
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x3fc
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x9d4
or a0,s0,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x3d8
lui gp,0x4
addiu gp,gp,-0x6614
addu gp,gp,t9
addiu sp,sp,-0x68
lw v0,-0x7b34(gp)
lw t9,-0x7c8c(gp)
sw s4,0x50(sp)
sw v0,0x28(sp)
lw s4,0x0(a0)
lw v1,0x0(v0)
sw s1,0x44(sp)
sw s0,0x40(sp)
lw v0,0x0(s4)
lw s1,0x10(s4)
sw v1,0x3c(sp)
sw gp,0x18(sp)
sw ra,0x64(sp)
andi v1,s1,0x4
sw v1,0x24(sp)
sw s8,0x60(sp)
sw s7,0x5c(sp)
sw s6,0x58(sp)
sw s3,0x4c(sp)
or s3,a0,zero
sw s5,0x54(sp)
sw s2,0x48(sp)
lw s0,0x0(v0)
lw s6,0x4(v0)
jalr t9
_or a0,s0,zero
lw gp,0x18(sp)
lw t9,-0x7f80(gp)
addiu t9,t9,-0x1bc0
bal 0x0001e440
_or a0,s0,zero
li v1,-0x9
or s7,v0,zero
and v1,v0,v1
xor s8,v1,s1
andi v0,s8,0x2
beq v0,zero,0x000217e8
_lw gp,0x18(sp)
andi v0,s1,0x2
bne v0,zero,0x00021bb0
_lw t9,-0x7c40(gp)
li a3,-0x1
li a2,-0x1
li a1,0x1
jalr t9
_or a0,s0,zero
li v0,-0x3
lw gp,0x18(sp)
andi s5,s7,0x1
and s8,s8,v0
andi v0,s7,0x4
bne v0,zero,0x000217f4
_nop
lw t9,-0x7c64(gp)
li a2,-0x1
or a1,zero,zero
jalr t9
_or a0,s0,zero
andi v0,s1,0x4
beq v0,zero,0x00021824
_lw gp,0x18(sp)
lui s2,0x1
andi t0,s7,0x1
ori s2,s2,0x86a0
andi v0,s8,0x40
beq v0,zero,0x00021728
_li v0,-0x41
li t0,0x2
and s8,s8,v0
bne s5,zero,0x00021afc
_lw t9,-0x7fa8(gp)
andi v0,s8,0x4
beq v0,zero,0x00021768
_andi v0,s8,0x1
andi v0,s1,0x4
beq v0,zero,0x00021a80
_sw t0,0x2c(sp)
lw t9,-0x7cf4(gp)
jalr t9
_or a0,s0,zero
li v0,-0x5
lw gp,0x18(sp)
lw t0,0x2c(sp)
and s8,s8,v0
andi v0,s8,0x1
beq v0,zero,0x00021830
_andi s7,s7,0x1
beq s7,zero,0x00021a40
_ori a1,zero,0xffff
bne s5,zero,0x00021bec
_li v0,-0x2
andi v0,s1,0x4
bne v0,zero,0x00021cb4
_sw t0,0x2c(sp)
lw v0,0x10(s3)
beq v0,zero,0x00021ca0
_or a3,zero,zero
sb zero,0x30(sp)
lbu t1,0x0(v0)
li a2,0x1
lw t9,-0x7b94(gp)
addiu a1,sp,0x30
or a0,s0,zero
sh t1,0x32(sp)
or s7,zero,zero
lbu t1,0x1(v0)
sh t1,0x34(sp)
lbu v0,0x2(v0)
sw zero,0x10(sp)
sh t1,0x38(sp)
jalr t9
_sh v0,0x36(sp)
li v0,-0x2
lw gp,0x18(sp)
lw t0,0x2c(sp)
b 0x00021834
_and s8,s8,v0
andi v0,s7,0x4
beq v0,zero,0x000216e8
_or s5,zero,zero
lw v0,0x14(s4)
andi v0,v0,0x4
bne v0,zero,0x000216ec
_lw t9,-0x7c64(gp)
lui a2,0x1
or a1,zero,zero
ori a2,a2,0x86a0
jalr t9
_or a0,s0,zero
andi v0,s1,0x4
bne v0,zero,0x00021708
_lw gp,0x18(sp)
or t0,zero,zero
b 0x00021714
_li s2,-0x1
or s7,zero,zero
lw t9,-0x7c64(gp)
or a2,s2,zero
or a1,t0,zero
jalr t9
_or a0,s0,zero
andi v0,s8,0x10
beq v0,zero,0x0002186c
_lw gp,0x18(sp)
andi v0,s1,0x2
bne v0,zero,0x00021bd0
_li v0,-0x11
and s1,s1,v0
li v0,-0x11
and s8,s8,v0
andi v0,s8,0x20
beq v0,zero,0x00021890
_andi v0,s1,0x1
beq v0,zero,0x00021aa0
_li v0,-0x21
li v0,0x2
bne s5,v0,0x00021c0c
_li v0,-0x21
and s8,s8,v0
bne s8,zero,0x00021cd8
_or a0,s0,zero
lw t9,-0x7f80(gp)
addiu t9,t9,-0x1aa4
bal 0x0001e55c
_nop
bne s7,zero,0x000218d0
_lw gp,0x18(sp)
li v0,0x2
beq s5,v0,0x000218d0
_lw t9,-0x7bc8(gp)
jalr t9
_or a0,s0,zero
lw gp,0x18(sp)
b 0x000218d4
_or s2,v0,zero
or s2,zero,zero
lw t9,-0x7ad8(gp)
or a0,s0,zero
jalr t9
_or a1,s6,zero
li a0,0x2
lbu v1,0x19(s6)
lw gp,0x18(sp)
andi v0,v1,0x4
bne v0,zero,0x00021a28
_andi s8,v1,0x2
bne s7,zero,0x00021cf4
_or a0,s0,zero
andi v0,s1,0x40
beq v0,zero,0x00021914
_nop
ori s8,s8,0x40
lbu a0,0x18(s6)
li v0,0x10
bne a0,v0,0x00021928
_nop
ori s8,s8,0x4
lw v0,0x12c(s0)
andi a0,v0,0x1
beq a0,zero,0x0002193c
_nop
ori s8,s8,0x10
lui a0,0x2
li a1,0x2
beq s5,a1,0x00021ab0
_and a0,v0,a0
beq a0,zero,0x00021ac8
_ext v0,v0,0x18,0x1
ori s8,s8,0x20
bne s1,s8,0x00021d04
_lw v1,0x24(sp)
lw v0,0x4(s3)
beq v1,zero,0x00021970
_lw s1,0x8(s3)
sll s1,s1,0x1
bgez s1,0x00021988
_nop
lw v1,0xc(s4)
addiu v1,v1,-0x1
mul a0,s1,v1
subu v0,v0,a0
sw v0,0x18(s3)
bne s7,zero,0x00021b3c
_sw s1,0x1c(s3)
li v0,0x2
beq s5,v0,0x00021c38
_lw t9,-0x7ae4(gp)
addiu s2,s2,-0x1
bltz s2,0x000219e8
_li v0,0x1
lw s5,0xc(s4)
beq s5,zero,0x000219a0
_lw s6,0x18(s3)
lw t9,-0x7c4c(gp)
or a2,zero,zero
addiu s5,s5,-0x1
or a1,s6,zero
jalr t9
_or a0,s0,zero
addu s6,s6,s1
bne s5,zero,0x000219b8
_lw gp,0x18(sp)
addiu s2,s2,-0x1
bgez s2,0x000219ac
_li v0,0x1
lw v1,0x28(sp)
lw a0,0x3c(sp)
lw v1,0x0(v1)
bne a0,v1,0x00021ce8
_lw ra,0x64(sp)
lw s8,0x60(sp)
lw s7,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x68
bne s7,zero,0x00021908
_andi v0,s1,0x40
beq s5,a0,0x00021c28
_andi v0,s1,0x1
b 0x00021904
_ori s8,s8,0x1
li a0,0xff
andi v1,s1,0x4
andi v0,s1,0x20
bne v0,zero,0x00021bfc
_movz a1,a0,v1
li a2,0x1
lw t9,-0x7c60(gp)
or a0,s0,zero
sw t0,0x2c(sp)
jalr t9
_or s7,zero,zero
li v0,-0x2
lw gp,0x18(sp)
lw t0,0x2c(sp)
b 0x00021834
_and s8,s8,v0
lw t9,-0x7d24(gp)
jalr t9
_or a0,s0,zero
li v0,-0x5
lw gp,0x18(sp)
lw t0,0x2c(sp)
b 0x00021764
_and s8,s8,v0
and s1,s1,v0
li v0,-0x21
b 0x00021890
_and s8,s8,v0
andi a1,s1,0x20
beq a1,zero,0x00021ac0
_nop
ori s8,s8,0x20
bne a0,zero,0x00021ae8
_ext v0,v0,0x18,0x1
beq v0,zero,0x00021958
_nop
lw v0,0x128(s0)
andi v0,v0,0x80
bne v0,zero,0x00021958
_li v0,0x2
bne s5,v0,0x00021954
_nop
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x340
lui a3,0x1
lw a2,0x398(s0)
addiu a0,sp,0x30
sw t0,0x2c(sp)
ori a3,a3,0x86a0
bal 0x00016f88
_or a1,s2,zero
lw gp,0x18(sp)
bne v0,zero,0x00021c7c
_lw t0,0x2c(sp)
li v0,0x1
bne t0,v0,0x00021734
_andi v0,s8,0x4
or t0,zero,zero
b 0x00021734
_li s5,0x2
lw t9,-0x7ae4(gp)
or a1,s6,zero
jalr t9
_or a0,s0,zero
or a0,s0,zero
lw gp,0x18(sp)
lw t9,-0x7ce8(gp)
jalr t9
_or a1,v0,zero
or a0,s4,zero
lw gp,0x18(sp)
or s1,v0,zero
or a2,s3,zero
sw v0,0x14(s3)
lw a1,-0x7f80(gp)
lw t9,-0x7e58(gp)
addiu a1,a1,0x2484
bal 0x0001a610
_nop
or a1,s1,zero
lw gp,0x18(sp)
or a0,s0,zero
sw v0,0x24(sp)
lw t9,-0x7ccc(gp)
jalr t9
_sw zero,0x14(s3)
lw gp,0x18(sp)
b 0x000219e8
_lw v0,0x24(sp)
lw t9,-0x7cec(gp)
or a0,s0,zero
jalr t9
_or s5,zero,zero
li v0,-0x3
lw gp,0x18(sp)
b 0x000216dc
_and s8,s8,v0
lw t9,-0x7d00(gp)
jalr t9
_or a0,s0,zero
li v0,-0x11
lw gp,0x18(sp)
b 0x0002186c
_and s8,s8,v0
li s5,0x2
or s7,zero,zero
b 0x00021834
_and s8,s8,v0
li v0,-0x21
or a2,zero,zero
b 0x00021a58
_and s8,s8,v0
lw t9,-0x7ae8(gp)
jalr t9
_or a0,s0,zero
li v0,-0x21
lw gp,0x18(sp)
b 0x00021890
_and s8,s8,v0
beq v0,zero,0x00021908
_andi v0,s1,0x40
b 0x00021908
_ori s8,s8,0x1
or a1,s6,zero
jalr t9
_or a0,s0,zero
or a0,s0,zero
lw gp,0x18(sp)
lw t9,-0x7ce8(gp)
jalr t9
_or a1,v0,zero
or a0,s4,zero
lw gp,0x18(sp)
or s1,v0,zero
or a2,s3,zero
sw v0,0x14(s3)
lw a1,-0x7f80(gp)
lw t9,-0x7e58(gp)
b 0x00021b80
_addiu a1,a1,0x1d18
lw t9,-0x7fa0(gp)
lw a0,0x30(sp)
bal 0x00017f48
_sw t0,0x2c(sp)
lw gp,0x18(sp)
bne v0,zero,0x00021b24
_lw t0,0x2c(sp)
b 0x00021730
_or s5,zero,zero
li v0,-0x2
li t0,0x2
li s7,0x1
b 0x00021834
_and s8,s8,v0
lw t9,-0x7cb8(gp)
or a0,s0,zero
jalr t9
_or s7,zero,zero
li v0,-0x2
lw gp,0x18(sp)
lw t0,0x2c(sp)
b 0x00021834
_and s8,s8,v0
lw a1,-0x7fd4(gp)
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x390
lw t9,-0x7b6c(gp)
jalr t9
_nop
lw a1,-0x7fd4(gp)
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x364
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x318
lui gp,0x4
addiu gp,gp,-0x6d28
addu gp,gp,t9
addiu sp,sp,-0x70
sw s3,0x54(sp)
lw s3,0x0(a0)
sw s0,0x48(sp)
sw s4,0x58(sp)
sw gp,0x10(sp)
lw v0,0x0(s3)
lw v1,0x8(s3)
sw s2,0x50(sp)
sw ra,0x6c(sp)
lw s0,0x0(v0)
lw s4,0x4(v0)
lw s2,0xc(s3)
sw v1,0x3c(sp)
lui v1,0x60
sw s8,0x68(sp)
sw s7,0x64(sp)
sw s6,0x60(sp)
sw s5,0x5c(sp)
sw s1,0x4c(sp)
lw v0,0x12c(s0)
and v1,v0,v1
beq v1,zero,0x00022424
_andi v0,v0,0x80
bne v0,zero,0x00022410
_lw t9,-0x7c24(gp)
or s1,a0,zero
or a1,s4,zero
jalr t9
_or a0,s0,zero
li v1,0x2
bne v0,v1,0x00022470
_lw gp,0x10(sp)
lw v1,0x10(s3)
li a0,0x1
andi v0,v1,0x5
beq v0,a0,0x00022460
_lw a1,-0x7fd4(gp)
lbu v0,0x1fc(s0)
beq v0,zero,0x000223d0
_li a1,0x7
bne v0,a0,0x0002244c
_sw a1,0x38(sp)
lbu a0,0x18(s4)
li a1,0x8
beq a0,a1,0x00022084
_li a1,0x10
bne a0,a1,0x00022438
_andi s3,v1,0x1
lw a2,0x18(s1)
addiu a0,s3,0x1
lw a1,0x1c(s1)
andi v1,v1,0x21
sw a2,0x40(sp)
xori v1,v1,0x21
lw a2,0x3c(sp)
sltiu t0,v1,0x1
sw a0,0x30(sp)
sltu v1,zero,v1
sll s7,v1,0x1
mul a2,a2,a0
srl a0,a1,0x1f
sll s6,t0,0x1
addu a0,a0,a1
lui t5,0x8000
sra a0,a0,0x1
ori s8,t5,0x8001
sll a1,a2,0x1
sll v1,a0,0x1
sw a1,0x34(sp)
or a1,zero,zero
sw v1,0x44(sp)
li v1,0x1
addiu t0,a1,0x1
bne v0,v1,0x00021ecc
_sw t0,0x2c(sp)
sra v1,t0,0x1
li a2,0x3
andi a0,a1,0x1
subu a2,a2,v1
sltiu v1,a1,0x2
bne v1,zero,0x0002206c
_sllv a0,a0,a2
li a2,0x8
andi a3,a0,0x7
subu a2,a2,t0
sra a2,a2,0x1
sllv v1,v0,a2
addiu v1,v1,-0x1
subu v0,v1,a3
lw v1,0x3c(sp)
addu v0,v0,v1
srlv v0,v0,a2
bne v0,zero,0x00022018
_lw v0,0x2c(sp)
lw v0,0x38(sp)
lw v1,0x2c(sp)
beq v0,v1,0x00021fe8
_lw ra,0x6c(sp)
lw a1,0x2c(sp)
li v1,0x1
lbu v0,0x1fc(s0)
addiu t0,a1,0x1
beq v0,v1,0x00021e54
_sw t0,0x2c(sp)
li v1,0x1
lw a3,0x30(sp)
or s5,zero,zero
or v0,zero,zero
sw v1,0x20(sp)
sltu v1,s5,s2
beq v1,zero,0x00021ea0
_lw v1,0x44(sp)
sll v0,v0,0x1
lw a0,0x20(sp)
sll a3,a3,0x1
lw a1,0x14(s1)
ori s4,zero,0xffff
mul a0,v1,a0
sw a0,0x24(sp)
lw a0,0x34(sp)
subu v0,v0,a0
sw v0,0x28(sp)
mul v0,v1,s5
addu v1,v0,a0
lw v0,0x40(sp)
addu v1,v0,v1
lw t9,-0x7c4c(gp)
or a2,zero,zero
sw v1,0x1c(sp)
or a0,s0,zero
jalr t9
_sw a3,0x18(sp)
lw v0,0x28(sp)
lw v1,0x1c(sp)
lw a1,0x14(s1)
lw gp,0x10(sp)
addu a0,v0,v1
lw a3,0x18(sp)
sltu v0,a0,v1
bne v0,zero,0x00021fa4
_or a2,a1,zero
b 0x00021fbc
_lw v0,0x20(sp)
beq t6,s4,0x00021f84
_addu t7,s6,a0
mul v0,t6,v0
addiu v0,v0,0x7fff
multu v0,s8
mfhi v0
ext v0,v0,0xf,0x10
addu t7,s6,a0
beq s3,zero,0x00021f94
_sh v0,0x0(t7)
addu v0,s7,a0
sh t6,0x0(v0)
addu a0,a0,a3
sltu v0,a0,v1
beq v0,zero,0x00021fb8
_addiu a2,a2,0x4
lhu t6,0x2(a2)
bne t6,zero,0x00021f64
_lhu v0,0x0(a2)
b 0x00021f80
_or v0,zero,zero
lw v0,0x20(sp)
addu s5,s5,v0
lw v0,0x24(sp)
addu v1,v1,v0
sltu v0,s5,s2
bne v0,zero,0x00021f24
_lw t9,-0x7c4c(gp)
lw v0,0x38(sp)
lw v1,0x2c(sp)
bne v0,v1,0x00021eb0
_nop
lw ra,0x6c(sp)
li v0,0x1
lw s8,0x68(sp)
lw s7,0x64(sp)
lw s6,0x60(sp)
lw s5,0x5c(sp)
lw s4,0x58(sp)
lw s3,0x54(sp)
lw s2,0x50(sp)
lw s1,0x4c(sp)
lw s0,0x48(sp)
jr ra
_addiu sp,sp,0x70
li s4,0x8
sra v1,a1,0x1
nor t4,zero,a1
subu a3,s4,v0
li v0,0x3
andi t4,t4,0x1
subu v0,v0,v1
sra a3,a3,0x1
sllv t4,t4,v0
andi v0,a0,0x7
lw a0,0x30(sp)
sltiu v1,a1,0x3
andi s5,t4,0x7
mul v0,v0,a0
bne v1,zero,0x000223f8
_sllv a3,a0,a3
addiu v1,a1,-0x1
sra v1,v1,0x1
srav v1,s4,v1
b 0x00021edc
_sw v1,0x20(sp)
lw v1,0x3c(sp)
nor v0,zero,a0
andi v0,v0,0x7
li a2,0x3
b 0x00021e94
_addu v0,v0,v1
lw v1,0x18(s1)
lw a0,0x1c(s1)
lw s8,-0x7e84(gp)
lw s7,-0x7e80(gp)
sw v1,0x40(sp)
or v1,zero,zero
sw a0,0x44(sp)
li a0,0x1
addiu a1,v1,0x1
beq v0,a0,0x00022214
_sw a1,0x34(sp)
li v0,0x1
or s4,zero,zero
or a0,zero,zero
sw v0,0x28(sp)
li s3,0x1
lw v0,0x10(s1)
beq v0,zero,0x000222bc
_nop
lbu t3,0x1(v0)
sltu v0,s4,s2
lw t6,-0x7e88(gp)
sll v1,t3,0x1
addu v1,t6,v1
beq v0,zero,0x000221f4
_lhu t7,0x0(v1)
lw v0,0x44(sp)
li s5,0xff
lw v1,0x28(sp)
mul v1,v1,v0
sw v1,0x30(sp)
lw v1,0x3c(sp)
subu a0,a0,v1
sw a0,0x2c(sp)
mul a0,s4,v0
lw v0,0x40(sp)
addu a3,a0,v1
addu s6,v0,a3
lw v1,0x14(s1)
or a2,zero,zero
lw t9,-0x7c4c(gp)
or a0,s0,zero
sw t6,0x24(sp)
sw t7,0x20(sp)
or a1,v1,zero
sw t3,0x1c(sp)
jalr t9
_sw v1,0x18(sp)
lw v0,0x2c(sp)
lw gp,0x10(sp)
lw v1,0x18(sp)
addu a0,v0,s6
lw t3,0x1c(sp)
lw t7,0x20(sp)
sltu v0,a0,s6
beq v0,zero,0x000221d8
_lw t6,0x24(sp)
lbu a1,0x1(v1)
beq a1,zero,0x000223d8
_nop
beq a1,s5,0x000221c4
_lbu v0,0x0(v1)
sll v0,v0,0x1
subu a2,s5,a1
addu v0,t6,v0
mult a2,t7
lhu v0,0x0(v0)
madd v0,a1
mflo v0
srl a1,v0,0xf
andi v0,v0,0x7fff
addu a2,s8,a1
sll a1,a1,0x1
lbu a2,0x0(a2)
addu a1,s7,a1
mul v0,v0,a2
lhu a1,0x0(a1)
srl v0,v0,0xc
addu v0,v0,a1
ext v0,v0,0x8,0x8
sb v0,0x0(a0)
addu a0,a0,s3
sltu v0,a0,s6
bne v0,zero,0x00022168
_addiu v1,v1,0x2
lw v0,0x28(sp)
addu s4,s4,v0
lw v0,0x30(sp)
addu s6,s6,v0
sltu v0,s4,s2
bne v0,zero,0x0002211c
_nop
lw v0,0x38(sp)
lw v1,0x34(sp)
beq v0,v1,0x00021fe4
_li a0,0x1
lbu v0,0x1fc(s0)
addiu a1,v1,0x1
bne v0,a0,0x000220b0
_sw a1,0x34(sp)
or a3,a1,zero
li a2,0x3
sra a1,a1,0x1
andi a0,v1,0x1
subu a2,a2,a1
sltiu a1,v1,0x2
bne a1,zero,0x000223e0
_sllv a0,a0,a2
li a1,0x8
andi a2,a0,0x7
subu a1,a1,a3
sra a1,a1,0x1
sllv v0,v0,a1
addiu v0,v0,-0x1
subu v0,v0,a2
lw a2,0x3c(sp)
addu v0,v0,a2
srlv v0,v0,a1
beq v0,zero,0x000221f4
_addiu v0,v1,0x1
li a3,0x8
sra a2,v1,0x1
subu a1,a3,v0
li v0,0x3
nor t2,zero,v1
subu v0,v0,a2
andi t2,t2,0x1
sllv t2,t2,v0
sra a1,a1,0x1
li t0,0x1
sltiu v0,v1,0x3
andi a0,a0,0x7
sllv s3,t0,a1
bne v0,zero,0x00022404
_andi s4,t2,0x7
addiu v0,v1,-0x1
sra v0,v0,0x1
srav v0,a3,v0
sw v0,0x28(sp)
lw v0,0x10(s1)
bne v0,zero,0x000220d0
_nop
sltu v0,s4,s2
beq v0,zero,0x000221f4
_lw v0,0x44(sp)
lw v1,0x28(sp)
lw s5,-0x7e88(gp)
mul v1,v1,v0
sw v1,0x1c(sp)
lw v1,0x3c(sp)
subu a0,a0,v1
sw a0,0x2c(sp)
mul a0,s4,v0
lw v0,0x40(sp)
addu t1,a0,v1
addu s6,v0,t1
lw a3,0x14(s1)
or a2,zero,zero
lw t9,-0x7c4c(gp)
or a0,s0,zero
or a1,a3,zero
jalr t9
_sw a3,0x18(sp)
li a1,0xff
lw v0,0x2c(sp)
lw gp,0x10(sp)
addu a0,v0,s6
sltu v0,a0,s6
beq v0,zero,0x000223ac
_lw a3,0x18(sp)
lbu a2,0x1(a3)
beq a2,zero,0x0002239c
_nop
beq a2,a1,0x00022398
_lbu v0,0x0(a3)
lbu t6,0x0(a0)
sll v1,v0,0x1
subu v0,a1,a2
addu v1,s5,v1
sll t6,t6,0x1
addu t6,s5,t6
lhu v1,0x0(v1)
lhu t6,0x0(t6)
mult t6,v0
madd v1,a2
mflo v0
srl v1,v0,0xf
andi v0,v0,0x7fff
addu a2,s8,v1
sll v1,v1,0x1
lbu a2,0x0(a2)
addu v1,s7,v1
mul v0,v0,a2
lhu v1,0x0(v1)
srl v0,v0,0xc
addu v0,v0,v1
ext v0,v0,0x8,0x8
sb v0,0x0(a0)
addu a0,a0,s3
sltu v0,a0,s6
bne v0,zero,0x0002232c
_addiu a3,a3,0x2
lw v0,0x28(sp)
addu s4,s4,v0
lw v0,0x1c(sp)
addu s6,s6,v0
sltu v0,s4,s2
bne v0,zero,0x000222f4
_lw v0,0x38(sp)
b 0x000221fc
_lw v1,0x34(sp)
b 0x00021dd0
_sw a0,0x38(sp)
b 0x000221c8
_sb t3,0x0(a0)
lw a1,0x3c(sp)
nor v0,zero,a0
andi v0,v0,0x7
addu v0,v0,a1
b 0x00022258
_li a1,0x3
li v1,0x8
b 0x00021edc
_sw v1,0x20(sp)
li v0,0x8
b 0x000220c4
_sw v0,0x28(sp)
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x2dc
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x2f0
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x278
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x290
or a0,s0,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x2b0
lw a1,-0x7fd4(gp)
or a0,s0,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x2c8
lui gp,0x4
addiu gp,gp,-0x7494
addu gp,gp,t9
lw v1,0x0(a0)
addiu sp,sp,-0x68
sw s3,0x4c(sp)
or s3,a0,zero
lw v0,0x0(v1)
sw gp,0x10(sp)
sw ra,0x64(sp)
sw s8,0x60(sp)
sw s7,0x5c(sp)
sw s6,0x58(sp)
sw s5,0x54(sp)
sw s4,0x50(sp)
sw s2,0x48(sp)
sw s1,0x44(sp)
sw s0,0x40(sp)
lw v0,0x0(v0)
sw v0,0x1c(sp)
lbu v0,0x1fc(v0)
beq v0,zero,0x000227b4
_li a0,0x1
li a1,0x7
bne v0,a0,0x000227bc
_sw a1,0x34(sp)
lw a1,0xc(v1)
lw a0,0x10(v1)
sw a1,0x20(sp)
lw a1,0x8(v1)
andi v1,a0,0x2
lw a0,0x1c(s3)
sw a1,0x38(sp)
bne v1,zero,0x00022730
_sw a0,0x3c(sp)
lw v1,0x38(sp)
li s8,0x1
sw v1,0x2c(sp)
lw s7,-0x7e88(gp)
or a0,zero,zero
lw s6,-0x7e84(gp)
b 0x00022598
_or s4,s3,zero
sra v1,t0,0x1
li a2,0x3
andi a1,a0,0x1
subu a2,a2,v1
sltiu v1,a0,0x2
bne v1,zero,0x00022794
_sllv a1,a1,a2
li a2,0x8
andi a3,a1,0x7
subu a2,a2,t0
sra a2,a2,0x1
sllv v1,v0,a2
addiu v1,v1,-0x1
subu v0,v1,a3
lw v1,0x38(sp)
addu v0,v0,v1
srlv v0,v0,a2
bne v0,zero,0x00022744
_lw v0,0x30(sp)
lw v0,0x34(sp)
lw v1,0x30(sp)
beq v0,v1,0x00022700
_lw ra,0x64(sp)
lw v0,0x1c(sp)
lw a0,0x30(sp)
lbu v0,0x1fc(v0)
addiu t0,a0,0x1
li v1,0x1
beq v0,v1,0x00022530
_sw t0,0x30(sp)
or s5,zero,zero
sw zero,0x24(sp)
li s1,0x1
or s3,s8,zero
lw v0,0x20(sp)
sltu v0,s5,v0
beq v0,zero,0x0002257c
_lw v0,0x3c(sp)
sw s4,0x68(sp)
or s4,s3,zero
or s3,s1,zero
mul v1,s1,v0
lw s1,0x68(sp)
mul s0,s5,v0
sw v1,0x28(sp)
or s2,s0,zero
or s0,s5,zero
lw s5,0x14(s1)
or a2,zero,zero
lw t9,-0x7c4c(gp)
lw a0,0x1c(sp)
jalr t9
_or a1,s5,zero
lw a0,0x18(s1)
lw v0,0x2c(sp)
addu a0,a0,s2
addu t1,a0,v0
lw v0,0x24(sp)
addu a0,a0,v0
sltu v1,a0,t1
beq v1,zero,0x000226d4
_lw gp,0x10(sp)
lw t8,-0x7e80(gp)
addiu t6,s8,0x1
addu a1,s5,s8
b 0x0002264c
_li t5,0xff
addu a0,a0,s4
sltu v0,a0,t1
beq v0,zero,0x000226d4
_addu a1,a1,t6
lbu a3,0x0(a1)
beq a3,zero,0x0002263c
_subu v1,a1,s8
subu t0,t5,a3
or a2,a0,zero
beq a3,t5,0x000226b4
_lbu v0,0x0(v1)
lbu t2,0x0(a2)
sll t3,v0,0x10
subu t3,t3,v0
sll t2,t2,0x1
addu t2,s7,t2
lhu v0,0x0(t2)
mul t2,v0,t0
addu v0,t2,t3
srl t2,v0,0xf
andi v0,v0,0x7fff
addu t3,s6,t2
sll t2,t2,0x1
lbu t3,0x0(t3)
addu t2,t8,t2
mul v0,v0,t3
lhu t2,0x0(t2)
srl v0,v0,0xc
addu v0,v0,t2
ext v0,v0,0x8,0x8
addiu v1,v1,0x1
sb v0,0x0(a2)
bne v1,a1,0x00022660
_addiu a2,a2,0x1
addu a0,a0,s4
sltu v0,a0,t1
bne v0,zero,0x0002264c
_addu a1,a1,t6
lw v0,0x28(sp)
addu s0,s0,s3
addu s2,s2,v0
lw v0,0x20(sp)
sltu v0,s0,v0
bne v0,zero,0x000225ec
_lw v0,0x34(sp)
lw v1,0x30(sp)
bne v0,v1,0x0002258c
_or s4,s1,zero
lw ra,0x64(sp)
li v0,0x1
lw s8,0x60(sp)
lw s7,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x68
sll v1,a1,0x1
li s8,0x3
addu v1,v1,a1
b 0x0002251c
_sw v1,0x2c(sp)
li s1,0x8
sra v1,a0,0x1
andi a1,a1,0x7
subu s3,s1,v0
li v0,0x3
nor t2,zero,a0
subu v0,v0,v1
mul v1,a1,s8
andi t2,t2,0x1
sllv t2,t2,v0
sra s3,s3,0x1
sltiu v0,a0,0x3
sllv s3,s8,s3
andi s5,t2,0x7
bne v0,zero,0x000227ac
_sw v1,0x24(sp)
addiu v0,a0,-0x1
sra v0,v0,0x1
b 0x000225b8
_srav s1,s1,v0
lw v1,0x38(sp)
nor v0,zero,a1
andi v0,v0,0x7
li a2,0x3
b 0x00022570
_addu v0,v0,v1
b 0x000225b8
_li s1,0x8
b 0x000224ec
_sw a0,0x34(sp)
lw a1,-0x7fd4(gp)
lw a0,0x1c(sp)
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x290
lui gp,0x4
addiu gp,gp,-0x77e0
addu gp,gp,t9
addiu sp,sp,-0x40
lw t9,-0x7f80(gp)
sw s6,0x38(sp)
addiu t9,t9,-0x1aa4
lw s6,0x0(a0)
sw s2,0x28(sp)
sw s5,0x34(sp)
or s5,a0,zero
sw gp,0x10(sp)
lw v0,0x0(s6)
sw s0,0x20(sp)
sw ra,0x3c(sp)
sw s4,0x30(sp)
sw s3,0x2c(sp)
sw s1,0x24(sp)
lw s2,0x0(v0)
lw s0,0x4(v0)
bal 0x0001e55c
_or a0,s2,zero
lw v0,0x28(s5)
beq v0,zero,0x00022a88
_lw gp,0x10(sp)
or s4,zero,zero
lw t9,-0x7ad8(gp)
or a1,s0,zero
jalr t9
_or a0,s2,zero
lw v0,0x28(s5)
sltiu v1,v0,0x5
beq v1,zero,0x00022978
_lw gp,0x10(sp)
sll v1,v0,0x2
lw v0,-0x7fd4(gp)
addiu v0,v0,0x164
addu v0,v0,v1
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
lw s3,0x8(s5)
bgez s3,0x000228c8
_lw v0,0x4(s5)
lw v1,0xc(s6)
addiu v1,v1,-0x1
mul a0,s3,v1
subu v0,v0,a0
sw v0,0x18(s5)
beq s4,zero,0x000229f8
_sw s3,0x1c(s5)
addiu s4,s4,-0x1
bltz s4,0x0002291c
_lw ra,0x3c(sp)
lw s0,0xc(s6)
beq s0,zero,0x000228d4
_lw s1,0x18(s5)
lw t9,-0x7c4c(gp)
or a2,zero,zero
addiu s0,s0,-0x1
or a1,s1,zero
jalr t9
_or a0,s2,zero
addu s1,s1,s3
bne s0,zero,0x000228ec
_lw gp,0x10(sp)
addiu s4,s4,-0x1
bgez s4,0x000228e0
_lw ra,0x3c(sp)
li v0,0x1
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x40
lw a1,-0x7fd4(gp)
or a0,s2,zero
lw t9,-0x7be4(gp)
jalr t9
_addiu a1,a1,-0x260
lbu v0,0x19(s0)
li v1,0x3
beq v0,v1,0x000229a4
_nop
bne v0,zero,0x0002297c
_lw a1,-0x7fd4(gp)
lbu v1,0x18(s0)
li v0,0x8
beq v1,v0,0x000228ac
_lw a1,-0x7fd4(gp)
b 0x00022980
_or a0,s2,zero
lw t9,-0x7ae4(gp)
or a1,s0,zero
jalr t9
_or a0,s2,zero
or a0,s2,zero
lw gp,0x10(sp)
lw t9,-0x7ce8(gp)
jalr t9
_or a1,v0,zero
or a2,s5,zero
lw gp,0x10(sp)
or a0,s6,zero
sw v0,0x14(s5)
or s0,v0,zero
lw a1,-0x7f80(gp)
lw t9,-0x7e58(gp)
bal 0x0001a610
_addiu a1,a1,0x2aa0
or a1,s0,zero
lw gp,0x10(sp)
or a0,s2,zero
sw v0,0x1c(sp)
lw t9,-0x7ccc(gp)
jalr t9
_sw zero,0x14(s5)
lw ra,0x3c(sp)
lw v0,0x1c(sp)
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x40
lw t9,-0x7bc8(gp)
jalr t9
_or a0,s2,zero
lw gp,0x10(sp)
b 0x00022838
_or s4,v0,zero
(translation_unit "int png_read_row(undefined4 *param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  int iVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int iVar10;\n  ushort uVar12;\n  byte bVar13;\n  byte bVar14;\n  char cVar15;\n  undefined4 uVar11;\n  uint uVar16;\n  undefined4 *puVar17;\n  byte *pbVar18;\n  undefined *puVar19;\n  undefined4 uVar20;\n  ushort *puVar21;\n  byte *pbVar22;\n  ushort *puVar23;\n  byte *pbVar24;\n  int iVar25;\n  uint uVar26;\n  byte *pbVar27;\n  undefined4 *unaff_s0;\n  undefined4 *puVar28;\n  undefined4 *puVar29;\n  int iVar30;\n  uint uVar31;\n  int iVar32;\n  int iVar33;\n  int unaff_s2;\n  int iVar34;\n  int *piVar35;\n  uint uVar36;\n  int iVar37;\n  int iVar38;\n  undefined *puVar39;\n  code *pcVar40;\n  code *pcVar41;\n  uint uVar42;\n  int local_164;\n  int local_15c;\n  uint local_154;\n  int local_100;\n  int local_f8;\n  uint local_f4;\n  uint local_ec;\n  uint local_e8;\n  uint local_80;\n  ushort local_7c;\n  ushort local_7a;\n  ushort local_78;\n  int local_74;\n  undefined4 *local_70;\n  undefined *local_6c;\n  int local_68;\n  int local_64;\n  int local_28;\n  uint local_24;\n  byte local_20;\n  char local_1f;\n  undefined2 local_1e;\n  int local_1c;\n  \n  puVar3 = PTR___stack_chk_guard_000534bc;\n  local_1c = *(int *)PTR___stack_chk_guard_000534bc;\n  if (param_1 != (undefined4 *)0x0) {\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }\nLAB_000212f4:\n  iVar4 = *(int *)puVar3;\n  if (local_1c == iVar4) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\n  param_1 = unaff_s0;\n  param_3 = unaff_s2;\nLAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);\nLAB_000215e0:\n  puVar19 = PTR_s_nt_0005301c + -0x9d4;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19);\nLAB_000215f4:\n  puVar29 = param_1;\n  puVar39 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8);\n  piVar5 = *(int **)(puVar39 + 0x31eb8);\n  piVar35 = (int *)*puVar29;\n  local_74 = *piVar5;\n  local_6c = puVar3;\n  uVar31 = piVar35[4];\n  uVar16 = uVar31 & 4;\n  puVar28 = *(undefined4 **)*piVar35;\n  iVar4 = ((undefined4 *)*piVar35)[1];\n  local_70 = param_1;\n  local_68 = param_3;\n  local_64 = param_2;\n  (**(code **)(puVar39 + 0x31d60))(puVar28);\n  uVar6 = FUN_0001e440(puVar28);\n  uVar42 = uVar6 & 0xfffffff7 ^ uVar31;\n  if ((uVar42 & 2) == 0) {\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }\n  (*pcVar40)(puVar28,0,0xffffffff);\njoined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }\n  if ((uVar42 & 0x40) != 0) {\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }\n  if (uVar36 != 0) goto LAB_00021afc;\n  do {\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );\n  while( true ) {\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }\nLAB_000219e8:\n  if (local_74 == *piVar5) {\n    return iVar4;\n  }\nLAB_00021ce8:\n  (**(code **)(puVar39 + 0x31e80))();\nLAB_00021cf4:\n  (**(code **)(puVar39 + 0x31e08))();\nLAB_00021d04:\n  pcVar40 = *(code **)(puVar39 + 0x31e08);\n  (*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318);\n  piVar5 = (int *)*puVar28;\n  iVar4 = piVar5[2];\n  puVar29 = *(undefined4 **)*piVar5;\n  iVar34 = ((undefined4 *)*piVar5)[1];\n  uVar42 = piVar5[3];\n  if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }\n  (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0);\nLAB_00022470:\n  pcVar41 = *(code **)(pcVar40 + 0x316f4);\n  (*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8);\n  puVar17 = (undefined4 *)*puVar29;\n  puVar28 = *(undefined4 **)*puVar17;\n  cVar15 = *(char *)(puVar28 + 0x7f);\n  if (cVar15 == '\0') {\n    local_154 = 1;\n  }\n  else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }\n  uVar42 = puVar17[3];\n  iVar34 = puVar17[2];\n  iVar4 = puVar29[7];\n  if ((puVar17[4] & 2) == 0) {\n    iVar9 = 1;\n    local_15c = iVar34;\n  }\n  else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }\n  iVar25 = *(int *)(pcVar41 + 0x30ce4);\n  iVar32 = *(int *)(pcVar41 + 0x30ce8);\n  uVar6 = 0;\n  do {\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  } while( true );\n}\n\n" (function_definition "int png_read_row(undefined4 *param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  int iVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int iVar10;\n  ushort uVar12;\n  byte bVar13;\n  byte bVar14;\n  char cVar15;\n  undefined4 uVar11;\n  uint uVar16;\n  undefined4 *puVar17;\n  byte *pbVar18;\n  undefined *puVar19;\n  undefined4 uVar20;\n  ushort *puVar21;\n  byte *pbVar22;\n  ushort *puVar23;\n  byte *pbVar24;\n  int iVar25;\n  uint uVar26;\n  byte *pbVar27;\n  undefined4 *unaff_s0;\n  undefined4 *puVar28;\n  undefined4 *puVar29;\n  int iVar30;\n  uint uVar31;\n  int iVar32;\n  int iVar33;\n  int unaff_s2;\n  int iVar34;\n  int *piVar35;\n  uint uVar36;\n  int iVar37;\n  int iVar38;\n  undefined *puVar39;\n  code *pcVar40;\n  code *pcVar41;\n  uint uVar42;\n  int local_164;\n  int local_15c;\n  uint local_154;\n  int local_100;\n  int local_f8;\n  uint local_f4;\n  uint local_ec;\n  uint local_e8;\n  uint local_80;\n  ushort local_7c;\n  ushort local_7a;\n  ushort local_78;\n  int local_74;\n  undefined4 *local_70;\n  undefined *local_6c;\n  int local_68;\n  int local_64;\n  int local_28;\n  uint local_24;\n  byte local_20;\n  char local_1f;\n  undefined2 local_1e;\n  int local_1c;\n  \n  puVar3 = PTR___stack_chk_guard_000534bc;\n  local_1c = *(int *)PTR___stack_chk_guard_000534bc;\n  if (param_1 != (undefined4 *)0x0) {\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }\nLAB_000212f4:\n  iVar4 = *(int *)puVar3;\n  if (local_1c == iVar4) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\n  param_1 = unaff_s0;\n  param_3 = unaff_s2;\nLAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);\nLAB_000215e0:\n  puVar19 = PTR_s_nt_0005301c + -0x9d4;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19);\nLAB_000215f4:\n  puVar29 = param_1;\n  puVar39 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8);\n  piVar5 = *(int **)(puVar39 + 0x31eb8);\n  piVar35 = (int *)*puVar29;\n  local_74 = *piVar5;\n  local_6c = puVar3;\n  uVar31 = piVar35[4];\n  uVar16 = uVar31 & 4;\n  puVar28 = *(undefined4 **)*piVar35;\n  iVar4 = ((undefined4 *)*piVar35)[1];\n  local_70 = param_1;\n  local_68 = param_3;\n  local_64 = param_2;\n  (**(code **)(puVar39 + 0x31d60))(puVar28);\n  uVar6 = FUN_0001e440(puVar28);\n  uVar42 = uVar6 & 0xfffffff7 ^ uVar31;\n  if ((uVar42 & 2) == 0) {\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }\n  (*pcVar40)(puVar28,0,0xffffffff);\njoined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }\n  if ((uVar42 & 0x40) != 0) {\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }\n  if (uVar36 != 0) goto LAB_00021afc;\n  do {\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );\n  while( true ) {\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }\nLAB_000219e8:\n  if (local_74 == *piVar5) {\n    return iVar4;\n  }\nLAB_00021ce8:\n  (**(code **)(puVar39 + 0x31e80))();\nLAB_00021cf4:\n  (**(code **)(puVar39 + 0x31e08))();\nLAB_00021d04:\n  pcVar40 = *(code **)(puVar39 + 0x31e08);\n  (*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318);\n  piVar5 = (int *)*puVar28;\n  iVar4 = piVar5[2];\n  puVar29 = *(undefined4 **)*piVar5;\n  iVar34 = ((undefined4 *)*piVar5)[1];\n  uVar42 = piVar5[3];\n  if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }\n  (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0);\nLAB_00022470:\n  pcVar41 = *(code **)(pcVar40 + 0x316f4);\n  (*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8);\n  puVar17 = (undefined4 *)*puVar29;\n  puVar28 = *(undefined4 **)*puVar17;\n  cVar15 = *(char *)(puVar28 + 0x7f);\n  if (cVar15 == '\0') {\n    local_154 = 1;\n  }\n  else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }\n  uVar42 = puVar17[3];\n  iVar34 = puVar17[2];\n  iVar4 = puVar29[7];\n  if ((puVar17[4] & 2) == 0) {\n    iVar9 = 1;\n    local_15c = iVar34;\n  }\n  else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }\n  iVar25 = *(int *)(pcVar41 + 0x30ce4);\n  iVar32 = *(int *)(pcVar41 + 0x30ce8);\n  uVar6 = 0;\n  do {\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  } while( true );\n}" primitive_type (function_declarator "png_read_row(undefined4 *param_1,int param_2,int param_3)" identifier (parameter_list "(undefined4 *param_1,int param_2,int param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  int iVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int iVar10;\n  ushort uVar12;\n  byte bVar13;\n  byte bVar14;\n  char cVar15;\n  undefined4 uVar11;\n  uint uVar16;\n  undefined4 *puVar17;\n  byte *pbVar18;\n  undefined *puVar19;\n  undefined4 uVar20;\n  ushort *puVar21;\n  byte *pbVar22;\n  ushort *puVar23;\n  byte *pbVar24;\n  int iVar25;\n  uint uVar26;\n  byte *pbVar27;\n  undefined4 *unaff_s0;\n  undefined4 *puVar28;\n  undefined4 *puVar29;\n  int iVar30;\n  uint uVar31;\n  int iVar32;\n  int iVar33;\n  int unaff_s2;\n  int iVar34;\n  int *piVar35;\n  uint uVar36;\n  int iVar37;\n  int iVar38;\n  undefined *puVar39;\n  code *pcVar40;\n  code *pcVar41;\n  uint uVar42;\n  int local_164;\n  int local_15c;\n  uint local_154;\n  int local_100;\n  int local_f8;\n  uint local_f4;\n  uint local_ec;\n  uint local_e8;\n  uint local_80;\n  ushort local_7c;\n  ushort local_7a;\n  ushort local_78;\n  int local_74;\n  undefined4 *local_70;\n  undefined *local_6c;\n  int local_68;\n  int local_64;\n  int local_28;\n  uint local_24;\n  byte local_20;\n  char local_1f;\n  undefined2 local_1e;\n  int local_1c;\n  \n  puVar3 = PTR___stack_chk_guard_000534bc;\n  local_1c = *(int *)PTR___stack_chk_guard_000534bc;\n  if (param_1 != (undefined4 *)0x0) {\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }\nLAB_000212f4:\n  iVar4 = *(int *)puVar3;\n  if (local_1c == iVar4) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\n  param_1 = unaff_s0;\n  param_3 = unaff_s2;\nLAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);\nLAB_000215e0:\n  puVar19 = PTR_s_nt_0005301c + -0x9d4;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19);\nLAB_000215f4:\n  puVar29 = param_1;\n  puVar39 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8);\n  piVar5 = *(int **)(puVar39 + 0x31eb8);\n  piVar35 = (int *)*puVar29;\n  local_74 = *piVar5;\n  local_6c = puVar3;\n  uVar31 = piVar35[4];\n  uVar16 = uVar31 & 4;\n  puVar28 = *(undefined4 **)*piVar35;\n  iVar4 = ((undefined4 *)*piVar35)[1];\n  local_70 = param_1;\n  local_68 = param_3;\n  local_64 = param_2;\n  (**(code **)(puVar39 + 0x31d60))(puVar28);\n  uVar6 = FUN_0001e440(puVar28);\n  uVar42 = uVar6 & 0xfffffff7 ^ uVar31;\n  if ((uVar42 & 2) == 0) {\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }\n  (*pcVar40)(puVar28,0,0xffffffff);\njoined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }\n  if ((uVar42 & 0x40) != 0) {\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }\n  if (uVar36 != 0) goto LAB_00021afc;\n  do {\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );\n  while( true ) {\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }\nLAB_000219e8:\n  if (local_74 == *piVar5) {\n    return iVar4;\n  }\nLAB_00021ce8:\n  (**(code **)(puVar39 + 0x31e80))();\nLAB_00021cf4:\n  (**(code **)(puVar39 + 0x31e08))();\nLAB_00021d04:\n  pcVar40 = *(code **)(puVar39 + 0x31e08);\n  (*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318);\n  piVar5 = (int *)*puVar28;\n  iVar4 = piVar5[2];\n  puVar29 = *(undefined4 **)*piVar5;\n  iVar34 = ((undefined4 *)*piVar5)[1];\n  uVar42 = piVar5[3];\n  if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }\n  (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0);\nLAB_00022470:\n  pcVar41 = *(code **)(pcVar40 + 0x316f4);\n  (*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8);\n  puVar17 = (undefined4 *)*puVar29;\n  puVar28 = *(undefined4 **)*puVar17;\n  cVar15 = *(char *)(puVar28 + 0x7f);\n  if (cVar15 == '\0') {\n    local_154 = 1;\n  }\n  else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }\n  uVar42 = puVar17[3];\n  iVar34 = puVar17[2];\n  iVar4 = puVar29[7];\n  if ((puVar17[4] & 2) == 0) {\n    iVar9 = 1;\n    local_15c = iVar34;\n  }\n  else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }\n  iVar25 = *(int *)(pcVar41 + 0x30ce4);\n  iVar32 = *(int *)(pcVar41 + 0x30ce8);\n  uVar6 = 0;\n  do {\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "ushort uVar12;" type_identifier identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "char cVar15;" primitive_type identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "undefined4 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "undefined *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined4 uVar20;" type_identifier identifier ;) (declaration "ushort *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "byte *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "ushort *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "byte *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "byte *pbVar27;" type_identifier (pointer_declarator "*pbVar27" * identifier) ;) (declaration "undefined4 *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "undefined4 *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "undefined4 *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "int unaff_s2;" primitive_type identifier ;) (declaration "int iVar34;" primitive_type identifier ;) (declaration "int *piVar35;" primitive_type (pointer_declarator "*piVar35" * identifier) ;) (declaration "uint uVar36;" type_identifier identifier ;) (declaration "int iVar37;" primitive_type identifier ;) (declaration "int iVar38;" primitive_type identifier ;) (declaration "undefined *puVar39;" type_identifier (pointer_declarator "*puVar39" * identifier) ;) (declaration "code *pcVar40;" type_identifier (pointer_declarator "*pcVar40" * identifier) ;) (declaration "code *pcVar41;" type_identifier (pointer_declarator "*pcVar41" * identifier) ;) (declaration "uint uVar42;" type_identifier identifier ;) (declaration "int local_164;" primitive_type identifier ;) (declaration "int local_15c;" primitive_type identifier ;) (declaration "uint local_154;" type_identifier identifier ;) (declaration "int local_100;" primitive_type identifier ;) (declaration "int local_f8;" primitive_type identifier ;) (declaration "uint local_f4;" type_identifier identifier ;) (declaration "uint local_ec;" type_identifier identifier ;) (declaration "uint local_e8;" type_identifier identifier ;) (declaration "uint local_80;" type_identifier identifier ;) (declaration "ushort local_7c;" type_identifier identifier ;) (declaration "ushort local_7a;" type_identifier identifier ;) (declaration "ushort local_78;" type_identifier identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "undefined4 *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "undefined *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "byte local_20;" type_identifier identifier ;) (declaration "char local_1f;" primitive_type identifier ;) (declaration "undefined2 local_1e;" type_identifier identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_000534bc;" (assignment_expression "puVar3 = PTR___stack_chk_guard_000534bc" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_000534bc;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_000534bc" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000534bc" * (cast_expression "(int *)PTR___stack_chk_guard_000534bc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_1 != (undefined4 *)0x0) {\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }" if (parenthesized_expression "(param_1 != (undefined4 *)0x0)" ( (binary_expression "param_1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }" { (if_statement "if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;" if (parenthesized_expression "((param_1[0x4a] & 0x40) == 0)" ( (binary_expression "(param_1[0x4a] & 0x40) == 0" (parenthesized_expression "(param_1[0x4a] & 0x40)" ( (binary_expression "param_1[0x4a] & 0x40" (subscript_expression "param_1[0x4a]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00021340;" goto statement_identifier ;)) (labeled_statement "LAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);" statement_identifier : (expression_statement "bVar14 = *(byte *)((int)param_1 + 0x202);" (assignment_expression "bVar14 = *(byte *)((int)param_1 + 0x202)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x202)" * (cast_expression "(byte *)((int)param_1 + 0x202)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x202)" ( (binary_expression "(int)param_1 + 0x202" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (expression_statement "local_28 = param_1[0x71];" (assignment_expression "local_28 = param_1[0x71]" identifier = (subscript_expression "param_1[0x71]" identifier [ number_literal ])) ;) (expression_statement "local_20 = *(byte *)((int)param_1 + 0x1ff);" (assignment_expression "local_20 = *(byte *)((int)param_1 + 0x1ff)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x1ff)" * (cast_expression "(byte *)((int)param_1 + 0x1ff)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x1ff)" ( (binary_expression "(int)param_1 + 0x1ff" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;" (assignment_expression "local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8" identifier = (binary_expression "(ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8" (call_expression "(ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8)" ( (binary_expression "(*(ushort *)((int)param_1 + 0x202) & 0xff) << 8" (parenthesized_expression "(*(ushort *)((int)param_1 + 0x202) & 0xff)" ( (binary_expression "*(ushort *)((int)param_1 + 0x202) & 0xff" (pointer_expression "*(ushort *)((int)param_1 + 0x202)" * (cast_expression "(ushort *)((int)param_1 + 0x202)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x202)" ( (binary_expression "(int)param_1 + 0x202" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) << number_literal) ))) | (binary_expression "*(ushort *)((int)param_1 + 0x202) >> 8" (pointer_expression "*(ushort *)((int)param_1 + 0x202)" * (cast_expression "(ushort *)((int)param_1 + 0x202)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x202)" ( (binary_expression "(int)param_1 + 0x202" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal))) ;) (expression_statement "local_1f = *(char *)(param_1 + 0x80);" (assignment_expression "local_1f = *(char *)(param_1 + 0x80)" identifier = (pointer_expression "*(char *)(param_1 + 0x80)" * (cast_expression "(char *)(param_1 + 0x80)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }" if (parenthesized_expression "(bVar14 < 8)" ( (binary_expression "bVar14 < 8" identifier < number_literal) )) (compound_statement "{\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }" { (expression_statement "local_24 = (uint)bVar14 * local_28 + 7 >> 3;" (assignment_expression "local_24 = (uint)bVar14 * local_28 + 7 >> 3" identifier = (binary_expression "(uint)bVar14 * local_28 + 7 >> 3" (binary_expression "(uint)bVar14 * local_28 + 7" (binary_expression "(uint)bVar14 * local_28" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * identifier) + number_literal) >> number_literal)) ;) }) (else_clause "else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }" else (compound_statement "{\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }" { (expression_statement "local_24 = (uint)(bVar14 >> 3) * local_28;" (assignment_expression "local_24 = (uint)(bVar14 >> 3) * local_28" identifier = (binary_expression "(uint)(bVar14 >> 3) * local_28" (call_expression "(uint)(bVar14 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar14 >> 3)" ( (binary_expression "bVar14 >> 3" identifier >> number_literal) ))) * identifier)) ;) }))) (expression_statement "unaff_s0 = param_1;" (assignment_expression "unaff_s0 = param_1" identifier = identifier) ;) (expression_statement "unaff_s2 = param_3;" (assignment_expression "unaff_s2 = param_3" identifier = identifier) ;) (if_statement "if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }" if (parenthesized_expression "((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0))" ( (binary_expression "(*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)" (parenthesized_expression "(*(char *)(param_1 + 0x7f) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x7f) != '\0'" (pointer_expression "*(char *)(param_1 + 0x7f)" * (cast_expression "(char *)(param_1 + 0x7f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7f)" ( (binary_expression "param_1 + 0x7f" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((param_1[0x4b] & 2) != 0)" ( (binary_expression "(param_1[0x4b] & 2) != 0" (parenthesized_expression "(param_1[0x4b] & 2)" ( (binary_expression "param_1[0x4b] & 2" (subscript_expression "param_1[0x4b]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }" { (if_statement "if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }" if (parenthesized_expression "(*(byte *)((int)param_1 + 0x1fd) < 6)" ( (binary_expression "*(byte *)((int)param_1 + 0x1fd) < 6" (pointer_expression "*(byte *)((int)param_1 + 0x1fd)" * (cast_expression "(byte *)((int)param_1 + 0x1fd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x1fd)" ( (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }" { comment comment (expression_statement "iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();" (assignment_expression "iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c))" ( (binary_expression "&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)" * (cast_expression "(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)" ( (binary_expression "PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c" (binary_expression "PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4" identifier + (binary_expression "(uint)*(byte *)((int)param_1 + 0x1fd) * 4" (binary_expression "(uint)*(byte *)((int)param_1 + 0x1fd)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_1 + 0x1fd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x1fd)" ( (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar4;" return identifier ;) })) (if_statement "if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }" if (parenthesized_expression "((param_1[0x72] & 1) == 0)" ( (binary_expression "(param_1[0x72] & 1) == 0" (parenthesized_expression "(param_1[0x72] & 1)" ( (binary_expression "param_1[0x72] & 1" (subscript_expression "param_1[0x72]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }" { (expression_statement "FUN_00030a70(param_1);" (call_expression "FUN_00030a70(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (goto_statement "goto LAB_000212f4;" goto statement_identifier ;) })) })) (if_statement "if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;" if (parenthesized_expression "((param_1[0x49] & 4) == 0)" ( (binary_expression "(param_1[0x49] & 4) == 0" (parenthesized_expression "(param_1[0x49] & 4)" ( (binary_expression "param_1[0x49] & 4" (subscript_expression "param_1[0x49]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000215cc;" goto statement_identifier ;)) (expression_statement "*(undefined1 *)param_1[0x75] = 0xff;" (assignment_expression "*(undefined1 *)param_1[0x75] = 0xff" (pointer_expression "*(undefined1 *)param_1[0x75]" * (cast_expression "(undefined1 *)param_1[0x75]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x75]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "FUN_00030678(param_1,param_1[0x75],local_24 + 1);" (call_expression "FUN_00030678(param_1,param_1[0x75],local_24 + 1)" identifier (argument_list "(param_1,param_1[0x75],local_24 + 1)" ( identifier , (subscript_expression "param_1[0x75]" identifier [ number_literal ]) , (binary_expression "local_24 + 1" identifier + number_literal) ))) ;) (expression_statement "pbVar8 = (byte *)param_1[0x75];" (assignment_expression "pbVar8 = (byte *)param_1[0x75]" identifier = (cast_expression "(byte *)param_1[0x75]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x75]" identifier [ number_literal ]))) ;) (if_statement "if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }" if (parenthesized_expression "(*pbVar8 != 0)" ( (binary_expression "*pbVar8 != 0" (pointer_expression "*pbVar8" * identifier) != number_literal) )) (compound_statement "{\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }" { (if_statement "if (4 < *pbVar8) goto LAB_000215e0;" if (parenthesized_expression "(4 < *pbVar8)" ( (binary_expression "4 < *pbVar8" number_literal < (pointer_expression "*pbVar8" * identifier)) )) (goto_statement "goto LAB_000215e0;" goto statement_identifier ;)) (expression_statement "FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);" (call_expression "FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1)" identifier (argument_list "(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1)" ( identifier , (pointer_expression "&local_28" & identifier) , (binary_expression "pbVar8 + 1" identifier + number_literal) , (binary_expression "param_1[0x74] + 1" (subscript_expression "param_1[0x74]" identifier [ number_literal ]) + number_literal) ))) ;) (expression_statement "pbVar8 = (byte *)param_1[0x75];" (assignment_expression "pbVar8 = (byte *)param_1[0x75]" identifier = (cast_expression "(byte *)param_1[0x75]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x75]" identifier [ number_literal ]))) ;) })) (expression_statement "(*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);" (call_expression "(*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1)" (parenthesized_expression "(*(code *)PTR_memcpy_000534c4)" ( (pointer_expression "*(code *)PTR_memcpy_000534c4" * (cast_expression "(code *)PTR_memcpy_000534c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1[0x74],pbVar8,local_24 + 1)" ( (subscript_expression "param_1[0x74]" identifier [ number_literal ]) , identifier , (binary_expression "local_24 + 1" identifier + number_literal) ))) ;) (if_statement "if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }" if (parenthesized_expression "((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))" ( (binary_expression "(((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0)" (parenthesized_expression "(((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@'))" ( (binary_expression "((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')" (parenthesized_expression "((param_1[0xc0] & 4) == 0)" ( (binary_expression "(param_1[0xc0] & 4) == 0" (parenthesized_expression "(param_1[0xc0] & 4)" ( (binary_expression "param_1[0xc0] & 4" (subscript_expression "param_1[0xc0]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(char *)(param_1 + 0xc1) != '@')" ( (binary_expression "*(char *)(param_1 + 0xc1) != '@'" (pointer_expression "*(char *)(param_1 + 0xc1)" * (cast_expression "(char *)(param_1 + 0xc1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc1)" ( (binary_expression "param_1 + 0xc1" identifier + number_literal) )))) != (char_literal "'@'" ' character ')) ))) )) || (parenthesized_expression "((local_20 & 2) == 0)" ( (binary_expression "(local_20 & 2) == 0" (parenthesized_expression "(local_20 & 2)" ( (binary_expression "local_20 & 2" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }" { (labeled_statement "LAB_00021248:\n      iVar4 = param_1[0x4b];" statement_identifier : (expression_statement "iVar4 = param_1[0x4b];" (assignment_expression "iVar4 = param_1[0x4b]" identifier = (subscript_expression "param_1[0x4b]" identifier [ number_literal ])) ;)) }) (else_clause "else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }" else (compound_statement "{\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }" { (expression_statement "puVar21 = (ushort *)(param_1[0x75] + 1);" (assignment_expression "puVar21 = (ushort *)(param_1[0x75] + 1)" identifier = (cast_expression "(ushort *)(param_1[0x75] + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0x75] + 1)" ( (binary_expression "param_1[0x75] + 1" (subscript_expression "param_1[0x75]" identifier [ number_literal ]) + number_literal) )))) ;) (if_statement "if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }" if (parenthesized_expression "(local_1f != '\b')" ( (binary_expression "local_1f != '\b'" identifier != (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }" { (if_statement "if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }" if (parenthesized_expression "(local_1f == '\x10')" ( (binary_expression "local_1f == '\x10'" identifier == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }" { (if_statement "if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }" if (parenthesized_expression "(local_20 == 2)" ( (binary_expression "local_20 == 2" identifier == number_literal) )) (compound_statement "{\n            iVar4 = 6;\n          }" { (expression_statement "iVar4 = 6;" (assignment_expression "iVar4 = 6" identifier = number_literal) ;) }) (else_clause "else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }" else (compound_statement "{\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }" { (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" identifier = number_literal) ;) (if_statement "if (local_20 != 6) goto LAB_00021248;" if (parenthesized_expression "(local_20 != 6)" ( (binary_expression "local_20 != 6" identifier != number_literal) )) (goto_statement "goto LAB_00021248;" goto statement_identifier ;)) }))) (expression_statement "iVar34 = 0;" (assignment_expression "iVar34 = 0" identifier = number_literal) ;) (if_statement "if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }" if (parenthesized_expression "(local_28 != 0)" ( (binary_expression "local_28 != 0" identifier != number_literal) )) (compound_statement "{\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }" { (do_statement "do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);" do (compound_statement "{\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            }" { (expression_statement "iVar34 = iVar34 + 1;" (assignment_expression "iVar34 = iVar34 + 1" identifier = (binary_expression "iVar34 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;" (assignment_expression "uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff" identifier = (binary_expression "(uint)puVar21[1] + (uint)*puVar21 & 0xffff" (binary_expression "(uint)puVar21[1] + (uint)*puVar21" (cast_expression "(uint)puVar21[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar21[1]" identifier [ number_literal ])) + (binary_expression "(uint)*puVar21" (parenthesized_expression "(uint)" ( identifier )) * identifier)) & number_literal)) ;) (expression_statement "uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;" (assignment_expression "uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff" identifier = (binary_expression "(uint)puVar21[1] + (uint)puVar21[2] & 0xffff" (binary_expression "(uint)puVar21[1] + (uint)puVar21[2]" (cast_expression "(uint)puVar21[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar21[1]" identifier [ number_literal ])) + (cast_expression "(uint)puVar21[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar21[2]" identifier [ number_literal ]))) & number_literal)) ;) (expression_statement "*(char *)((int)puVar21 + 1) = (char)uVar6;" (assignment_expression "*(char *)((int)puVar21 + 1) = (char)uVar6" (pointer_expression "*(char *)((int)puVar21 + 1)" * (cast_expression "(char *)((int)puVar21 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + 1)" ( (binary_expression "(int)puVar21 + 1" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)((int)puVar21 + 5) = (char)uVar42;" (assignment_expression "*(char *)((int)puVar21 + 5) = (char)uVar42" (pointer_expression "*(char *)((int)puVar21 + 5)" * (cast_expression "(char *)((int)puVar21 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + 5)" ( (binary_expression "(int)puVar21 + 5" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(char)uVar42" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)puVar21 = (char)(uVar6 >> 8);" (assignment_expression "*(char *)puVar21 = (char)(uVar6 >> 8)" (pointer_expression "*(char *)puVar21" * (cast_expression "(char *)puVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)(uVar6 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar6 >> 8)" ( (binary_expression "uVar6 >> 8" identifier >> number_literal) )))) ;) (expression_statement "*(char *)(puVar21 + 2) = (char)(uVar42 >> 8);" (assignment_expression "*(char *)(puVar21 + 2) = (char)(uVar42 >> 8)" (pointer_expression "*(char *)(puVar21 + 2)" * (cast_expression "(char *)(puVar21 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 2)" ( (binary_expression "puVar21 + 2" identifier + number_literal) )))) = (cast_expression "(char)(uVar42 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar42 >> 8)" ( (binary_expression "uVar42 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar21 = (ushort *)((int)puVar21 + iVar4);" (assignment_expression "puVar21 = (ushort *)((int)puVar21 + iVar4)" identifier = (cast_expression "(ushort *)((int)puVar21 + iVar4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar4)" ( (binary_expression "(int)puVar21 + iVar4" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(local_28 != iVar34)" ( (binary_expression "local_28 != iVar34" identifier != identifier) )) ;) (expression_statement "iVar4 = param_1[0x4b];" (assignment_expression "iVar4 = param_1[0x4b]" identifier = (subscript_expression "param_1[0x4b]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0002124c;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_00021248;" goto statement_identifier ;) })) (if_statement "if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }" if (parenthesized_expression "(local_20 == 2)" ( (binary_expression "local_20 == 2" identifier == number_literal) )) (compound_statement "{\n        iVar4 = 3;\n      }" { (expression_statement "iVar4 = 3;" (assignment_expression "iVar4 = 3" identifier = number_literal) ;) }) (else_clause "else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }" else (compound_statement "{\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }" { (expression_statement "iVar4 = 4;" (assignment_expression "iVar4 = 4" identifier = number_literal) ;) (if_statement "if (local_20 != 6) goto LAB_00021248;" if (parenthesized_expression "(local_20 != 6)" ( (binary_expression "local_20 != 6" identifier != number_literal) )) (goto_statement "goto LAB_00021248;" goto statement_identifier ;)) }))) (expression_statement "iVar34 = 0;" (assignment_expression "iVar34 = 0" identifier = number_literal) ;) (if_statement "if (local_28 == 0) goto LAB_00021248;" if (parenthesized_expression "(local_28 == 0)" ( (binary_expression "local_28 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021248;" goto statement_identifier ;)) (do_statement "do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);" do (compound_statement "{\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      }" { (expression_statement "uVar12 = *puVar21;" (assignment_expression "uVar12 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "iVar34 = iVar34 + 1;" (assignment_expression "iVar34 = iVar34 + 1" identifier = (binary_expression "iVar34 + 1" identifier + number_literal)) ;) (expression_statement "*(char *)puVar21 = (char)uVar12 + *(char *)puVar21;" (assignment_expression "*(char *)puVar21 = (char)uVar12 + *(char *)puVar21" (pointer_expression "*(char *)puVar21" * (cast_expression "(char *)puVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(char)uVar12 + *(char *)puVar21" (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier) + (pointer_expression "*(char *)puVar21" * (cast_expression "(char *)puVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (expression_statement "*(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);" (assignment_expression "*(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1)" (pointer_expression "*(char *)(puVar21 + 1)" * (cast_expression "(char *)(puVar21 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 1)" ( (binary_expression "puVar21 + 1" identifier + number_literal) )))) = (binary_expression "(char)uVar12 + *(char *)(puVar21 + 1)" (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier) + (pointer_expression "*(char *)(puVar21 + 1)" * (cast_expression "(char *)(puVar21 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 1)" ( (binary_expression "puVar21 + 1" identifier + number_literal) )))))) ;) (expression_statement "puVar21 = (ushort *)((int)puVar21 + iVar4);" (assignment_expression "puVar21 = (ushort *)((int)puVar21 + iVar4)" identifier = (cast_expression "(ushort *)((int)puVar21 + iVar4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar4)" ( (binary_expression "(int)puVar21 + iVar4" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(local_28 != iVar34)" ( (binary_expression "local_28 != iVar34" identifier != identifier) )) ;) (expression_statement "iVar4 = param_1[0x4b];" (assignment_expression "iVar4 = param_1[0x4b]" identifier = (subscript_expression "param_1[0x4b]" identifier [ number_literal ])) ;) }))) (labeled_statement "LAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }" statement_identifier : (if_statement "if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_000277a0(param_1,&local_28);\n    }" { (expression_statement "FUN_000277a0(param_1,&local_28);" (call_expression "FUN_000277a0(param_1,&local_28)" identifier (argument_list "(param_1,&local_28)" ( identifier , (pointer_expression "&local_28" & identifier) ))) ;) }))) (if_statement "if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }" if (parenthesized_expression "(*(byte *)((int)param_1 + 0x207) != 0)" ( (binary_expression "*(byte *)((int)param_1 + 0x207) != 0" (pointer_expression "*(byte *)((int)param_1 + 0x207)" * (cast_expression "(byte *)((int)param_1 + 0x207)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x207)" ( (binary_expression "(int)param_1 + 0x207" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }" { (if_statement "if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;" if (parenthesized_expression "(*(byte *)((int)param_1 + 0x207) == (byte)local_1e)" ( (binary_expression "*(byte *)((int)param_1 + 0x207) == (byte)local_1e" (pointer_expression "*(byte *)((int)param_1 + 0x207)" * (cast_expression "(byte *)((int)param_1 + 0x207)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x207)" ( (binary_expression "(int)param_1 + 0x207" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (cast_expression "(byte)local_1e" ( (type_descriptor "byte" type_identifier) ) identifier)) )) (goto_statement "goto LAB_00021274;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_s_nt_0005301c + -0x3c0)" ( identifier , (binary_expression "PTR_s_nt_0005301c + -0x3c0" identifier + number_literal) ))) ;) (labeled_statement "LAB_00021340:\n      FUN_00030bc4();" statement_identifier : (expression_statement "FUN_00030bc4();" (call_expression "FUN_00030bc4()" identifier (argument_list "()" ( ))) ;)) (goto_statement "goto LAB_00021100;" goto statement_identifier ;) })) (expression_statement "*(byte *)((int)param_1 + 0x207) = (byte)local_1e;" (assignment_expression "*(byte *)((int)param_1 + 0x207) = (byte)local_1e" (pointer_expression "*(byte *)((int)param_1 + 0x207)" * (cast_expression "(byte *)((int)param_1 + 0x207)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x207)" ( (binary_expression "(int)param_1 + 0x207" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(byte)local_1e" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "puVar19 = PTR_s_nt_0005301c;" (assignment_expression "puVar19 = PTR_s_nt_0005301c" identifier = identifier) ;) (if_statement "if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;" if (parenthesized_expression "(*(byte *)((int)param_1 + 0x206) < (byte)local_1e)" ( (binary_expression "*(byte *)((int)param_1 + 0x206) < (byte)local_1e" (pointer_expression "*(byte *)((int)param_1 + 0x206)" * (cast_expression "(byte *)((int)param_1 + 0x206)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x206)" ( (binary_expression "(int)param_1 + 0x206" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < (cast_expression "(byte)local_1e" ( (type_descriptor "byte" type_identifier) ) identifier)) )) (goto_statement "goto LAB_000215f4;" goto statement_identifier ;)) (labeled_statement "LAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }" statement_identifier : (if_statement "if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }" if (parenthesized_expression "((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0))" ( (binary_expression "(*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)" (parenthesized_expression "(*(char *)(param_1 + 0x7f) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x7f) == '\0'" (pointer_expression "*(char *)(param_1 + 0x7f)" * (cast_expression "(char *)(param_1 + 0x7f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7f)" ( (binary_expression "param_1 + 0x7f" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "((param_1[0x4b] & 2) == 0)" ( (binary_expression "(param_1[0x4b] & 2) == 0" (parenthesized_expression "(param_1[0x4b] & 2)" ( (binary_expression "param_1[0x4b] & 2" (subscript_expression "param_1[0x4b]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }" { (if_statement "if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }" { (expression_statement "FUN_0002fb24(param_1,param_2,0xffffffff);" (call_expression "FUN_0002fb24(param_1,param_2,0xffffffff)" identifier (argument_list "(param_1,param_2,0xffffffff)" ( identifier , identifier , number_literal ))) ;) })) (if_statement "if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }" { (expression_statement "FUN_0002fb24(param_1,param_3,0xffffffff);" (call_expression "FUN_0002fb24(param_1,param_3,0xffffffff)" identifier (argument_list "(param_1,param_3,0xffffffff)" ( identifier , identifier , number_literal ))) ;) })) }) (else_clause "else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }" else (compound_statement "{\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }" { (if_statement "if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }" if (parenthesized_expression "(*(byte *)((int)param_1 + 0x1fd) < 6)" ( (binary_expression "*(byte *)((int)param_1 + 0x1fd) < 6" (pointer_expression "*(byte *)((int)param_1 + 0x1fd)" * (cast_expression "(byte *)((int)param_1 + 0x1fd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x1fd)" ( (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) (compound_statement "{\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }" { (expression_statement "FUN_0003010c(&local_28,param_1[0x75] + 1);" (call_expression "FUN_0003010c(&local_28,param_1[0x75] + 1)" identifier (argument_list "(&local_28,param_1[0x75] + 1)" ( (pointer_expression "&local_28" & identifier) , (binary_expression "param_1[0x75] + 1" (subscript_expression "param_1[0x75]" identifier [ number_literal ]) + number_literal) ))) ;) })) (if_statement "if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0002fb24(param_1,param_3,1);\n      }" { (expression_statement "FUN_0002fb24(param_1,param_3,1);" (call_expression "FUN_0002fb24(param_1,param_3,1)" identifier (argument_list "(param_1,param_3,1)" ( identifier , identifier , number_literal ))) ;) })) (if_statement "if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0002fb24(param_1,param_2,0);\n      }" { (expression_statement "FUN_0002fb24(param_1,param_2,0);" (call_expression "FUN_0002fb24(param_1,param_2,0)" identifier (argument_list "(param_1,param_2,0)" ( identifier , identifier , number_literal ))) ;) })) })))) (expression_statement "FUN_00030a70(param_1);" (call_expression "FUN_00030a70(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }" if (parenthesized_expression "((code *)param_1[0x9c] != (code *)0x0)" ( (binary_expression "(code *)param_1[0x9c] != (code *)0x0" (cast_expression "(code *)param_1[0x9c]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x9c]" identifier [ number_literal ])) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }" { (expression_statement "(*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));" (call_expression "(*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd))" (parenthesized_expression "(*(code *)param_1[0x9c])" ( (pointer_expression "*(code *)param_1[0x9c]" * (cast_expression "(code *)param_1[0x9c]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x9c]" identifier [ number_literal ]))) )) (argument_list "(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd))" ( identifier , (subscript_expression "param_1[0x72]" identifier [ number_literal ]) , (pointer_expression "*(undefined1 *)((int)param_1 + 0x1fd)" * (cast_expression "(undefined1 *)((int)param_1 + 0x1fd)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x1fd)" ( (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) })) })) (labeled_statement "LAB_000212f4:\n  iVar4 = *(int *)puVar3;" statement_identifier : (expression_statement "iVar4 = *(int *)puVar3;" (assignment_expression "iVar4 = *(int *)puVar3" identifier = (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (if_statement "if (local_1c == iVar4) {\n    return iVar4;\n  }" if (parenthesized_expression "(local_1c == iVar4)" ( (binary_expression "local_1c == iVar4" identifier == identifier) )) (compound_statement "{\n    return iVar4;\n  }" { (return_statement "return iVar4;" return identifier ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_00053484)();" (call_expression "(*(code *)PTR___stack_chk_fail_00053484)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00053484)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00053484" * (cast_expression "(code *)PTR___stack_chk_fail_00053484" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "param_1 = unaff_s0;" (assignment_expression "param_1 = unaff_s0" identifier = identifier) ;) (expression_statement "param_3 = unaff_s2;" (assignment_expression "param_3 = unaff_s2" identifier = identifier) ;) (labeled_statement "LAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);" statement_identifier : (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_s_nt_0005301c + -0x3fc)" ( identifier , (binary_expression "PTR_s_nt_0005301c + -0x3fc" identifier + number_literal) ))) ;)) (labeled_statement "LAB_000215e0:\n  puVar19 = PTR_s_nt_0005301c + -0x9d4;" statement_identifier : (expression_statement "puVar19 = PTR_s_nt_0005301c + -0x9d4;" (assignment_expression "puVar19 = PTR_s_nt_0005301c + -0x9d4" identifier = (binary_expression "PTR_s_nt_0005301c + -0x9d4" identifier + number_literal)) ;)) (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,puVar19);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,puVar19)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,puVar19)" ( identifier , identifier ))) ;) (labeled_statement "LAB_000215f4:\n  puVar29 = param_1;" statement_identifier : (expression_statement "puVar29 = param_1;" (assignment_expression "puVar29 = param_1" identifier = identifier) ;)) (expression_statement "puVar39 = PTR_png_error_0005340c;" (assignment_expression "puVar39 = PTR_png_error_0005340c" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,puVar19 + -0x3d8)" ( identifier , (binary_expression "puVar19 + -0x3d8" identifier + number_literal) ))) ;) (expression_statement "piVar5 = *(int **)(puVar39 + 0x31eb8);" (assignment_expression "piVar5 = *(int **)(puVar39 + 0x31eb8)" identifier = (pointer_expression "*(int **)(puVar39 + 0x31eb8)" * (cast_expression "(int **)(puVar39 + 0x31eb8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31eb8)" ( (binary_expression "puVar39 + 0x31eb8" identifier + number_literal) ))))) ;) (expression_statement "piVar35 = (int *)*puVar29;" (assignment_expression "piVar35 = (int *)*puVar29" identifier = (cast_expression "(int *)*puVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar29" * identifier))) ;) (expression_statement "local_74 = *piVar5;" (assignment_expression "local_74 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "local_6c = puVar3;" (assignment_expression "local_6c = puVar3" identifier = identifier) ;) (expression_statement "uVar31 = piVar35[4];" (assignment_expression "uVar31 = piVar35[4]" identifier = (subscript_expression "piVar35[4]" identifier [ number_literal ])) ;) (expression_statement "uVar16 = uVar31 & 4;" (assignment_expression "uVar16 = uVar31 & 4" identifier = (binary_expression "uVar31 & 4" identifier & number_literal)) ;) (expression_statement "puVar28 = *(undefined4 **)*piVar35;" (assignment_expression "puVar28 = *(undefined4 **)*piVar35" identifier = (pointer_expression "*(undefined4 **)*piVar35" * (cast_expression "(undefined4 **)*piVar35" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar35" * identifier)))) ;) (expression_statement "iVar4 = ((undefined4 *)*piVar35)[1];" (assignment_expression "iVar4 = ((undefined4 *)*piVar35)[1]" identifier = (subscript_expression "((undefined4 *)*piVar35)[1]" (parenthesized_expression "((undefined4 *)*piVar35)" ( (cast_expression "(undefined4 *)*piVar35" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar35" * identifier)) )) [ number_literal ])) ;) (expression_statement "local_70 = param_1;" (assignment_expression "local_70 = param_1" identifier = identifier) ;) (expression_statement "local_68 = param_3;" (assignment_expression "local_68 = param_3" identifier = identifier) ;) (expression_statement "local_64 = param_2;" (assignment_expression "local_64 = param_2" identifier = identifier) ;) (expression_statement "(**(code **)(puVar39 + 0x31d60))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31d60))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d60))" ( (pointer_expression "**(code **)(puVar39 + 0x31d60)" * (pointer_expression "*(code **)(puVar39 + 0x31d60)" * (cast_expression "(code **)(puVar39 + 0x31d60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d60)" ( (binary_expression "puVar39 + 0x31d60" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) (expression_statement "uVar6 = FUN_0001e440(puVar28);" (assignment_expression "uVar6 = FUN_0001e440(puVar28)" identifier = (call_expression "FUN_0001e440(puVar28)" identifier (argument_list "(puVar28)" ( identifier )))) ;) (expression_statement "uVar42 = uVar6 & 0xfffffff7 ^ uVar31;" (assignment_expression "uVar42 = uVar6 & 0xfffffff7 ^ uVar31" identifier = (binary_expression "uVar6 & 0xfffffff7 ^ uVar31" (binary_expression "uVar6 & 0xfffffff7" identifier & number_literal) ^ identifier)) ;) (if_statement "if ((uVar42 & 2) == 0) {\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }" if (parenthesized_expression "((uVar42 & 2) == 0)" ( (binary_expression "(uVar42 & 2) == 0" (parenthesized_expression "(uVar42 & 2)" ( (binary_expression "uVar42 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }" { (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (if_statement "if ((uVar6 & 4) != 0) goto LAB_000217f4;" if (parenthesized_expression "((uVar6 & 4) != 0)" ( (binary_expression "(uVar6 & 4) != 0" (parenthesized_expression "(uVar6 & 4)" ( (binary_expression "uVar6 & 4" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000217f4;" goto statement_identifier ;)) (labeled_statement "LAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);" statement_identifier : (expression_statement "pcVar40 = *(code **)(puVar39 + 0x31d88);" (assignment_expression "pcVar40 = *(code **)(puVar39 + 0x31d88)" identifier = (pointer_expression "*(code **)(puVar39 + 0x31d88)" * (cast_expression "(code **)(puVar39 + 0x31d88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d88)" ( (binary_expression "puVar39 + 0x31d88" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }" else (compound_statement "{\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }" { (if_statement "if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }" if (parenthesized_expression "((uVar31 & 2) == 0)" ( (binary_expression "(uVar31 & 2) == 0" (parenthesized_expression "(uVar31 & 2)" ( (binary_expression "uVar31 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }" { (expression_statement "(**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);" (call_expression "(**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff)" (parenthesized_expression "(**(code **)(puVar39 + 0x31dac))" ( (pointer_expression "**(code **)(puVar39 + 0x31dac)" * (pointer_expression "*(code **)(puVar39 + 0x31dac)" * (cast_expression "(code **)(puVar39 + 0x31dac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31dac)" ( (binary_expression "puVar39 + 0x31dac" identifier + number_literal) ))))) )) (argument_list "(puVar28,1,0xffffffff,0xffffffff)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "uVar36 = uVar6 & 1;" (assignment_expression "uVar36 = uVar6 & 1" identifier = (binary_expression "uVar6 & 1" identifier & number_literal)) ;) }) (else_clause "else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }" else (compound_statement "{\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }" { (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(puVar39 + 0x31d00))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31d00))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d00))" ( (pointer_expression "**(code **)(puVar39 + 0x31d00)" * (pointer_expression "*(code **)(puVar39 + 0x31d00)" * (cast_expression "(code **)(puVar39 + 0x31d00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d00)" ( (binary_expression "puVar39 + 0x31d00" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) }))) (expression_statement "uVar42 = uVar42 & 0xfffffffd;" (assignment_expression "uVar42 = uVar42 & 0xfffffffd" identifier = (binary_expression "uVar42 & 0xfffffffd" identifier & number_literal)) ;) (if_statement "if ((uVar6 & 4) == 0) goto LAB_000216e8;" if (parenthesized_expression "((uVar6 & 4) == 0)" ( (binary_expression "(uVar6 & 4) == 0" (parenthesized_expression "(uVar6 & 4)" ( (binary_expression "uVar6 & 4" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000216e8;" goto statement_identifier ;)) (labeled_statement "LAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);" statement_identifier : (expression_statement "pcVar40 = *(code **)(puVar39 + 0x31d88);" (assignment_expression "pcVar40 = *(code **)(puVar39 + 0x31d88)" identifier = (pointer_expression "*(code **)(puVar39 + 0x31d88)" * (cast_expression "(code **)(puVar39 + 0x31d88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d88)" ( (binary_expression "puVar39 + 0x31d88" identifier + number_literal) ))))) ;)) (if_statement "if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }" if (parenthesized_expression "((piVar35[5] & 4U) == 0)" ( (binary_expression "(piVar35[5] & 4U) == 0" (parenthesized_expression "(piVar35[5] & 4U)" ( (binary_expression "piVar35[5] & 4U" (subscript_expression "piVar35[5]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }" { (expression_statement "(*pcVar40)(puVar28,0,100000);" (call_expression "(*pcVar40)(puVar28,0,100000)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(puVar28,0,100000)" ( identifier , number_literal , number_literal ))) ;) (goto_statement "goto joined_r0x0002181c;" goto statement_identifier ;) })) }))) (expression_statement "(*pcVar40)(puVar28,0,0xffffffff);" (call_expression "(*pcVar40)(puVar28,0,0xffffffff)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(puVar28,0,0xffffffff)" ( identifier , number_literal , number_literal ))) ;) (labeled_statement "joined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }" statement_identifier : (if_statement "if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar26 = 0;\n    iVar34 = -1;\n  }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (expression_statement "iVar34 = -1;" (assignment_expression "iVar34 = -1" identifier = number_literal) ;) }) (else_clause "else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }" else (compound_statement "{\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }" { (expression_statement "uVar26 = uVar6 & 1;" (assignment_expression "uVar26 = uVar6 & 1" identifier = (binary_expression "uVar6 & 1" identifier & number_literal)) ;) (expression_statement "iVar34 = 100000;" (assignment_expression "iVar34 = 100000" identifier = number_literal) ;) })))) (if_statement "if ((uVar42 & 0x40) != 0) {\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }" if (parenthesized_expression "((uVar42 & 0x40) != 0)" ( (binary_expression "(uVar42 & 0x40) != 0" (parenthesized_expression "(uVar42 & 0x40)" ( (binary_expression "uVar42 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }" { (expression_statement "uVar26 = 2;" (assignment_expression "uVar26 = 2" identifier = number_literal) ;) (expression_statement "uVar42 = uVar42 & 0xffffffbf;" (assignment_expression "uVar42 = uVar42 & 0xffffffbf" identifier = (binary_expression "uVar42 & 0xffffffbf" identifier & number_literal)) ;) })) (if_statement "if (uVar36 != 0) goto LAB_00021afc;" if (parenthesized_expression "(uVar36 != 0)" ( (binary_expression "uVar36 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021afc;" goto statement_identifier ;)) (do_statement "do {\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );" do (compound_statement "{\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  }" { (expression_statement "uVar7 = uVar42 & 4;" (assignment_expression "uVar7 = uVar42 & 4" identifier = (binary_expression "uVar42 & 4" identifier & number_literal)) ;) (labeled_statement "LAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }" statement_identifier : (if_statement "if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }" { (if_statement "if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }" { (expression_statement "(**(code **)(puVar39 + 0x31cc8))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31cc8))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31cc8))" ( (pointer_expression "**(code **)(puVar39 + 0x31cc8)" * (pointer_expression "*(code **)(puVar39 + 0x31cc8)" * (cast_expression "(code **)(puVar39 + 0x31cc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31cc8)" ( (binary_expression "puVar39 + 0x31cc8" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) }) (else_clause "else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }" else (compound_statement "{\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }" { (expression_statement "(**(code **)(puVar39 + 0x31cf8))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31cf8))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31cf8))" ( (pointer_expression "**(code **)(puVar39 + 0x31cf8)" * (pointer_expression "*(code **)(puVar39 + 0x31cf8)" * (cast_expression "(code **)(puVar39 + 0x31cf8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31cf8)" ( (binary_expression "puVar39 + 0x31cf8" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) }))) (expression_statement "uVar42 = uVar42 & 0xfffffffb;" (assignment_expression "uVar42 = uVar42 & 0xfffffffb" identifier = (binary_expression "uVar42 & 0xfffffffb" identifier & number_literal)) ;) }))) (if_statement "if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }" if (parenthesized_expression "((uVar42 & 1) == 0)" ( (binary_expression "(uVar42 & 1) == 0" (parenthesized_expression "(uVar42 & 1)" ( (binary_expression "uVar42 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar6 = 0;\n    }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }" else (compound_statement "{\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }" { (expression_statement "uVar20 = 0xffff;" (assignment_expression "uVar20 = 0xffff" identifier = number_literal) ;) (if_statement "if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" if (parenthesized_expression "((uVar6 & 1) == 0)" ( (binary_expression "(uVar6 & 1) == 0" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }" { (expression_statement "bVar1 = (uVar31 & 0x20) != 0;" (assignment_expression "bVar1 = (uVar31 & 0x20) != 0" identifier = (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" ( (binary_expression "uVar31 & 0x20" identifier & number_literal) )) != number_literal)) ;) (if_statement "if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar20 = 0xff;\n        }" { (expression_statement "uVar20 = 0xff;" (assignment_expression "uVar20 = 0xff" identifier = number_literal) ;) })) (if_statement "if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          uVar42 = uVar42 & 0xffffffdf;\n        }" { (expression_statement "uVar42 = uVar42 & 0xffffffdf;" (assignment_expression "uVar42 = uVar42 & 0xffffffdf" identifier = (binary_expression "uVar42 & 0xffffffdf" identifier & number_literal)) ;) })) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);" (call_expression "(**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d8c))" ( (pointer_expression "**(code **)(puVar39 + 0x31d8c)" * (pointer_expression "*(code **)(puVar39 + 0x31d8c)" * (cast_expression "(code **)(puVar39 + 0x31d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d8c)" ( (binary_expression "puVar39 + 0x31d8c" identifier + number_literal) ))))) )) (argument_list "(puVar28,uVar20,!bVar1)" ( identifier , identifier , (unary_expression "!bVar1" ! identifier) ))) ;) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" identifier = (binary_expression "uVar42 & 0xfffffffe" identifier & number_literal)) ;) }) (else_clause "else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" else (if_statement "if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" if (parenthesized_expression "(uVar36 == 0)" ( (binary_expression "uVar36 == 0" identifier == number_literal) )) (compound_statement "{\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }" { (if_statement "if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }" { (expression_statement "pbVar8 = (byte *)puVar29[4];" (assignment_expression "pbVar8 = (byte *)puVar29[4]" identifier = (cast_expression "(byte *)puVar29[4]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar29[4]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }" if (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }" { (expression_statement "uVar26 = 2;" (assignment_expression "uVar26 = 2" identifier = number_literal) ;) (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" identifier = (binary_expression "uVar42 & 0xfffffffe" identifier & number_literal)) ;) }) (else_clause "else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }" else (compound_statement "{\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }" { (expression_statement "local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;" (assignment_expression "local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff" identifier = (binary_expression "CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff" (call_expression "CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8)" identifier (argument_list "((short)(local_80 >> 0x10),(ushort)*pbVar8)" ( (cast_expression "(short)(local_80 >> 0x10)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(local_80 >> 0x10)" ( (binary_expression "local_80 >> 0x10" identifier >> number_literal) ))) , (binary_expression "(ushort)*pbVar8" (parenthesized_expression "(ushort)" ( identifier )) * identifier) ))) & number_literal)) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "local_7c = (ushort)pbVar8[1];" (assignment_expression "local_7c = (ushort)pbVar8[1]" identifier = (cast_expression "(ushort)pbVar8[1]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "pbVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "local_7a = (ushort)pbVar8[2];" (assignment_expression "local_7a = (ushort)pbVar8[2]" identifier = (cast_expression "(ushort)pbVar8[2]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "pbVar8[2]" identifier [ number_literal ]))) ;) (expression_statement "local_78 = local_7c;" (assignment_expression "local_78 = local_7c" identifier = identifier) ;) (expression_statement "(**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);" (call_expression "(**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0)" (parenthesized_expression "(**(code **)(puVar39 + 0x31e58))" ( (pointer_expression "**(code **)(puVar39 + 0x31e58)" * (pointer_expression "*(code **)(puVar39 + 0x31e58)" * (cast_expression "(code **)(puVar39 + 0x31e58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e58)" ( (binary_expression "puVar39 + 0x31e58" identifier + number_literal) ))))) )) (argument_list "(puVar28,&local_80,1,0,0)" ( identifier , (pointer_expression "&local_80" & identifier) , number_literal , number_literal , number_literal ))) ;) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" identifier = (binary_expression "uVar42 & 0xfffffffe" identifier & number_literal)) ;) }))) }) (else_clause "else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }" else (compound_statement "{\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(puVar39 + 0x31d34))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31d34))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d34))" ( (pointer_expression "**(code **)(puVar39 + 0x31d34)" * (pointer_expression "*(code **)(puVar39 + 0x31d34)" * (cast_expression "(code **)(puVar39 + 0x31d34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d34)" ( (binary_expression "puVar39 + 0x31d34" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" identifier = (binary_expression "uVar42 & 0xfffffffe" identifier & number_literal)) ;) }))) }) (else_clause "else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" else (compound_statement "{\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" { (expression_statement "uVar36 = 2;" (assignment_expression "uVar36 = 2" identifier = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" identifier = (binary_expression "uVar42 & 0xfffffffe" identifier & number_literal)) ;) }))))) }))) (expression_statement "(**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);" (call_expression "(**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d88))" ( (pointer_expression "**(code **)(puVar39 + 0x31d88)" * (pointer_expression "*(code **)(puVar39 + 0x31d88)" * (cast_expression "(code **)(puVar39 + 0x31d88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d88)" ( (binary_expression "puVar39 + 0x31d88" identifier + number_literal) ))))) )) (argument_list "(puVar28,uVar26,iVar34)" ( identifier , identifier , identifier ))) ;) (if_statement "if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }" if (parenthesized_expression "((uVar42 & 0x10) != 0)" ( (binary_expression "(uVar42 & 0x10) != 0" (parenthesized_expression "(uVar42 & 0x10)" ( (binary_expression "uVar42 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }" { (if_statement "if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }" if (parenthesized_expression "((uVar31 & 2) == 0)" ( (binary_expression "(uVar31 & 2) == 0" (parenthesized_expression "(uVar31 & 2)" ( (binary_expression "uVar31 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }" { (expression_statement "uVar31 = uVar31 & 0xffffffef;" (assignment_expression "uVar31 = uVar31 & 0xffffffef" identifier = (binary_expression "uVar31 & 0xffffffef" identifier & number_literal)) ;) (expression_statement "uVar42 = uVar42 & 0xffffffef;" (assignment_expression "uVar42 = uVar42 & 0xffffffef" identifier = (binary_expression "uVar42 & 0xffffffef" identifier & number_literal)) ;) }) (else_clause "else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }" else (compound_statement "{\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }" { (expression_statement "(**(code **)(puVar39 + 0x31cec))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31cec))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31cec))" ( (pointer_expression "**(code **)(puVar39 + 0x31cec)" * (pointer_expression "*(code **)(puVar39 + 0x31cec)" * (cast_expression "(code **)(puVar39 + 0x31cec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31cec)" ( (binary_expression "puVar39 + 0x31cec" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) (expression_statement "uVar42 = uVar42 & 0xffffffef;" (assignment_expression "uVar42 = uVar42 & 0xffffffef" identifier = (binary_expression "uVar42 & 0xffffffef" identifier & number_literal)) ;) }))) })) (if_statement "if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }" if (parenthesized_expression "((uVar42 & 0x20) != 0)" ( (binary_expression "(uVar42 & 0x20) != 0" (parenthesized_expression "(uVar42 & 0x20)" ( (binary_expression "uVar42 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }" { (if_statement "if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" if (parenthesized_expression "((uVar31 & 1) == 0)" ( (binary_expression "(uVar31 & 1) == 0" (parenthesized_expression "(uVar31 & 1)" ( (binary_expression "uVar31 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }" { (expression_statement "uVar31 = uVar31 & 0xffffffdf;" (assignment_expression "uVar31 = uVar31 & 0xffffffdf" identifier = (binary_expression "uVar31 & 0xffffffdf" identifier & number_literal)) ;) (expression_statement "uVar42 = uVar42 & 0xffffffdf;" (assignment_expression "uVar42 = uVar42 & 0xffffffdf" identifier = (binary_expression "uVar42 & 0xffffffdf" identifier & number_literal)) ;) }) (else_clause "else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" else (if_statement "if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" if (parenthesized_expression "(uVar36 == 2)" ( (binary_expression "uVar36 == 2" identifier == number_literal) )) (compound_statement "{\n        uVar42 = uVar42 & 0xffffffdf;\n      }" { (expression_statement "uVar42 = uVar42 & 0xffffffdf;" (assignment_expression "uVar42 = uVar42 & 0xffffffdf" identifier = (binary_expression "uVar42 & 0xffffffdf" identifier & number_literal)) ;) }) (else_clause "else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" else (compound_statement "{\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" { (expression_statement "(**(code **)(puVar39 + 0x31f04))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31f04))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31f04))" ( (pointer_expression "**(code **)(puVar39 + 0x31f04)" * (pointer_expression "*(code **)(puVar39 + 0x31f04)" * (cast_expression "(code **)(puVar39 + 0x31f04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31f04)" ( (binary_expression "puVar39 + 0x31f04" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) (expression_statement "uVar42 = uVar42 & 0xffffffdf;" (assignment_expression "uVar42 = uVar42 & 0xffffffdf" identifier = (binary_expression "uVar42 & 0xffffffdf" identifier & number_literal)) ;) }))))) })) (if_statement "if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }" if (parenthesized_expression "(uVar42 != 0)" ( (binary_expression "uVar42 != 0" identifier != number_literal) )) (compound_statement "{\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }" { (expression_statement "(**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);" (call_expression "(**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390)" (parenthesized_expression "(**(code **)(puVar39 + 0x31e08))" ( (pointer_expression "**(code **)(puVar39 + 0x31e08)" * (pointer_expression "*(code **)(puVar39 + 0x31e08)" * (cast_expression "(code **)(puVar39 + 0x31e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e08)" ( (binary_expression "puVar39 + 0x31e08" identifier + number_literal) ))))) )) (argument_list "(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390)" ( identifier , (binary_expression "*(int *)(puVar39 + 0x31a18) + -0x390" (pointer_expression "*(int *)(puVar39 + 0x31a18)" * (cast_expression "(int *)(puVar39 + 0x31a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar39 + 0x31a18)" ( (binary_expression "puVar39 + 0x31a18" identifier + number_literal) )))) + number_literal) ))) ;) (goto_statement "goto LAB_00021ce8;" goto statement_identifier ;) })) (expression_statement "FUN_0001e55c();" (call_expression "FUN_0001e55c()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }" if (parenthesized_expression "((uVar6 == 0) && (uVar36 != 2))" ( (binary_expression "(uVar6 == 0) && (uVar36 != 2)" (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar36 != 2)" ( (binary_expression "uVar36 != 2" identifier != number_literal) ))) )) (compound_statement "{\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }" { (expression_statement "iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);" (assignment_expression "iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28)" identifier = (call_expression "(**(code **)(puVar39 + 0x31e24))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31e24))" ( (pointer_expression "**(code **)(puVar39 + 0x31e24)" * (pointer_expression "*(code **)(puVar39 + 0x31e24)" * (cast_expression "(code **)(puVar39 + 0x31e24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e24)" ( (binary_expression "puVar39 + 0x31e24" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier )))) ;) }) (else_clause "else {\n      iVar34 = 0;\n    }" else (compound_statement "{\n      iVar34 = 0;\n    }" { (expression_statement "iVar34 = 0;" (assignment_expression "iVar34 = 0" identifier = number_literal) ;) }))) (expression_statement "(**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);" (call_expression "(**(code **)(puVar39 + 0x31f14))(puVar28,iVar4)" (parenthesized_expression "(**(code **)(puVar39 + 0x31f14))" ( (pointer_expression "**(code **)(puVar39 + 0x31f14)" * (pointer_expression "*(code **)(puVar39 + 0x31f14)" * (cast_expression "(code **)(puVar39 + 0x31f14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31f14)" ( (binary_expression "puVar39 + 0x31f14" identifier + number_literal) ))))) )) (argument_list "(puVar28,iVar4)" ( identifier , identifier ))) ;) (expression_statement "uVar42 = *(byte *)(iVar4 + 0x19) & 2;" (assignment_expression "uVar42 = *(byte *)(iVar4 + 0x19) & 2" identifier = (binary_expression "*(byte *)(iVar4 + 0x19) & 2" (pointer_expression "*(byte *)(iVar4 + 0x19)" * (cast_expression "(byte *)(iVar4 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x19)" ( (binary_expression "iVar4 + 0x19" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }" if (parenthesized_expression "((*(byte *)(iVar4 + 0x19) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x19) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x19) & 4)" ( (binary_expression "*(byte *)(iVar4 + 0x19) & 4" (pointer_expression "*(byte *)(iVar4 + 0x19)" * (cast_expression "(byte *)(iVar4 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x19)" ( (binary_expression "iVar4 + 0x19" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }" { (if_statement "if (uVar6 != 0) goto LAB_00021cf4;" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021cf4;" goto statement_identifier ;)) }) (else_clause "else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }" else (if_statement "if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }" { (if_statement "if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }" if (parenthesized_expression "(uVar36 == 2)" ( (binary_expression "uVar36 == 2" identifier == number_literal) )) (compound_statement "{\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }" { (if_statement "if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }" if (parenthesized_expression "((uVar31 & 1) != 0)" ( (binary_expression "(uVar31 & 1) != 0" (parenthesized_expression "(uVar31 & 1)" ( (binary_expression "uVar31 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar42 = uVar42 | 1;\n        }" { (expression_statement "uVar42 = uVar42 | 1;" (assignment_expression "uVar42 = uVar42 | 1" identifier = (binary_expression "uVar42 | 1" identifier | number_literal)) ;) })) }) (else_clause "else {\n        uVar42 = uVar42 | 1;\n      }" else (compound_statement "{\n        uVar42 = uVar42 | 1;\n      }" { (expression_statement "uVar42 = uVar42 | 1;" (assignment_expression "uVar42 = uVar42 | 1" identifier = (binary_expression "uVar42 | 1" identifier | number_literal)) ;) }))) })))) (if_statement "if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }" if (parenthesized_expression "((uVar31 & 0x40) != 0)" ( (binary_expression "(uVar31 & 0x40) != 0" (parenthesized_expression "(uVar31 & 0x40)" ( (binary_expression "uVar31 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar42 = uVar42 | 0x40;\n    }" { (expression_statement "uVar42 = uVar42 | 0x40;" (assignment_expression "uVar42 = uVar42 | 0x40" identifier = (binary_expression "uVar42 | 0x40" identifier | number_literal)) ;) })) (if_statement "if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }" if (parenthesized_expression "(*(char *)(iVar4 + 0x18) == '\x10')" ( (binary_expression "*(char *)(iVar4 + 0x18) == '\x10'" (pointer_expression "*(char *)(iVar4 + 0x18)" * (cast_expression "(char *)(iVar4 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n      uVar42 = uVar42 | 4;\n    }" { (expression_statement "uVar42 = uVar42 | 4;" (assignment_expression "uVar42 = uVar42 | 4" identifier = (binary_expression "uVar42 | 4" identifier | number_literal)) ;) })) (expression_statement "uVar7 = puVar28[0x4b];" (assignment_expression "uVar7 = puVar28[0x4b]" identifier = (subscript_expression "puVar28[0x4b]" identifier [ number_literal ])) ;) (if_statement "if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }" if (parenthesized_expression "((uVar7 & 1) != 0)" ( (binary_expression "(uVar7 & 1) != 0" (parenthesized_expression "(uVar7 & 1)" ( (binary_expression "uVar7 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar42 = uVar42 | 0x10;\n    }" { (expression_statement "uVar42 = uVar42 | 0x10;" (assignment_expression "uVar42 = uVar42 | 0x10" identifier = (binary_expression "uVar42 | 0x10" identifier | number_literal)) ;) })) (if_statement "if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }" if (parenthesized_expression "(uVar36 != 2)" ( (binary_expression "uVar36 != 2" identifier != number_literal) )) (compound_statement "{\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }" { (if_statement "if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;" if (parenthesized_expression "((uVar7 & 0x20000) == 0)" ( (binary_expression "(uVar7 & 0x20000) == 0" (parenthesized_expression "(uVar7 & 0x20000)" ( (binary_expression "uVar7 & 0x20000" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00021ac8;" goto statement_identifier ;)) (labeled_statement "LAB_00021954:\n      uVar42 = uVar42 | 0x20;" statement_identifier : (expression_statement "uVar42 = uVar42 | 0x20;" (assignment_expression "uVar42 = uVar42 | 0x20" identifier = (binary_expression "uVar42 | 0x20" identifier | number_literal)) ;)) (labeled_statement "LAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;" statement_identifier : (if_statement "if (uVar31 != uVar42) goto LAB_00021d04;" if (parenthesized_expression "(uVar31 != uVar42)" ( (binary_expression "uVar31 != uVar42" identifier != identifier) )) (goto_statement "goto LAB_00021d04;" goto statement_identifier ;))) (expression_statement "iVar9 = puVar29[1];" (assignment_expression "iVar9 = puVar29[1]" identifier = (subscript_expression "puVar29[1]" identifier [ number_literal ])) ;) (expression_statement "iVar32 = puVar29[2];" (assignment_expression "iVar32 = puVar29[2]" identifier = (subscript_expression "puVar29[2]" identifier [ number_literal ])) ;) (if_statement "if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar32 = iVar32 << 1;\n      }" { (expression_statement "iVar32 = iVar32 << 1;" (assignment_expression "iVar32 = iVar32 << 1" identifier = (binary_expression "iVar32 << 1" identifier << number_literal)) ;) })) (if_statement "if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }" if (parenthesized_expression "(iVar32 < 0)" ( (binary_expression "iVar32 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }" { (expression_statement "iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);" (assignment_expression "iVar9 = iVar9 - iVar32 * (piVar35[3] + -1)" identifier = (binary_expression "iVar9 - iVar32 * (piVar35[3] + -1)" identifier - (binary_expression "iVar32 * (piVar35[3] + -1)" identifier * (parenthesized_expression "(piVar35[3] + -1)" ( (binary_expression "piVar35[3] + -1" (subscript_expression "piVar35[3]" identifier [ number_literal ]) + number_literal) ))))) ;) })) (expression_statement "puVar29[6] = iVar9;" (assignment_expression "puVar29[6] = iVar9" (subscript_expression "puVar29[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar29[7] = iVar32;" (assignment_expression "puVar29[7] = iVar32" (subscript_expression "puVar29[7]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }" { (if_statement "if (uVar36 != 2) break;" if (parenthesized_expression "(uVar36 != 2)" ( (binary_expression "uVar36 != 2" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);" (assignment_expression "uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4)" identifier = (call_expression "(**(code **)(puVar39 + 0x31f08))(puVar28,iVar4)" (parenthesized_expression "(**(code **)(puVar39 + 0x31f08))" ( (pointer_expression "**(code **)(puVar39 + 0x31f08)" * (pointer_expression "*(code **)(puVar39 + 0x31f08)" * (cast_expression "(code **)(puVar39 + 0x31f08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31f08)" ( (binary_expression "puVar39 + 0x31f08" identifier + number_literal) ))))) )) (argument_list "(puVar28,iVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);" (assignment_expression "uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20)" identifier = (call_expression "(**(code **)(puVar39 + 0x31d04))(puVar28,uVar20)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d04))" ( (pointer_expression "**(code **)(puVar39 + 0x31d04)" * (pointer_expression "*(code **)(puVar39 + 0x31d04)" * (cast_expression "(code **)(puVar39 + 0x31d04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d04)" ( (binary_expression "puVar39 + 0x31d04" identifier + number_literal) ))))) )) (argument_list "(puVar28,uVar20)" ( identifier , identifier )))) ;) (expression_statement "puVar29[5] = uVar20;" (assignment_expression "puVar29[5] = uVar20" (subscript_expression "puVar29[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;" (assignment_expression "iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18" identifier = (binary_expression "*(int *)(puVar39 + 0x31a6c) + 0x1d18" (pointer_expression "*(int *)(puVar39 + 0x31a6c)" * (cast_expression "(int *)(puVar39 + 0x31a6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar39 + 0x31a6c)" ( (binary_expression "puVar39 + 0x31a6c" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }" else (compound_statement "{\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }" { (expression_statement "uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);" (assignment_expression "uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4)" identifier = (call_expression "(**(code **)(puVar39 + 0x31f08))(puVar28,iVar4)" (parenthesized_expression "(**(code **)(puVar39 + 0x31f08))" ( (pointer_expression "**(code **)(puVar39 + 0x31f08)" * (pointer_expression "*(code **)(puVar39 + 0x31f08)" * (cast_expression "(code **)(puVar39 + 0x31f08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31f08)" ( (binary_expression "puVar39 + 0x31f08" identifier + number_literal) ))))) )) (argument_list "(puVar28,iVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);" (assignment_expression "uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20)" identifier = (call_expression "(**(code **)(puVar39 + 0x31d04))(puVar28,uVar20)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d04))" ( (pointer_expression "**(code **)(puVar39 + 0x31d04)" * (pointer_expression "*(code **)(puVar39 + 0x31d04)" * (cast_expression "(code **)(puVar39 + 0x31d04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d04)" ( (binary_expression "puVar39 + 0x31d04" identifier + number_literal) ))))) )) (argument_list "(puVar28,uVar20)" ( identifier , identifier )))) ;) (expression_statement "puVar29[5] = uVar20;" (assignment_expression "puVar29[5] = uVar20" (subscript_expression "puVar29[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;" (assignment_expression "iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484" identifier = (binary_expression "*(int *)(puVar39 + 0x31a6c) + 0x2484" (pointer_expression "*(int *)(puVar39 + 0x31a6c)" * (cast_expression "(int *)(puVar39 + 0x31a6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar39 + 0x31a6c)" ( (binary_expression "puVar39 + 0x31a6c" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);" (assignment_expression "iVar4 = FUN_0001a610(piVar35,iVar4,puVar29)" identifier = (call_expression "FUN_0001a610(piVar35,iVar4,puVar29)" identifier (argument_list "(piVar35,iVar4,puVar29)" ( identifier , identifier , identifier )))) ;) (expression_statement "pcVar40 = *(code **)(puVar39 + 0x31d20);" (assignment_expression "pcVar40 = *(code **)(puVar39 + 0x31d20)" identifier = (pointer_expression "*(code **)(puVar39 + 0x31d20)" * (cast_expression "(code **)(puVar39 + 0x31d20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d20)" ( (binary_expression "puVar39 + 0x31d20" identifier + number_literal) ))))) ;) (expression_statement "puVar29[5] = 0;" (assignment_expression "puVar29[5] = 0" (subscript_expression "puVar29[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "(*pcVar40)(puVar28,uVar20);" (call_expression "(*pcVar40)(puVar28,uVar20)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(puVar28,uVar20)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_000219e8;" goto statement_identifier ;) })) (if_statement "if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }" if (parenthesized_expression "((uVar31 & 0x20) != 0)" ( (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" ( (binary_expression "uVar31 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar42 = uVar42 | 0x20;\n    }" { (expression_statement "uVar42 = uVar42 | 0x20;" (assignment_expression "uVar42 = uVar42 | 0x20" identifier = (binary_expression "uVar42 | 0x20" identifier | number_literal)) ;) })) (if_statement "if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }" if (parenthesized_expression "((uVar7 & 0x20000) == 0)" ( (binary_expression "(uVar7 & 0x20000) == 0" (parenthesized_expression "(uVar7 & 0x20000)" ( (binary_expression "uVar7 & 0x20000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }" { (labeled_statement "LAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;" statement_identifier : (if_statement "if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;" if (parenthesized_expression "((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0))" ( (binary_expression "(-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)" (parenthesized_expression "(-1 < (int)(uVar7 << 7))" ( (binary_expression "-1 < (int)(uVar7 << 7)" number_literal < (cast_expression "(int)(uVar7 << 7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar7 << 7)" ( (binary_expression "uVar7 << 7" identifier << number_literal) )))) )) || (parenthesized_expression "((puVar28[0x4a] & 0x80) != 0)" ( (binary_expression "(puVar28[0x4a] & 0x80) != 0" (parenthesized_expression "(puVar28[0x4a] & 0x80)" ( (binary_expression "puVar28[0x4a] & 0x80" (subscript_expression "puVar28[0x4a]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_00021958;" goto statement_identifier ;))) (if_statement "if (uVar36 != 2) goto LAB_00021954;" if (parenthesized_expression "(uVar36 != 2)" ( (binary_expression "uVar36 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00021954;" goto statement_identifier ;)) })) (expression_statement "(**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);" (call_expression "(**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340)" (parenthesized_expression "(**(code **)(puVar39 + 0x31e08))" ( (pointer_expression "**(code **)(puVar39 + 0x31e08)" * (pointer_expression "*(code **)(puVar39 + 0x31e08)" * (cast_expression "(code **)(puVar39 + 0x31e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e08)" ( (binary_expression "puVar39 + 0x31e08" identifier + number_literal) ))))) )) (argument_list "(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340)" ( identifier , (binary_expression "*(int *)(puVar39 + 0x31a18) + -0x340" (pointer_expression "*(int *)(puVar39 + 0x31a18)" * (cast_expression "(int *)(puVar39 + 0x31a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar39 + 0x31a18)" ( (binary_expression "puVar39 + 0x31a18" identifier + number_literal) )))) + number_literal) ))) ;) (labeled_statement "LAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);" statement_identifier : (expression_statement "iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);" (assignment_expression "iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000)" identifier = (call_expression "FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000)" identifier (argument_list "(&local_80,iVar34,puVar28[0xe6],100000)" ( (pointer_expression "&local_80" & identifier) , identifier , (subscript_expression "puVar28[0xe6]" identifier [ number_literal ]) , number_literal )))) ;)) (if_statement "if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }" if (parenthesized_expression "((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0))" ( (binary_expression "(iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)" (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar9 = FUN_00017f48(local_80), iVar9 != 0)" ( (comma_expression "iVar9 = FUN_00017f48(local_80), iVar9 != 0" (assignment_expression "iVar9 = FUN_00017f48(local_80)" identifier = (call_expression "FUN_00017f48(local_80)" identifier (argument_list "(local_80)" ( identifier )))) , (binary_expression "iVar9 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }" { (expression_statement "uVar7 = uVar42 & 4;" (assignment_expression "uVar7 = uVar42 & 4" identifier = (binary_expression "uVar42 & 4" identifier & number_literal)) ;) (if_statement "if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }" if (parenthesized_expression "(uVar26 == 1)" ( (binary_expression "uVar26 == 1" identifier == number_literal) )) (compound_statement "{\n        uVar26 = 0;\n        uVar36 = 2;\n      }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (expression_statement "uVar36 = 2;" (assignment_expression "uVar36 = 2" identifier = number_literal) ;) })) (goto_statement "goto LAB_00021734;" goto statement_identifier ;) })) (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (while_statement "while( true ) {\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }" { (expression_statement "iVar34 = iVar34 + -1;" (assignment_expression "iVar34 = iVar34 + -1" identifier = (binary_expression "iVar34 + -1" identifier + number_literal)) ;) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (if_statement "if (iVar34 < 0) break;" if (parenthesized_expression "(iVar34 < 0)" ( (binary_expression "iVar34 < 0" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = puVar29[6];" (assignment_expression "iVar9 = puVar29[6]" identifier = (subscript_expression "puVar29[6]" identifier [ number_literal ])) ;) (for_statement "for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }" for ( (assignment_expression "iVar4 = piVar35[3]" identifier = (subscript_expression "piVar35[3]" identifier [ number_literal ])) ; (binary_expression "iVar4 != 0" identifier != number_literal) ; (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ) (compound_statement "{\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }" { (expression_statement "(**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);" (call_expression "(**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0)" (parenthesized_expression "(**(code **)(puVar39 + 0x31da0))" ( (pointer_expression "**(code **)(puVar39 + 0x31da0)" * (pointer_expression "*(code **)(puVar39 + 0x31da0)" * (cast_expression "(code **)(puVar39 + 0x31da0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31da0)" ( (binary_expression "puVar39 + 0x31da0" identifier + number_literal) ))))) )) (argument_list "(puVar28,iVar9,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "iVar9 = iVar9 + iVar32;" (assignment_expression "iVar9 = iVar9 + iVar32" identifier = (binary_expression "iVar9 + iVar32" identifier + identifier)) ;) })) })) (labeled_statement "LAB_000219e8:\n  if (local_74 == *piVar5) {\n    return iVar4;\n  }" statement_identifier : (if_statement "if (local_74 == *piVar5) {\n    return iVar4;\n  }" if (parenthesized_expression "(local_74 == *piVar5)" ( (binary_expression "local_74 == *piVar5" identifier == (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    return iVar4;\n  }" { (return_statement "return iVar4;" return identifier ;) }))) (labeled_statement "LAB_00021ce8:\n  (**(code **)(puVar39 + 0x31e80))();" statement_identifier : (expression_statement "(**(code **)(puVar39 + 0x31e80))();" (call_expression "(**(code **)(puVar39 + 0x31e80))()" (parenthesized_expression "(**(code **)(puVar39 + 0x31e80))" ( (pointer_expression "**(code **)(puVar39 + 0x31e80)" * (pointer_expression "*(code **)(puVar39 + 0x31e80)" * (cast_expression "(code **)(puVar39 + 0x31e80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e80)" ( (binary_expression "puVar39 + 0x31e80" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_00021cf4:\n  (**(code **)(puVar39 + 0x31e08))();" statement_identifier : (expression_statement "(**(code **)(puVar39 + 0x31e08))();" (call_expression "(**(code **)(puVar39 + 0x31e08))()" (parenthesized_expression "(**(code **)(puVar39 + 0x31e08))" ( (pointer_expression "**(code **)(puVar39 + 0x31e08)" * (pointer_expression "*(code **)(puVar39 + 0x31e08)" * (cast_expression "(code **)(puVar39 + 0x31e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e08)" ( (binary_expression "puVar39 + 0x31e08" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_00021d04:\n  pcVar40 = *(code **)(puVar39 + 0x31e08);" statement_identifier : (expression_statement "pcVar40 = *(code **)(puVar39 + 0x31e08);" (assignment_expression "pcVar40 = *(code **)(puVar39 + 0x31e08)" identifier = (pointer_expression "*(code **)(puVar39 + 0x31e08)" * (cast_expression "(code **)(puVar39 + 0x31e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e08)" ( (binary_expression "puVar39 + 0x31e08" identifier + number_literal) ))))) ;)) (expression_statement "(*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318);" (call_expression "(*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318)" ( identifier , (binary_expression "*(int *)(puVar39 + 0x31a18) + -0x318" (pointer_expression "*(int *)(puVar39 + 0x31a18)" * (cast_expression "(int *)(puVar39 + 0x31a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar39 + 0x31a18)" ( (binary_expression "puVar39 + 0x31a18" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "piVar5 = (int *)*puVar28;" (assignment_expression "piVar5 = (int *)*puVar28" identifier = (cast_expression "(int *)*puVar28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar28" * identifier))) ;) (expression_statement "iVar4 = piVar5[2];" (assignment_expression "iVar4 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "puVar29 = *(undefined4 **)*piVar5;" (assignment_expression "puVar29 = *(undefined4 **)*piVar5" identifier = (pointer_expression "*(undefined4 **)*piVar5" * (cast_expression "(undefined4 **)*piVar5" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar5" * identifier)))) ;) (expression_statement "iVar34 = ((undefined4 *)*piVar5)[1];" (assignment_expression "iVar34 = ((undefined4 *)*piVar5)[1]" identifier = (subscript_expression "((undefined4 *)*piVar5)[1]" (parenthesized_expression "((undefined4 *)*piVar5)" ( (cast_expression "(undefined4 *)*piVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) )) [ number_literal ])) ;) (expression_statement "uVar42 = piVar5[3];" (assignment_expression "uVar42 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (if_statement "if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }" if (parenthesized_expression "((puVar29[0x4b] & 0x600000) == 0)" ( (binary_expression "(puVar29[0x4b] & 0x600000) == 0" (parenthesized_expression "(puVar29[0x4b] & 0x600000)" ( (binary_expression "puVar29[0x4b] & 0x600000" (subscript_expression "puVar29[0x4b]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }" { (labeled_statement "LAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);" statement_identifier : (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar40 + 0x316f4)" * (pointer_expression "*(code **)(pcVar40 + 0x316f4)" * (cast_expression "(code **)(pcVar40 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316f4)" ( (binary_expression "pcVar40 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0)" ( identifier , (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x2f0" (pointer_expression "*(int *)(pcVar40 + 0x31304)" * (cast_expression "(int *)(pcVar40 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31304)" ( (binary_expression "pcVar40 + 0x31304" identifier + number_literal) )))) + number_literal) ))) ;)) (labeled_statement "LAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);" statement_identifier : (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar40 + 0x316f4)" * (pointer_expression "*(code **)(pcVar40 + 0x316f4)" * (cast_expression "(code **)(pcVar40 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316f4)" ( (binary_expression "pcVar40 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278)" ( identifier , (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x278" (pointer_expression "*(int *)(pcVar40 + 0x31304)" * (cast_expression "(int *)(pcVar40 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31304)" ( (binary_expression "pcVar40 + 0x31304" identifier + number_literal) )))) + number_literal) ))) ;)) (labeled_statement "LAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;" statement_identifier : (expression_statement "iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290" identifier = (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x290" (pointer_expression "*(int *)(pcVar40 + 0x31304)" * (cast_expression "(int *)(pcVar40 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31304)" ( (binary_expression "pcVar40 + 0x31304" identifier + number_literal) )))) + number_literal)) ;)) (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar40 + 0x316f4)" * (pointer_expression "*(code **)(pcVar40 + 0x316f4)" * (cast_expression "(code **)(pcVar40 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316f4)" ( (binary_expression "pcVar40 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,iVar9)" ( identifier , identifier ))) ;) }) (else_clause "else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }" else (compound_statement "{\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }" { (if_statement "if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }" if (parenthesized_expression "((puVar29[0x4b] & 0x80) != 0)" ( (binary_expression "(puVar29[0x4b] & 0x80) != 0" (parenthesized_expression "(puVar29[0x4b] & 0x80)" ( (binary_expression "puVar29[0x4b] & 0x80" (subscript_expression "puVar29[0x4b]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }" { (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar40 + 0x316f4)" * (pointer_expression "*(code **)(pcVar40 + 0x316f4)" * (cast_expression "(code **)(pcVar40 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316f4)" ( (binary_expression "pcVar40 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc)" ( identifier , (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x2dc" (pointer_expression "*(int *)(pcVar40 + 0x31304)" * (cast_expression "(int *)(pcVar40 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31304)" ( (binary_expression "pcVar40 + 0x31304" identifier + number_literal) )))) + number_literal) ))) ;) (goto_statement "goto LAB_00022424;" goto statement_identifier ;) })) (expression_statement "iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);" (assignment_expression "iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34)" identifier = (call_expression "(**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316b4))" ( (pointer_expression "**(code **)(pcVar40 + 0x316b4)" * (pointer_expression "*(code **)(pcVar40 + 0x316b4)" * (cast_expression "(code **)(pcVar40 + 0x316b4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316b4)" ( (binary_expression "pcVar40 + 0x316b4" identifier + number_literal) ))))) )) (argument_list "(puVar29,iVar34)" ( identifier , identifier )))) ;) (if_statement "if (iVar9 != 2) goto LAB_00022470;" if (parenthesized_expression "(iVar9 != 2)" ( (binary_expression "iVar9 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00022470;" goto statement_identifier ;)) (expression_statement "uVar6 = piVar5[4];" (assignment_expression "uVar6 = piVar5[4]" identifier = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = *(int *)(pcVar40 + 0x31304);" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x31304)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x31304)" * (cast_expression "(int *)(pcVar40 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31304)" ( (binary_expression "pcVar40 + 0x31304" identifier + number_literal) ))))) ;) (if_statement "if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }" if (parenthesized_expression "((uVar6 & 5) != 1)" ( (binary_expression "(uVar6 & 5) != 1" (parenthesized_expression "(uVar6 & 5)" ( (binary_expression "uVar6 & 5" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }" { (expression_statement "uVar16 = (uint)*(byte *)(puVar29 + 0x7f);" (assignment_expression "uVar16 = (uint)*(byte *)(puVar29 + 0x7f)" identifier = (binary_expression "(uint)*(byte *)(puVar29 + 0x7f)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(puVar29 + 0x7f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x7f)" ( (binary_expression "puVar29 + 0x7f" identifier + number_literal) ))))) ;) (if_statement "if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }" { (expression_statement "local_e8 = 1;" (assignment_expression "local_e8 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);" statement_identifier : (expression_statement "cVar15 = *(char *)(iVar34 + 0x18);" (assignment_expression "cVar15 = *(char *)(iVar34 + 0x18)" identifier = (pointer_expression "*(char *)(iVar34 + 0x18)" * (cast_expression "(char *)(iVar34 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x18)" ( (binary_expression "iVar34 + 0x18" identifier + number_literal) ))))) ;)) (if_statement "if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }" if (parenthesized_expression "(cVar15 == '\b')" ( (binary_expression "cVar15 == '\b'" identifier == (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }" { (expression_statement "iVar34 = puVar28[6];" (assignment_expression "iVar34 = puVar28[6]" identifier = (subscript_expression "puVar28[6]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = puVar28[7];" (assignment_expression "iVar9 = puVar28[7]" identifier = (subscript_expression "puVar28[7]" identifier [ number_literal ])) ;) (expression_statement "iVar25 = *(int *)(pcVar40 + 0x31454);" (assignment_expression "iVar25 = *(int *)(pcVar40 + 0x31454)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x31454)" * (cast_expression "(int *)(pcVar40 + 0x31454)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31454)" ( (binary_expression "pcVar40 + 0x31454" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = *(int *)(pcVar40 + 0x31458);" (assignment_expression "iVar32 = *(int *)(pcVar40 + 0x31458)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x31458)" * (cast_expression "(int *)(pcVar40 + 0x31458)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31458)" ( (binary_expression "pcVar40 + 0x31458" identifier + number_literal) ))))) ;) (expression_statement "local_ec = 1;" (assignment_expression "local_ec = 1" identifier = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (if_statement "if (uVar16 == 1) goto LAB_00022214;" if (parenthesized_expression "(uVar16 == 1)" ( (binary_expression "uVar16 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00022214;" goto statement_identifier ;)) (labeled_statement "LAB_000220b0:\n          uVar16 = 0;" statement_identifier : (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;)) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (expression_statement "local_f8 = 1;" (assignment_expression "local_f8 = 1" identifier = number_literal) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000220c4:\n          iVar33 = puVar28[4];" statement_identifier : (expression_statement "iVar33 = puVar28[4];" (assignment_expression "iVar33 = puVar28[4]" identifier = (subscript_expression "puVar28[4]" identifier [ number_literal ])) ;)) (if_statement "if (iVar33 == 0) goto LAB_000222bc;" if (parenthesized_expression "(iVar33 == 0)" ( (binary_expression "iVar33 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000222bc;" goto statement_identifier ;)) (do_statement "do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );" do (compound_statement "{\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          }" { (expression_statement "bVar14 = *(byte *)(iVar33 + 1);" (assignment_expression "bVar14 = *(byte *)(iVar33 + 1)" identifier = (pointer_expression "*(byte *)(iVar33 + 1)" * (cast_expression "(byte *)(iVar33 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 1)" ( (binary_expression "iVar33 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar33 = *(int *)(pcVar40 + 0x31450);" (assignment_expression "iVar33 = *(int *)(pcVar40 + 0x31450)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x31450)" * (cast_expression "(int *)(pcVar40 + 0x31450)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31450)" ( (binary_expression "pcVar40 + 0x31450" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);" (assignment_expression "uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2)" identifier = (pointer_expression "*(ushort *)(iVar33 + (uint)bVar14 * 2)" * (cast_expression "(ushort *)(iVar33 + (uint)bVar14 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + (uint)bVar14 * 2)" ( (binary_expression "iVar33 + (uint)bVar14 * 2" identifier + (binary_expression "(uint)bVar14 * 2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (if_statement "if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }" if (parenthesized_expression "(uVar16 < uVar42)" ( (binary_expression "uVar16 < uVar42" identifier < identifier) )) (compound_statement "{\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }" { (expression_statement "pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);" (assignment_expression "pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4)" identifier = (cast_expression "(byte *)(iVar34 + uVar16 * iVar9 + iVar4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + uVar16 * iVar9 + iVar4)" ( (binary_expression "iVar34 + uVar16 * iVar9 + iVar4" (binary_expression "iVar34 + uVar16 * iVar9" identifier + (binary_expression "uVar16 * iVar9" identifier * identifier)) + identifier) )))) ;) (do_statement "do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);" do (compound_statement "{\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              }" { (expression_statement "pbVar27 = (byte *)puVar28[5];" (assignment_expression "pbVar27 = (byte *)puVar28[5]" identifier = (cast_expression "(byte *)puVar28[5]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar28[5]" identifier [ number_literal ]))) ;) (expression_statement "(**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);" (call_expression "(**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x3168c))" ( (pointer_expression "**(code **)(pcVar40 + 0x3168c)" * (pointer_expression "*(code **)(pcVar40 + 0x3168c)" * (cast_expression "(code **)(pcVar40 + 0x3168c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x3168c)" ( (binary_expression "pcVar40 + 0x3168c" identifier + number_literal) ))))) )) (argument_list "(puVar29,pbVar27,0)" ( identifier , identifier , number_literal ))) ;) (for_statement "for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }" for ( (assignment_expression "pbVar22 = pbVar8 + (uVar31 - iVar4)" identifier = (binary_expression "pbVar8 + (uVar31 - iVar4)" identifier + (parenthesized_expression "(uVar31 - iVar4)" ( (binary_expression "uVar31 - iVar4" identifier - identifier) )))) ; (binary_expression "pbVar22 < pbVar8" identifier < identifier) ; (assignment_expression "pbVar22 = pbVar22 + iVar10" identifier = (binary_expression "pbVar22 + iVar10" identifier + identifier)) ) (compound_statement "{\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }" { (expression_statement "uVar6 = (uint)pbVar27[1];" (assignment_expression "uVar6 = (uint)pbVar27[1]" identifier = (cast_expression "(uint)pbVar27[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar27[1]" identifier [ number_literal ]))) ;) (if_statement "if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                    *pbVar22 = bVar14;\n                  }" { (expression_statement "*pbVar22 = bVar14;" (assignment_expression "*pbVar22 = bVar14" (pointer_expression "*pbVar22" * identifier) = identifier) ;) }) (else_clause "else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }" else (compound_statement "{\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }" { (expression_statement "bVar13 = *pbVar27;" (assignment_expression "bVar13 = *pbVar27" identifier = (pointer_expression "*pbVar27" * identifier)) ;) (if_statement "if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }" if (parenthesized_expression "(uVar6 != 0xff)" ( (binary_expression "uVar6 != 0xff" identifier != number_literal) )) (compound_statement "{\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }" { (expression_statement "uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;" (assignment_expression "uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6" identifier = (binary_expression "(0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6" (binary_expression "(0xff - uVar6) * (uint)uVar12" (parenthesized_expression "(0xff - uVar6)" ( (binary_expression "0xff - uVar6" number_literal - identifier) )) * (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) + (binary_expression "*(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6" (pointer_expression "*(ushort *)(iVar33 + (uint)bVar13 * 2)" * (cast_expression "(ushort *)(iVar33 + (uint)bVar13 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + (uint)bVar13 * 2)" ( (binary_expression "iVar33 + (uint)bVar13 * 2" identifier + (binary_expression "(uint)bVar13 * 2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) * identifier))) ;) (expression_statement "uVar36 = uVar6 >> 0xf;" (assignment_expression "uVar36 = uVar6 >> 0xf" identifier = (binary_expression "uVar6 >> 0xf" identifier >> number_literal)) ;) (expression_statement "bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);" (assignment_expression "bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" identifier = (call_expression "(byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" ( (binary_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8" (binary_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2)" (parenthesized_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)" ( (binary_expression "(uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc" (binary_expression "(uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36)" (binary_expression "(uVar6 & 0x7fff) * (uint)" (parenthesized_expression "(uVar6 & 0x7fff)" ( (binary_expression "uVar6 & 0x7fff" identifier & number_literal) )) * (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar25 + uVar36)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar25 + uVar36)" ( (binary_expression "iVar25 + uVar36" identifier + identifier) )))) >> number_literal) )) + (binary_expression "(uint)*(ushort *)(iVar32 + uVar36 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar32 + uVar36 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar32 + uVar36 * 2)" ( (binary_expression "iVar32 + uVar36 * 2" identifier + (binary_expression "uVar36 * 2" identifier * number_literal)) ))))) >> number_literal) )))) ;) })) (expression_statement "*pbVar22 = bVar13;" (assignment_expression "*pbVar22 = bVar13" (pointer_expression "*pbVar22" * identifier) = identifier) ;) }))) (expression_statement "pbVar27 = pbVar27 + 2;" (assignment_expression "pbVar27 = pbVar27 + 2" identifier = (binary_expression "pbVar27 + 2" identifier + number_literal)) ;) })) (expression_statement "uVar16 = uVar16 + local_f8;" (assignment_expression "uVar16 = uVar16 + local_f8" identifier = (binary_expression "uVar16 + local_f8" identifier + identifier)) ;) (expression_statement "pbVar8 = pbVar8 + local_f8 * iVar9;" (assignment_expression "pbVar8 = pbVar8 + local_f8 * iVar9" identifier = (binary_expression "pbVar8 + local_f8 * iVar9" identifier + (binary_expression "local_f8 * iVar9" identifier * identifier))) ;) }) while (parenthesized_expression "(uVar16 < uVar42)" ( (binary_expression "uVar16 < uVar42" identifier < identifier) )) ;) })) (while_statement "while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }" { (do_statement "do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);" do (compound_statement "{\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              }" { (if_statement "if (local_e8 == local_ec) {\n                  return 1;\n                }" if (parenthesized_expression "(local_e8 == local_ec)" ( (binary_expression "local_e8 == local_ec" identifier == identifier) )) (compound_statement "{\n                  return 1;\n                }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar16 = (uint)*(byte *)(puVar29 + 0x7f);" (assignment_expression "uVar16 = (uint)*(byte *)(puVar29 + 0x7f)" identifier = (binary_expression "(uint)*(byte *)(puVar29 + 0x7f)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(puVar29 + 0x7f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x7f)" ( (binary_expression "puVar29 + 0x7f" identifier + number_literal) ))))) ;) (expression_statement "uVar31 = local_ec + 1;" (assignment_expression "uVar31 = local_ec + 1" identifier = (binary_expression "local_ec + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = local_ec;" (assignment_expression "uVar6 = local_ec" identifier = identifier) ;) (expression_statement "local_ec = uVar31;" (assignment_expression "local_ec = uVar31" identifier = identifier) ;) (if_statement "if (uVar16 != 1) goto LAB_000220b0;" if (parenthesized_expression "(uVar16 != 1)" ( (binary_expression "uVar16 != 1" identifier != number_literal) )) (goto_statement "goto LAB_000220b0;" goto statement_identifier ;)) (labeled_statement "LAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);" statement_identifier : (expression_statement "uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);" (assignment_expression "uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f)" identifier = (binary_expression "(uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f)" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) << (parenthesized_expression "(3U - ((int)local_ec >> 1) & 0x1f)" ( (binary_expression "3U - ((int)local_ec >> 1) & 0x1f" (binary_expression "3U - ((int)local_ec >> 1)" number_literal - (parenthesized_expression "((int)local_ec >> 1)" ( (binary_expression "(int)local_ec >> 1" (cast_expression "(int)local_ec" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) )))) ;)) (if_statement "if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (compound_statement "{\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }" { (expression_statement "uVar16 = ~uVar31 & 7;" (assignment_expression "uVar16 = ~uVar31 & 7" identifier = (binary_expression "~uVar31 & 7" (unary_expression "~uVar31" ~ identifier) & number_literal)) ;) (expression_statement "uVar36 = 3;" (assignment_expression "uVar36 = 3" identifier = number_literal) ;) }) (else_clause "else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }" else (compound_statement "{\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }" { (expression_statement "uVar36 = (int)(8 - local_ec) >> 1;" (assignment_expression "uVar36 = (int)(8 - local_ec) >> 1" identifier = (binary_expression "(int)(8 - local_ec) >> 1" (cast_expression "(int)(8 - local_ec)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - local_ec)" ( (binary_expression "8 - local_ec" number_literal - identifier) ))) >> number_literal)) ;) (expression_statement "uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);" (assignment_expression "uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7)" identifier = (binary_expression "((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7)" (parenthesized_expression "((uVar16 << (uVar36 & 0x1f)) + -1)" ( (binary_expression "(uVar16 << (uVar36 & 0x1f)) + -1" (parenthesized_expression "(uVar16 << (uVar36 & 0x1f))" ( (binary_expression "uVar16 << (uVar36 & 0x1f)" identifier << (parenthesized_expression "(uVar36 & 0x1f)" ( (binary_expression "uVar36 & 0x1f" identifier & number_literal) ))) )) + number_literal) )) - (parenthesized_expression "(uVar31 & 7)" ( (binary_expression "uVar31 & 7" identifier & number_literal) )))) ;) }))) }) while (parenthesized_expression "(uVar16 + iVar4 >> (uVar36 & 0x1f) == 0)" ( (binary_expression "uVar16 + iVar4 >> (uVar36 & 0x1f) == 0" (binary_expression "uVar16 + iVar4 >> (uVar36 & 0x1f)" (binary_expression "uVar16 + iVar4" identifier + identifier) >> (parenthesized_expression "(uVar36 & 0x1f)" ( (binary_expression "uVar36 & 0x1f" identifier & number_literal) ))) == number_literal) )) ;) (expression_statement "uVar31 = uVar31 & 7;" (assignment_expression "uVar31 = uVar31 & 7" identifier = (binary_expression "uVar31 & 7" identifier & number_literal)) ;) (expression_statement "iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);" (assignment_expression "iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU)" identifier = (binary_expression "1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU)" number_literal << (parenthesized_expression "((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU)" ( (binary_expression "(int)(8 - (uVar6 + 1)) >> 1 & 0x1fU" (binary_expression "(int)(8 - (uVar6 + 1)) >> 1" (cast_expression "(int)(8 - (uVar6 + 1))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - (uVar6 + 1))" ( (binary_expression "8 - (uVar6 + 1)" number_literal - (parenthesized_expression "(uVar6 + 1)" ( (binary_expression "uVar6 + 1" identifier + number_literal) ))) ))) >> number_literal) & number_literal) )))) ;) (expression_statement "uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;" (assignment_expression "uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7" identifier = (binary_expression "(~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7" (binary_expression "(~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f)" (parenthesized_expression "(~uVar6 & 1)" ( (binary_expression "~uVar6 & 1" (unary_expression "~uVar6" ~ identifier) & number_literal) )) << (parenthesized_expression "(3U - ((int)uVar6 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uVar6 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar6 >> 1)" number_literal - (parenthesized_expression "((int)uVar6 >> 1)" ( (binary_expression "(int)uVar6 >> 1" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) ))) & number_literal)) ;) (if_statement "if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }" if (parenthesized_expression "(uVar6 < 3)" ( (binary_expression "uVar6 < 3" identifier < number_literal) )) (compound_statement "{\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }" { (expression_statement "local_f8 = 8;" (assignment_expression "local_f8 = 8" identifier = number_literal) ;) (goto_statement "goto LAB_000220c4;" goto statement_identifier ;) })) (expression_statement "local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);" (assignment_expression "local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU)" identifier = (binary_expression "8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU)" number_literal >> (parenthesized_expression "((int)(uVar6 - 1) >> 1 & 0x1fU)" ( (binary_expression "(int)(uVar6 - 1) >> 1 & 0x1fU" (binary_expression "(int)(uVar6 - 1) >> 1" (cast_expression "(int)(uVar6 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) ))) >> number_literal) & number_literal) )))) ;) (expression_statement "iVar33 = puVar28[4];" (assignment_expression "iVar33 = puVar28[4]" identifier = (subscript_expression "puVar28[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar33 != 0) break;" if (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }" statement_identifier : (if_statement "if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }" if (parenthesized_expression "(uVar16 < uVar42)" ( (binary_expression "uVar16 < uVar42" identifier < identifier) )) (compound_statement "{\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }" { (expression_statement "iVar33 = *(int *)(pcVar40 + 0x31450);" (assignment_expression "iVar33 = *(int *)(pcVar40 + 0x31450)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x31450)" * (cast_expression "(int *)(pcVar40 + 0x31450)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31450)" ( (binary_expression "pcVar40 + 0x31450" identifier + number_literal) ))))) ;) (expression_statement "pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);" (assignment_expression "pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4)" identifier = (cast_expression "(byte *)(iVar34 + uVar16 * iVar9 + iVar4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + uVar16 * iVar9 + iVar4)" ( (binary_expression "iVar34 + uVar16 * iVar9 + iVar4" (binary_expression "iVar34 + uVar16 * iVar9" identifier + (binary_expression "uVar16 * iVar9" identifier * identifier)) + identifier) )))) ;) (do_statement "do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);" do (compound_statement "{\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                }" { (expression_statement "pbVar27 = (byte *)puVar28[5];" (assignment_expression "pbVar27 = (byte *)puVar28[5]" identifier = (cast_expression "(byte *)puVar28[5]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar28[5]" identifier [ number_literal ]))) ;) (expression_statement "(**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);" (call_expression "(**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x3168c))" ( (pointer_expression "**(code **)(pcVar40 + 0x3168c)" * (pointer_expression "*(code **)(pcVar40 + 0x3168c)" * (cast_expression "(code **)(pcVar40 + 0x3168c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x3168c)" ( (binary_expression "pcVar40 + 0x3168c" identifier + number_literal) ))))) )) (argument_list "(puVar29,pbVar27,0)" ( identifier , identifier , number_literal ))) ;) (for_statement "for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }" for ( (assignment_expression "pbVar22 = pbVar8 + (uVar31 - iVar4)" identifier = (binary_expression "pbVar8 + (uVar31 - iVar4)" identifier + (parenthesized_expression "(uVar31 - iVar4)" ( (binary_expression "uVar31 - iVar4" identifier - identifier) )))) ; (binary_expression "pbVar22 < pbVar8" identifier < identifier) ; (assignment_expression "pbVar22 = pbVar22 + iVar10" identifier = (binary_expression "pbVar22 + iVar10" identifier + identifier)) ) (compound_statement "{\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }" { (expression_statement "uVar6 = (uint)pbVar27[1];" (assignment_expression "uVar6 = (uint)pbVar27[1]" identifier = (cast_expression "(uint)pbVar27[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar27[1]" identifier [ number_literal ]))) ;) (if_statement "if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }" { (expression_statement "bVar14 = *pbVar27;" (assignment_expression "bVar14 = *pbVar27" identifier = (pointer_expression "*pbVar27" * identifier)) ;) (if_statement "if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }" if (parenthesized_expression "(uVar6 != 0xff)" ( (binary_expression "uVar6 != 0xff" identifier != number_literal) )) (compound_statement "{\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }" { (expression_statement "uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;" (assignment_expression "uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6" identifier = (binary_expression "(uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6" (binary_expression "(uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6)" (binary_expression "(uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar33 + (uint)*pbVar22 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + (uint)*pbVar22 * 2)" ( (binary_expression "iVar33 + (uint)*pbVar22 * 2" identifier + (binary_expression "(uint)*pbVar22 * 2" (binary_expression "(uint)*pbVar22" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) * (parenthesized_expression "(0xff - uVar6)" ( (binary_expression "0xff - uVar6" number_literal - identifier) ))) + (binary_expression "*(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6" (pointer_expression "*(ushort *)(iVar33 + (uint)bVar14 * 2)" * (cast_expression "(ushort *)(iVar33 + (uint)bVar14 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + (uint)bVar14 * 2)" ( (binary_expression "iVar33 + (uint)bVar14 * 2" identifier + (binary_expression "(uint)bVar14 * 2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) * identifier))) ;) (expression_statement "uVar36 = uVar6 >> 0xf;" (assignment_expression "uVar36 = uVar6 >> 0xf" identifier = (binary_expression "uVar6 >> 0xf" identifier >> number_literal)) ;) (expression_statement "bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);" (assignment_expression "bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" identifier = (call_expression "(byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" ( (binary_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8" (binary_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2)" (parenthesized_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)" ( (binary_expression "(uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc" (binary_expression "(uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36)" (binary_expression "(uVar6 & 0x7fff) * (uint)" (parenthesized_expression "(uVar6 & 0x7fff)" ( (binary_expression "uVar6 & 0x7fff" identifier & number_literal) )) * (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar25 + uVar36)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar25 + uVar36)" ( (binary_expression "iVar25 + uVar36" identifier + identifier) )))) >> number_literal) )) + (binary_expression "(uint)*(ushort *)(iVar32 + uVar36 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar32 + uVar36 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar32 + uVar36 * 2)" ( (binary_expression "iVar32 + uVar36 * 2" identifier + (binary_expression "uVar36 * 2" identifier * number_literal)) ))))) >> number_literal) )))) ;) })) (expression_statement "*pbVar22 = bVar14;" (assignment_expression "*pbVar22 = bVar14" (pointer_expression "*pbVar22" * identifier) = identifier) ;) })) (expression_statement "pbVar27 = pbVar27 + 2;" (assignment_expression "pbVar27 = pbVar27 + 2" identifier = (binary_expression "pbVar27 + 2" identifier + number_literal)) ;) })) (expression_statement "uVar16 = uVar16 + local_f8;" (assignment_expression "uVar16 = uVar16 + local_f8" identifier = (binary_expression "uVar16 + local_f8" identifier + identifier)) ;) (expression_statement "pbVar8 = pbVar8 + local_f8 * iVar9;" (assignment_expression "pbVar8 = pbVar8 + local_f8 * iVar9" identifier = (binary_expression "pbVar8 + local_f8 * iVar9" identifier + (binary_expression "local_f8 * iVar9" identifier * identifier))) ;) }) while (parenthesized_expression "(uVar16 < uVar42)" ( (binary_expression "uVar16 < uVar42" identifier < identifier) )) ;) }))) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }" if (parenthesized_expression "(cVar15 == '\x10')" ( (binary_expression "cVar15 == '\x10'" identifier == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }" { (expression_statement "iVar32 = puVar28[6];" (assignment_expression "iVar32 = puVar28[6]" identifier = (subscript_expression "puVar28[6]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = (uVar6 & 1) + 1;" (assignment_expression "iVar9 = (uVar6 & 1) + 1" identifier = (binary_expression "(uVar6 & 1) + 1" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) + number_literal)) ;) (expression_statement "uVar36 = uVar6 & 0x21 ^ 0x21;" (assignment_expression "uVar36 = uVar6 & 0x21 ^ 0x21" identifier = (binary_expression "uVar6 & 0x21 ^ 0x21" (binary_expression "uVar6 & 0x21" identifier & number_literal) ^ number_literal)) ;) (expression_statement "iVar34 = ((int)puVar28[7] / 2) * 2;" (assignment_expression "iVar34 = ((int)puVar28[7] / 2) * 2" identifier = (binary_expression "((int)puVar28[7] / 2) * 2" (parenthesized_expression "((int)puVar28[7] / 2)" ( (binary_expression "(int)puVar28[7] / 2" (cast_expression "(int)puVar28[7]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar28[7]" identifier [ number_literal ])) / number_literal) )) * number_literal)) ;) (expression_statement "local_f4 = 1;" (assignment_expression "local_f4 = 1" identifier = number_literal) ;) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (uVar16 != 1) goto LAB_00021ecc;" if (parenthesized_expression "(uVar16 != 1)" ( (binary_expression "uVar16 != 1" identifier != number_literal) )) (goto_statement "goto LAB_00021ecc;" goto statement_identifier ;)) (labeled_statement "LAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);" statement_identifier : (expression_statement "uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);" (assignment_expression "uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f)" identifier = (binary_expression "(uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f)" (parenthesized_expression "(uVar31 & 1)" ( (binary_expression "uVar31 & 1" identifier & number_literal) )) << (parenthesized_expression "(3U - ((int)local_f4 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)local_f4 >> 1) & 0x1f" (binary_expression "3U - ((int)local_f4 >> 1)" number_literal - (parenthesized_expression "((int)local_f4 >> 1)" ( (binary_expression "(int)local_f4 >> 1" (cast_expression "(int)local_f4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) )))) ;)) (if_statement "if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }" if (parenthesized_expression "(uVar31 < 2)" ( (binary_expression "uVar31 < 2" identifier < number_literal) )) (compound_statement "{\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }" { (expression_statement "uVar16 = ~uVar26 & 7;" (assignment_expression "uVar16 = ~uVar26 & 7" identifier = (binary_expression "~uVar26 & 7" (unary_expression "~uVar26" ~ identifier) & number_literal)) ;) (expression_statement "uVar7 = 3;" (assignment_expression "uVar7 = 3" identifier = number_literal) ;) }) (else_clause "else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }" else (compound_statement "{\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }" { (expression_statement "uVar7 = (int)(8 - local_f4) >> 1;" (assignment_expression "uVar7 = (int)(8 - local_f4) >> 1" identifier = (binary_expression "(int)(8 - local_f4) >> 1" (cast_expression "(int)(8 - local_f4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - local_f4)" ( (binary_expression "8 - local_f4" number_literal - identifier) ))) >> number_literal)) ;) (expression_statement "uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);" (assignment_expression "uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7)" identifier = (binary_expression "((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7)" (parenthesized_expression "((uVar16 << (uVar7 & 0x1f)) + -1)" ( (binary_expression "(uVar16 << (uVar7 & 0x1f)) + -1" (parenthesized_expression "(uVar16 << (uVar7 & 0x1f))" ( (binary_expression "uVar16 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) )) + number_literal) )) - (parenthesized_expression "(uVar26 & 7)" ( (binary_expression "uVar26 & 7" identifier & number_literal) )))) ;) }))) (if_statement "if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }" if (parenthesized_expression "(uVar16 + iVar4 >> (uVar7 & 0x1f) != 0)" ( (binary_expression "uVar16 + iVar4 >> (uVar7 & 0x1f) != 0" (binary_expression "uVar16 + iVar4 >> (uVar7 & 0x1f)" (binary_expression "uVar16 + iVar4" identifier + identifier) >> (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) != number_literal) )) (compound_statement "{\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }" { (expression_statement "uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;" (assignment_expression "uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7" identifier = (binary_expression "(~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7" (binary_expression "(~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f)" (parenthesized_expression "(~uVar31 & 1)" ( (binary_expression "~uVar31 & 1" (unary_expression "~uVar31" ~ identifier) & number_literal) )) << (parenthesized_expression "(3U - ((int)uVar31 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uVar31 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar31 >> 1)" number_literal - (parenthesized_expression "((int)uVar31 >> 1)" ( (binary_expression "(int)uVar31 >> 1" (cast_expression "(int)uVar31" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) ))) & number_literal)) ;) (expression_statement "iVar10 = (uVar26 & 7) * iVar9;" (assignment_expression "iVar10 = (uVar26 & 7) * iVar9" identifier = (binary_expression "(uVar26 & 7) * iVar9" (parenthesized_expression "(uVar26 & 7)" ( (binary_expression "uVar26 & 7" identifier & number_literal) )) * identifier)) ;) (expression_statement "iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);" (assignment_expression "iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU)" identifier = (binary_expression "iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU)" identifier << (parenthesized_expression "((int)(8 - local_f4) >> 1 & 0x1fU)" ( (binary_expression "(int)(8 - local_f4) >> 1 & 0x1fU" (binary_expression "(int)(8 - local_f4) >> 1" (cast_expression "(int)(8 - local_f4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - local_f4)" ( (binary_expression "8 - local_f4" number_literal - identifier) ))) >> number_literal) & number_literal) )))) ;) (if_statement "if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }" if (parenthesized_expression "(2 < uVar31)" ( (binary_expression "2 < uVar31" number_literal < identifier) )) (compound_statement "{\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }" { (expression_statement "local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);" (assignment_expression "local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU)" identifier = (binary_expression "8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU)" number_literal >> (parenthesized_expression "((int)(uVar31 - 1) >> 1 & 0x1fU)" ( (binary_expression "(int)(uVar31 - 1) >> 1 & 0x1fU" (binary_expression "(int)(uVar31 - 1) >> 1" (cast_expression "(int)(uVar31 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar31 - 1)" ( (binary_expression "uVar31 - 1" identifier - number_literal) ))) >> number_literal) & number_literal) )))) ;) (goto_statement "goto LAB_00021edc;" goto statement_identifier ;) })) (expression_statement "local_100 = 8;" (assignment_expression "local_100 = 8" identifier = number_literal) ;) (goto_statement "goto LAB_00021edc;" goto statement_identifier ;) })) (do_statement "do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );" do (compound_statement "{\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          }" { (if_statement "if (local_e8 == local_f4) {\n              return 1;\n            }" if (parenthesized_expression "(local_e8 == local_f4)" ( (binary_expression "local_e8 == local_f4" identifier == identifier) )) (compound_statement "{\n              return 1;\n            }" { (return_statement "return 1;" return number_literal ;) })) (while_statement "while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }" { (expression_statement "uVar16 = (uint)*(byte *)(puVar29 + 0x7f);" (assignment_expression "uVar16 = (uint)*(byte *)(puVar29 + 0x7f)" identifier = (binary_expression "(uint)*(byte *)(puVar29 + 0x7f)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(puVar29 + 0x7f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x7f)" ( (binary_expression "puVar29 + 0x7f" identifier + number_literal) ))))) ;) (expression_statement "uVar26 = local_f4 + 1;" (assignment_expression "uVar26 = local_f4 + 1" identifier = (binary_expression "local_f4 + 1" identifier + number_literal)) ;) (expression_statement "uVar31 = local_f4;" (assignment_expression "uVar31 = local_f4" identifier = identifier) ;) (expression_statement "local_f4 = uVar26;" (assignment_expression "local_f4 = uVar26" identifier = identifier) ;) (if_statement "if (uVar16 == 1) goto LAB_00021e54;" if (parenthesized_expression "(uVar16 == 1)" ( (binary_expression "uVar16 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00021e54;" goto statement_identifier ;)) (labeled_statement "LAB_00021ecc:\n              uVar16 = 0;" statement_identifier : (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;)) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "local_100 = 1;" (assignment_expression "local_100 = 1" identifier = number_literal) ;) (expression_statement "iVar25 = iVar9;" (assignment_expression "iVar25 = iVar9" identifier = identifier) ;) (labeled_statement "LAB_00021edc:\n              if (uVar42 <= uVar16) break;" statement_identifier : (if_statement "if (uVar42 <= uVar16) break;" if (parenthesized_expression "(uVar42 <= uVar16)" ( (binary_expression "uVar42 <= uVar16" identifier <= identifier) )) (break_statement "break;" break ;))) (expression_statement "puVar21 = (ushort *)puVar28[5];" (assignment_expression "puVar21 = (ushort *)puVar28[5]" identifier = (cast_expression "(ushort *)puVar28[5]" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar28[5]" identifier [ number_literal ]))) ;) (expression_statement "uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;" (assignment_expression "uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2" identifier = (binary_expression "iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2" (binary_expression "iVar32 + iVar34 * uVar16" identifier + (binary_expression "iVar34 * uVar16" identifier * identifier)) + (binary_expression "iVar4 * iVar9 * 2" (binary_expression "iVar4 * iVar9" identifier * identifier) * number_literal))) ;) (expression_statement "pcVar41 = *(code **)(pcVar40 + 0x3168c);" (assignment_expression "pcVar41 = *(code **)(pcVar40 + 0x3168c)" identifier = (pointer_expression "*(code **)(pcVar40 + 0x3168c)" * (cast_expression "(code **)(pcVar40 + 0x3168c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x3168c)" ( (binary_expression "pcVar40 + 0x3168c" identifier + number_literal) ))))) ;) (do_statement "do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);" do (compound_statement "{\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              }" { (expression_statement "(*pcVar41)(puVar29,puVar21,0);" (call_expression "(*pcVar41)(puVar29,puVar21,0)" (parenthesized_expression "(*pcVar41)" ( (pointer_expression "*pcVar41" * identifier) )) (argument_list "(puVar29,puVar21,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "puVar21 = (ushort *)puVar28[5];" (assignment_expression "puVar21 = (ushort *)puVar28[5]" identifier = (cast_expression "(ushort *)puVar28[5]" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar28[5]" identifier [ number_literal ]))) ;) (expression_statement "puVar23 = puVar21;" (assignment_expression "puVar23 = puVar21" identifier = identifier) ;) (for_statement "for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }" for ( (assignment_expression "uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31" identifier = (binary_expression "iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31" (binary_expression "iVar10 * 2 + iVar4 * iVar9 * -2" (binary_expression "iVar10 * 2" identifier * number_literal) + (binary_expression "iVar4 * iVar9 * -2" (binary_expression "iVar4 * iVar9" identifier * identifier) * number_literal)) + identifier)) ; (binary_expression "uVar26 < uVar31" identifier < identifier) ; (assignment_expression "uVar26 = uVar26 + iVar25 * 2" identifier = (binary_expression "uVar26 + iVar25 * 2" identifier + (binary_expression "iVar25 * 2" identifier * number_literal))) ) (compound_statement "{\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }" { (expression_statement "uVar2 = puVar23[1];" (assignment_expression "uVar2 = puVar23[1]" identifier = (subscript_expression "puVar23[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = (uint)uVar2;" (assignment_expression "uVar7 = (uint)uVar2" identifier = (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar12 = *puVar23;" (assignment_expression "uVar12 = *puVar23" identifier = (pointer_expression "*puVar23" * identifier)) ;) (if_statement "if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                    uVar12 = 0;\n                  }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) }) (else_clause "else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }" else (if_statement "if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }" if (parenthesized_expression "(uVar7 != 0xffff)" ( (binary_expression "uVar7 != 0xffff" identifier != number_literal) )) (compound_statement "{\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }" { (expression_statement "uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);" (assignment_expression "uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10)" identifier = (call_expression "(ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10)" ( (binary_expression "(uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10" (call_expression "(uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1)" ( (binary_expression "(int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1" (cast_expression "(int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20)" ( (binary_expression "(ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20" (binary_expression "(ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001" (call_expression "(ulonglong)(uVar7 * uVar12 + 0x7fff)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar7 * uVar12 + 0x7fff)" ( (binary_expression "uVar7 * uVar12 + 0x7fff" (binary_expression "uVar7 * uVar12" identifier * identifier) + number_literal) ))) * number_literal) >> number_literal) ))) << number_literal) ))) >> number_literal) )))) ;) })))) (expression_statement "*(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;" (assignment_expression "*(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12" (pointer_expression "*(ushort *)((uint)(uVar36 == 0) * 2 + uVar26)" * (cast_expression "(ushort *)((uint)(uVar36 == 0) * 2 + uVar26)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(uVar36 == 0) * 2 + uVar26)" ( (binary_expression "(uint)(uVar36 == 0) * 2 + uVar26" (binary_expression "(uint)(uVar36 == 0) * 2" (call_expression "(uint)(uVar36 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar36 == 0)" ( (binary_expression "uVar36 == 0" identifier == number_literal) ))) * number_literal) + identifier) )))) = identifier) ;) (if_statement "if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }" if (parenthesized_expression "((uVar6 & 1) != 0)" ( (binary_expression "(uVar6 & 1) != 0" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }" { (expression_statement "*(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;" (assignment_expression "*(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2" (pointer_expression "*(ushort *)((uint)(uVar36 != 0) * 2 + uVar26)" * (cast_expression "(ushort *)((uint)(uVar36 != 0) * 2 + uVar26)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(uVar36 != 0) * 2 + uVar26)" ( (binary_expression "(uint)(uVar36 != 0) * 2 + uVar26" (binary_expression "(uint)(uVar36 != 0) * 2" (call_expression "(uint)(uVar36 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar36 != 0)" ( (binary_expression "uVar36 != 0" identifier != number_literal) ))) * number_literal) + identifier) )))) = identifier) ;) })) (expression_statement "puVar23 = puVar23 + 2;" (assignment_expression "puVar23 = puVar23 + 2" identifier = (binary_expression "puVar23 + 2" identifier + number_literal)) ;) })) (expression_statement "uVar16 = uVar16 + local_100;" (assignment_expression "uVar16 = uVar16 + local_100" identifier = (binary_expression "uVar16 + local_100" identifier + identifier)) ;) (expression_statement "uVar31 = uVar31 + iVar34 * local_100;" (assignment_expression "uVar31 = uVar31 + iVar34 * local_100" identifier = (binary_expression "uVar31 + iVar34 * local_100" identifier + (binary_expression "iVar34 * local_100" identifier * identifier))) ;) (expression_statement "pcVar41 = *(code **)(pcVar40 + 0x3168c);" (assignment_expression "pcVar41 = *(code **)(pcVar40 + 0x3168c)" identifier = (pointer_expression "*(code **)(pcVar40 + 0x3168c)" * (cast_expression "(code **)(pcVar40 + 0x3168c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x3168c)" ( (binary_expression "pcVar40 + 0x3168c" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(uVar16 < uVar42)" ( (binary_expression "uVar16 < uVar42" identifier < identifier) )) ;) (if_statement "if (local_e8 == local_f4) {\n                return 1;\n              }" if (parenthesized_expression "(local_e8 == local_f4)" ( (binary_expression "local_e8 == local_f4" identifier == identifier) )) (compound_statement "{\n                return 1;\n              }" { (return_statement "return 1;" return number_literal ;) })) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (goto_statement "goto LAB_00022438;" goto statement_identifier ;) })) (expression_statement "local_e8 = 7;" (assignment_expression "local_e8 = 7" identifier = number_literal) ;) (if_statement "if (uVar16 == 1) goto LAB_00021dd0;" if (parenthesized_expression "(uVar16 == 1)" ( (binary_expression "uVar16 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00021dd0;" goto statement_identifier ;)) (goto_statement "goto LAB_0002244c;" goto statement_identifier ;) })) }))) (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar40 + 0x316f4)" * (pointer_expression "*(code **)(pcVar40 + 0x316f4)" * (cast_expression "(code **)(pcVar40 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316f4)" ( (binary_expression "pcVar40 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,iVar9 + -0x2b0)" ( identifier , (binary_expression "iVar9 + -0x2b0" identifier + number_literal) ))) ;) (labeled_statement "LAB_00022470:\n  pcVar41 = *(code **)(pcVar40 + 0x316f4);" statement_identifier : (expression_statement "pcVar41 = *(code **)(pcVar40 + 0x316f4);" (assignment_expression "pcVar41 = *(code **)(pcVar40 + 0x316f4)" identifier = (pointer_expression "*(code **)(pcVar40 + 0x316f4)" * (cast_expression "(code **)(pcVar40 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316f4)" ( (binary_expression "pcVar40 + 0x316f4" identifier + number_literal) ))))) ;)) (expression_statement "(*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8);" (call_expression "(*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8)" (parenthesized_expression "(*pcVar41)" ( (pointer_expression "*pcVar41" * identifier) )) (argument_list "(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8)" ( identifier , (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x2c8" (pointer_expression "*(int *)(pcVar40 + 0x31304)" * (cast_expression "(int *)(pcVar40 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31304)" ( (binary_expression "pcVar40 + 0x31304" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "puVar17 = (undefined4 *)*puVar29;" (assignment_expression "puVar17 = (undefined4 *)*puVar29" identifier = (cast_expression "(undefined4 *)*puVar29" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar29" * identifier))) ;) (expression_statement "puVar28 = *(undefined4 **)*puVar17;" (assignment_expression "puVar28 = *(undefined4 **)*puVar17" identifier = (pointer_expression "*(undefined4 **)*puVar17" * (cast_expression "(undefined4 **)*puVar17" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*puVar17" * identifier)))) ;) (expression_statement "cVar15 = *(char *)(puVar28 + 0x7f);" (assignment_expression "cVar15 = *(char *)(puVar28 + 0x7f)" identifier = (pointer_expression "*(char *)(puVar28 + 0x7f)" * (cast_expression "(char *)(puVar28 + 0x7f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x7f)" ( (binary_expression "puVar28 + 0x7f" identifier + number_literal) ))))) ;) (if_statement "if (cVar15 == '\0') {\n    local_154 = 1;\n  }\n  else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }" if (parenthesized_expression "(cVar15 == '\0')" ( (binary_expression "cVar15 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_154 = 1;\n  }" { (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }" else (compound_statement "{\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }" { (expression_statement "local_154 = 7;" (assignment_expression "local_154 = 7" identifier = number_literal) ;) (if_statement "if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }" if (parenthesized_expression "(cVar15 != '\x01')" ( (binary_expression "cVar15 != '\x01'" identifier != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }" { (expression_statement "pcVar40 = *(code **)(pcVar41 + 0x30f88);" (assignment_expression "pcVar40 = *(code **)(pcVar41 + 0x30f88)" identifier = (pointer_expression "*(code **)(pcVar41 + 0x30f88)" * (cast_expression "(code **)(pcVar41 + 0x30f88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar41 + 0x30f88)" ( (binary_expression "pcVar41 + 0x30f88" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);" (call_expression "(*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290)" ( identifier , (binary_expression "*(int *)(pcVar41 + 0x30b98) + -0x290" (pointer_expression "*(int *)(pcVar41 + 0x30b98)" * (cast_expression "(int *)(pcVar41 + 0x30b98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar41 + 0x30b98)" ( (binary_expression "pcVar41 + 0x30b98" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "piVar5 = (int *)*puVar28;" (assignment_expression "piVar5 = (int *)*puVar28" identifier = (cast_expression "(int *)*puVar28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar28" * identifier))) ;) (expression_statement "uVar20 = *(undefined4 *)*piVar5;" (assignment_expression "uVar20 = *(undefined4 *)*piVar5" identifier = (pointer_expression "*(undefined4 *)*piVar5" * (cast_expression "(undefined4 *)*piVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)))) ;) (expression_statement "iVar4 = ((undefined4 *)*piVar5)[1];" (assignment_expression "iVar4 = ((undefined4 *)*piVar5)[1]" identifier = (subscript_expression "((undefined4 *)*piVar5)[1]" (parenthesized_expression "((undefined4 *)*piVar5)" ( (cast_expression "(undefined4 *)*piVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) )) [ number_literal ])) ;) (expression_statement "FUN_0001e55c(uVar20);" (call_expression "FUN_0001e55c(uVar20)" identifier (argument_list "(uVar20)" ( identifier ))) ;) (if_statement "if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }" if (parenthesized_expression "(puVar28[10] == 0)" ( (binary_expression "puVar28[10] == 0" (subscript_expression "puVar28[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }" { (expression_statement "iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);" (assignment_expression "iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20)" identifier = (call_expression "(**(code **)(pcVar40 + 0x30c58))(uVar20)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30c58))" ( (pointer_expression "**(code **)(pcVar40 + 0x30c58)" * (pointer_expression "*(code **)(pcVar40 + 0x30c58)" * (cast_expression "(code **)(pcVar40 + 0x30c58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30c58)" ( (binary_expression "pcVar40 + 0x30c58" identifier + number_literal) ))))) )) (argument_list "(uVar20)" ( identifier )))) ;) }) (else_clause "else {\n        iVar34 = 0;\n      }" else (compound_statement "{\n        iVar34 = 0;\n      }" { (expression_statement "iVar34 = 0;" (assignment_expression "iVar34 = 0" identifier = number_literal) ;) }))) (expression_statement "(**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);" (call_expression "(**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30d48))" ( (pointer_expression "**(code **)(pcVar40 + 0x30d48)" * (pointer_expression "*(code **)(pcVar40 + 0x30d48)" * (cast_expression "(code **)(pcVar40 + 0x30d48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30d48)" ( (binary_expression "pcVar40 + 0x30d48" identifier + number_literal) ))))) )) (argument_list "(uVar20,iVar4)" ( identifier , identifier ))) ;) (if_statement "if ((uint)puVar28[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }" if (parenthesized_expression "((uint)puVar28[10] < 5)" ( (binary_expression "(uint)puVar28[10] < 5" (cast_expression "(uint)puVar28[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar28[10]" identifier [ number_literal ])) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }" { comment comment (expression_statement "iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();" (assignment_expression "iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))()" identifier = (call_expression "(*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))()" (parenthesized_expression "(*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))" ( (pointer_expression "*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820)" * (parenthesized_expression "(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820)" ( (binary_expression "pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820" (binary_expression "pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4)" identifier + (pointer_expression "*(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4)" * (cast_expression "(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4)" ( (binary_expression "*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4" (binary_expression "*(int *)(pcVar40 + 0x3084c) + 0x164" (pointer_expression "*(int *)(pcVar40 + 0x3084c)" * (cast_expression "(int *)(pcVar40 + 0x3084c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x3084c)" ( (binary_expression "pcVar40 + 0x3084c" identifier + number_literal) )))) + number_literal) + (binary_expression "puVar28[10] * 4" (subscript_expression "puVar28[10]" identifier [ number_literal ]) * number_literal)) ))))) + number_literal) ))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar4;" return identifier ;) })) (expression_statement "iVar9 = *(int *)(pcVar40 + 0x3084c);" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x3084c)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x3084c)" * (cast_expression "(int *)(pcVar40 + 0x3084c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x3084c)" ( (binary_expression "pcVar40 + 0x3084c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );" statement_identifier : (do_statement "do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );" do (compound_statement "{\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      }" { (expression_statement "(**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);" (call_expression "(**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30c3c))" ( (pointer_expression "**(code **)(pcVar40 + 0x30c3c)" * (pointer_expression "*(code **)(pcVar40 + 0x30c3c)" * (cast_expression "(code **)(pcVar40 + 0x30c3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30c3c)" ( (binary_expression "pcVar40 + 0x30c3c" identifier + number_literal) ))))) )) (argument_list "(uVar20,iVar9 + -0x260)" ( identifier , (binary_expression "iVar9 + -0x260" identifier + number_literal) ))) ;) (if_statement "if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }" if (parenthesized_expression "(*(char *)(iVar4 + 0x19) != '\x03')" ( (binary_expression "*(char *)(iVar4 + 0x19) != '\x03'" (pointer_expression "*(char *)(iVar4 + 0x19)" * (cast_expression "(char *)(iVar4 + 0x19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x19)" ( (binary_expression "iVar4 + 0x19" identifier + number_literal) )))) != (char_literal "'\x03'" ' escape_sequence ')) )) (compound_statement "{\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }" { (expression_statement "iVar9 = *(int *)(pcVar40 + 0x3084c);" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x3084c)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x3084c)" * (cast_expression "(int *)(pcVar40 + 0x3084c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x3084c)" ( (binary_expression "pcVar40 + 0x3084c" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;" if (parenthesized_expression "(*(char *)(iVar4 + 0x19) != '\0')" ( (binary_expression "*(char *)(iVar4 + 0x19) != '\0'" (pointer_expression "*(char *)(iVar4 + 0x19)" * (cast_expression "(char *)(iVar4 + 0x19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x19)" ( (binary_expression "iVar4 + 0x19" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00022980;" goto statement_identifier ;)) })) (expression_statement "iVar9 = *(int *)(pcVar40 + 0x3084c);" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x3084c)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x3084c)" * (cast_expression "(int *)(pcVar40 + 0x3084c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x3084c)" ( (binary_expression "pcVar40 + 0x3084c" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }" if (parenthesized_expression "(*(char *)(iVar4 + 0x18) == '\b')" ( (binary_expression "*(char *)(iVar4 + 0x18) == '\b'" (pointer_expression "*(char *)(iVar4 + 0x18)" * (cast_expression "(char *)(iVar4 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) == (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }" { (expression_statement "iVar32 = puVar28[2];" (assignment_expression "iVar32 = puVar28[2]" identifier = (subscript_expression "puVar28[2]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = puVar28[1];" (assignment_expression "iVar9 = puVar28[1]" identifier = (subscript_expression "puVar28[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }" if (parenthesized_expression "(iVar32 < 0)" ( (binary_expression "iVar32 < 0" identifier < number_literal) )) (compound_statement "{\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }" { (expression_statement "iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);" (assignment_expression "iVar9 = iVar9 - iVar32 * (piVar5[3] + -1)" identifier = (binary_expression "iVar9 - iVar32 * (piVar5[3] + -1)" identifier - (binary_expression "iVar32 * (piVar5[3] + -1)" identifier * (parenthesized_expression "(piVar5[3] + -1)" ( (binary_expression "piVar5[3] + -1" (subscript_expression "piVar5[3]" identifier [ number_literal ]) + number_literal) ))))) ;) })) (expression_statement "puVar28[6] = iVar9;" (assignment_expression "puVar28[6] = iVar9" (subscript_expression "puVar28[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar28[7] = iVar32;" (assignment_expression "puVar28[7] = iVar32" (subscript_expression "puVar28[7]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }" if (parenthesized_expression "(iVar34 == 0)" ( (binary_expression "iVar34 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }" { (expression_statement "uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);" (assignment_expression "uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4)" identifier = (call_expression "(**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30d3c))" ( (pointer_expression "**(code **)(pcVar40 + 0x30d3c)" * (pointer_expression "*(code **)(pcVar40 + 0x30d3c)" * (cast_expression "(code **)(pcVar40 + 0x30d3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30d3c)" ( (binary_expression "pcVar40 + 0x30d3c" identifier + number_literal) ))))) )) (argument_list "(uVar20,iVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);" (assignment_expression "uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11)" identifier = (call_expression "(**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30b38))" ( (pointer_expression "**(code **)(pcVar40 + 0x30b38)" * (pointer_expression "*(code **)(pcVar40 + 0x30b38)" * (cast_expression "(code **)(pcVar40 + 0x30b38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30b38)" ( (binary_expression "pcVar40 + 0x30b38" identifier + number_literal) ))))) )) (argument_list "(uVar20,uVar11)" ( identifier , identifier )))) ;) (expression_statement "puVar28[5] = uVar11;" (assignment_expression "puVar28[5] = uVar11" (subscript_expression "puVar28[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);" (assignment_expression "iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28)" identifier = (call_expression "FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28)" identifier (argument_list "(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28)" ( identifier , (binary_expression "*(int *)(pcVar40 + 0x308a0) + 0x2aa0" (pointer_expression "*(int *)(pcVar40 + 0x308a0)" * (cast_expression "(int *)(pcVar40 + 0x308a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x308a0)" ( (binary_expression "pcVar40 + 0x308a0" identifier + number_literal) )))) + number_literal) , identifier )))) ;) (expression_statement "pcVar40 = *(code **)(pcVar40 + 0x30b54);" (assignment_expression "pcVar40 = *(code **)(pcVar40 + 0x30b54)" identifier = (pointer_expression "*(code **)(pcVar40 + 0x30b54)" * (cast_expression "(code **)(pcVar40 + 0x30b54)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30b54)" ( (binary_expression "pcVar40 + 0x30b54" identifier + number_literal) ))))) ;) (expression_statement "puVar28[5] = 0;" (assignment_expression "puVar28[5] = 0" (subscript_expression "puVar28[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "(*pcVar40)(uVar20,uVar11);" (call_expression "(*pcVar40)(uVar20,uVar11)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(uVar20,uVar11)" ( identifier , identifier ))) ;) (return_statement "return iVar4;" return identifier ;) })) (while_statement "while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }" while (parenthesized_expression "(iVar34 = iVar34 + -1, -1 < iVar34)" ( (comma_expression "iVar34 = iVar34 + -1, -1 < iVar34" (assignment_expression "iVar34 = iVar34 + -1" identifier = (binary_expression "iVar34 + -1" identifier + number_literal)) , (binary_expression "-1 < iVar34" number_literal < identifier)) )) (compound_statement "{\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }" { (expression_statement "iVar9 = puVar28[6];" (assignment_expression "iVar9 = puVar28[6]" identifier = (subscript_expression "puVar28[6]" identifier [ number_literal ])) ;) (for_statement "for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }" for ( (assignment_expression "iVar4 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ; (binary_expression "iVar4 != 0" identifier != number_literal) ; (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ) (compound_statement "{\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }" { (expression_statement "(**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);" (call_expression "(**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30bd4))" ( (pointer_expression "**(code **)(pcVar40 + 0x30bd4)" * (pointer_expression "*(code **)(pcVar40 + 0x30bd4)" * (cast_expression "(code **)(pcVar40 + 0x30bd4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30bd4)" ( (binary_expression "pcVar40 + 0x30bd4" identifier + number_literal) ))))) )) (argument_list "(uVar20,iVar9,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "iVar9 = iVar9 + iVar32;" (assignment_expression "iVar9 = iVar9 + iVar32" identifier = (binary_expression "iVar9 + iVar32" identifier + identifier)) ;) })) })) (return_statement "return 1;" return number_literal ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })) }))) (expression_statement "uVar42 = puVar17[3];" (assignment_expression "uVar42 = puVar17[3]" identifier = (subscript_expression "puVar17[3]" identifier [ number_literal ])) ;) (expression_statement "iVar34 = puVar17[2];" (assignment_expression "iVar34 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = puVar29[7];" (assignment_expression "iVar4 = puVar29[7]" identifier = (subscript_expression "puVar29[7]" identifier [ number_literal ])) ;) (if_statement "if ((puVar17[4] & 2) == 0) {\n    iVar9 = 1;\n    local_15c = iVar34;\n  }\n  else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }" if (parenthesized_expression "((puVar17[4] & 2) == 0)" ( (binary_expression "(puVar17[4] & 2) == 0" (parenthesized_expression "(puVar17[4] & 2)" ( (binary_expression "puVar17[4] & 2" (subscript_expression "puVar17[4]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar9 = 1;\n    local_15c = iVar34;\n  }" { (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (expression_statement "local_15c = iVar34;" (assignment_expression "local_15c = iVar34" identifier = identifier) ;) }) (else_clause "else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }" else (compound_statement "{\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }" { (expression_statement "iVar9 = 3;" (assignment_expression "iVar9 = 3" identifier = number_literal) ;) (expression_statement "local_15c = iVar34 * 3;" (assignment_expression "local_15c = iVar34 * 3" identifier = (binary_expression "iVar34 * 3" identifier * number_literal)) ;) }))) (expression_statement "iVar25 = *(int *)(pcVar41 + 0x30ce4);" (assignment_expression "iVar25 = *(int *)(pcVar41 + 0x30ce4)" identifier = (pointer_expression "*(int *)(pcVar41 + 0x30ce4)" * (cast_expression "(int *)(pcVar41 + 0x30ce4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar41 + 0x30ce4)" ( (binary_expression "pcVar41 + 0x30ce4" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = *(int *)(pcVar41 + 0x30ce8);" (assignment_expression "iVar32 = *(int *)(pcVar41 + 0x30ce8)" identifier = (pointer_expression "*(int *)(pcVar41 + 0x30ce8)" * (cast_expression "(int *)(pcVar41 + 0x30ce8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar41 + 0x30ce8)" ( (binary_expression "pcVar41 + 0x30ce8" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  } while( true );" do (compound_statement "{\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  }" { (expression_statement "uVar16 = uVar6 + 1;" (assignment_expression "uVar16 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (if_statement "if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }" if (parenthesized_expression "(cVar15 == '\x01')" ( (binary_expression "cVar15 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }" { (expression_statement "uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);" (assignment_expression "uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f)" identifier = (binary_expression "(uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f)" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) << (parenthesized_expression "(3U - ((int)uVar16 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uVar16 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar16 >> 1)" number_literal - (parenthesized_expression "((int)uVar16 >> 1)" ( (binary_expression "(int)uVar16 >> 1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) )))) ;) (if_statement "if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (compound_statement "{\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }" { (expression_statement "uVar36 = ~uVar31 & 7;" (assignment_expression "uVar36 = ~uVar31 & 7" identifier = (binary_expression "~uVar31 & 7" (unary_expression "~uVar31" ~ identifier) & number_literal)) ;) (expression_statement "uVar26 = 3;" (assignment_expression "uVar26 = 3" identifier = number_literal) ;) }) (else_clause "else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }" else (compound_statement "{\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }" { (expression_statement "uVar26 = (int)(8 - uVar16) >> 1;" (assignment_expression "uVar26 = (int)(8 - uVar16) >> 1" identifier = (binary_expression "(int)(8 - uVar16) >> 1" (cast_expression "(int)(8 - uVar16)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - uVar16)" ( (binary_expression "8 - uVar16" number_literal - identifier) ))) >> number_literal)) ;) (expression_statement "uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);" (assignment_expression "uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7)" identifier = (binary_expression "((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7)" (parenthesized_expression "((1 << (uVar26 & 0x1f)) + -1)" ( (binary_expression "(1 << (uVar26 & 0x1f)) + -1" (parenthesized_expression "(1 << (uVar26 & 0x1f))" ( (binary_expression "1 << (uVar26 & 0x1f)" number_literal << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) ))) )) + number_literal) )) - (parenthesized_expression "(uVar31 & 7)" ( (binary_expression "uVar31 & 7" identifier & number_literal) )))) ;) }))) (if_statement "if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }" if (parenthesized_expression "(uVar36 + iVar34 >> (uVar26 & 0x1f) != 0)" ( (binary_expression "uVar36 + iVar34 >> (uVar26 & 0x1f) != 0" (binary_expression "uVar36 + iVar34 >> (uVar26 & 0x1f)" (binary_expression "uVar36 + iVar34" identifier + identifier) >> (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) ))) != number_literal) )) (compound_statement "{\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }" { (expression_statement "local_164 = (uVar31 & 7) * iVar9;" (assignment_expression "local_164 = (uVar31 & 7) * iVar9" identifier = (binary_expression "(uVar31 & 7) * iVar9" (parenthesized_expression "(uVar31 & 7)" ( (binary_expression "uVar31 & 7" identifier & number_literal) )) * identifier)) ;) (expression_statement "iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);" (assignment_expression "iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU)" identifier = (binary_expression "iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU)" identifier << (parenthesized_expression "((int)(8 - uVar16) >> 1 & 0x1fU)" ( (binary_expression "(int)(8 - uVar16) >> 1 & 0x1fU" (binary_expression "(int)(8 - uVar16) >> 1" (cast_expression "(int)(8 - uVar16)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - uVar16)" ( (binary_expression "8 - uVar16" number_literal - identifier) ))) >> number_literal) & number_literal) )))) ;) (expression_statement "uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;" (assignment_expression "uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7" identifier = (binary_expression "(~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7" (binary_expression "(~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f)" (parenthesized_expression "(~uVar6 & 1)" ( (binary_expression "~uVar6 & 1" (unary_expression "~uVar6" ~ identifier) & number_literal) )) << (parenthesized_expression "(3U - ((int)uVar6 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uVar6 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar6 >> 1)" number_literal - (parenthesized_expression "((int)uVar6 >> 1)" ( (binary_expression "(int)uVar6 >> 1" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) ))) & number_literal)) ;) (if_statement "if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }" if (parenthesized_expression "(uVar6 < 3)" ( (binary_expression "uVar6 < 3" identifier < number_literal) )) (compound_statement "{\n          iVar33 = 8;\n        }" { (expression_statement "iVar33 = 8;" (assignment_expression "iVar33 = 8" identifier = number_literal) ;) }) (else_clause "else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }" else (compound_statement "{\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }" { (expression_statement "iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);" (assignment_expression "iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU)" identifier = (binary_expression "8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU)" number_literal >> (parenthesized_expression "((int)(uVar6 - 1) >> 1 & 0x1fU)" ( (binary_expression "(int)(uVar6 - 1) >> 1 & 0x1fU" (binary_expression "(int)(uVar6 - 1) >> 1" (cast_expression "(int)(uVar6 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) ))) >> number_literal) & number_literal) )))) ;) }))) (goto_statement "goto LAB_000225b8;" goto statement_identifier ;) })) }) (else_clause "else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }" else (compound_statement "{\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }" { (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (expression_statement "local_164 = 0;" (assignment_expression "local_164 = 0" identifier = number_literal) ;) (expression_statement "iVar33 = 1;" (assignment_expression "iVar33 = 1" identifier = number_literal) ;) (expression_statement "iVar10 = iVar9;" (assignment_expression "iVar10 = iVar9" identifier = identifier) ;) (labeled_statement "LAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }" statement_identifier : (if_statement "if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }" if (parenthesized_expression "(uVar31 < uVar42)" ( (binary_expression "uVar31 < uVar42" identifier < identifier) )) (compound_statement "{\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }" { (expression_statement "iVar30 = uVar31 * iVar4;" (assignment_expression "iVar30 = uVar31 * iVar4" identifier = (binary_expression "uVar31 * iVar4" identifier * identifier)) ;) (do_statement "do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);" do (compound_statement "{\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        }" { (expression_statement "iVar37 = puVar29[5];" (assignment_expression "iVar37 = puVar29[5]" identifier = (subscript_expression "puVar29[5]" identifier [ number_literal ])) ;) (expression_statement "(**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);" (call_expression "(**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0)" (parenthesized_expression "(**(code **)(pcVar41 + 0x30f20))" ( (pointer_expression "**(code **)(pcVar41 + 0x30f20)" * (pointer_expression "*(code **)(pcVar41 + 0x30f20)" * (cast_expression "(code **)(pcVar41 + 0x30f20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar41 + 0x30f20)" ( (binary_expression "pcVar41 + 0x30f20" identifier + number_literal) ))))) )) (argument_list "(puVar28,iVar37,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);" (assignment_expression "pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c)" identifier = (cast_expression "(byte *)(puVar29[6] + iVar30 + local_15c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29[6] + iVar30 + local_15c)" ( (binary_expression "puVar29[6] + iVar30 + local_15c" (binary_expression "puVar29[6] + iVar30" (subscript_expression "puVar29[6]" identifier [ number_literal ]) + identifier) + identifier) )))) ;) (expression_statement "pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);" (assignment_expression "pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164)" identifier = (cast_expression "(byte *)(puVar29[6] + iVar30 + local_164)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29[6] + iVar30 + local_164)" ( (binary_expression "puVar29[6] + iVar30 + local_164" (binary_expression "puVar29[6] + iVar30" (subscript_expression "puVar29[6]" identifier [ number_literal ]) + identifier) + identifier) )))) ;) (if_statement "if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }" if (parenthesized_expression "(pbVar8 < pbVar27)" ( (binary_expression "pbVar8 < pbVar27" identifier < identifier) )) (compound_statement "{\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }" { (expression_statement "iVar38 = *(int *)(pcVar41 + 0x30cec);" (assignment_expression "iVar38 = *(int *)(pcVar41 + 0x30cec)" identifier = (pointer_expression "*(int *)(pcVar41 + 0x30cec)" * (cast_expression "(int *)(pcVar41 + 0x30cec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar41 + 0x30cec)" ( (binary_expression "pcVar41 + 0x30cec" identifier + number_literal) ))))) ;) (expression_statement "pbVar22 = (byte *)(iVar37 + iVar9);" (assignment_expression "pbVar22 = (byte *)(iVar37 + iVar9)" identifier = (cast_expression "(byte *)(iVar37 + iVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar37 + iVar9)" ( (binary_expression "iVar37 + iVar9" identifier + identifier) )))) ;) (do_statement "do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);" do (compound_statement "{\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            }" { (while_statement "while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }" { (expression_statement "uVar6 = (uint)*pbVar22;" (assignment_expression "uVar6 = (uint)*pbVar22" identifier = (binary_expression "(uint)*pbVar22" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar18 = pbVar22 + -iVar9;" (assignment_expression "pbVar18 = pbVar22 + -iVar9" identifier = (binary_expression "pbVar22 + -iVar9" identifier + (unary_expression "-iVar9" - identifier))) ;) (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar24 = pbVar8;" (assignment_expression "pbVar24 = pbVar8" identifier = identifier) ;) (do_statement "do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);" do (compound_statement "{\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                }" { (expression_statement "bVar14 = *pbVar18;" (assignment_expression "bVar14 = *pbVar18" identifier = (pointer_expression "*pbVar18" * identifier)) ;) (if_statement "if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }" if (parenthesized_expression "(uVar6 != 0xff)" ( (binary_expression "uVar6 != 0xff" identifier != number_literal) )) (compound_statement "{\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }" { (expression_statement "uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;" (assignment_expression "uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff" identifier = (binary_expression "(uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff" (binary_expression "(uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6)" (binary_expression "(uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar25 + (uint)*pbVar24 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar25 + (uint)*pbVar24 * 2)" ( (binary_expression "iVar25 + (uint)*pbVar24 * 2" identifier + (binary_expression "(uint)*pbVar24 * 2" (binary_expression "(uint)*pbVar24" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) * (parenthesized_expression "(0xff - uVar6)" ( (binary_expression "0xff - uVar6" number_literal - identifier) ))) + (binary_expression "(uint)bVar14 * 0xffff" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal))) ;) (expression_statement "uVar26 = uVar36 >> 0xf;" (assignment_expression "uVar26 = uVar36 >> 0xf" identifier = (binary_expression "uVar36 >> 0xf" identifier >> number_literal)) ;) (expression_statement "bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);" (assignment_expression "bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8)" identifier = (call_expression "(byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8)" ( (binary_expression "((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8" (binary_expression "((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2)" (parenthesized_expression "((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc)" ( (binary_expression "(uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc" (binary_expression "(uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26)" (binary_expression "(uVar36 & 0x7fff) * (uint)" (parenthesized_expression "(uVar36 & 0x7fff)" ( (binary_expression "uVar36 & 0x7fff" identifier & number_literal) )) * (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar32 + uVar26)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar32 + uVar26)" ( (binary_expression "iVar32 + uVar26" identifier + identifier) )))) >> number_literal) )) + (binary_expression "(uint)*(ushort *)(iVar38 + uVar26 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar38 + uVar26 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + uVar26 * 2)" ( (binary_expression "iVar38 + uVar26 * 2" identifier + (binary_expression "uVar26 * 2" identifier * number_literal)) ))))) >> number_literal) )))) ;) })) (expression_statement "pbVar18 = pbVar18 + 1;" (assignment_expression "pbVar18 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar24 = bVar14;" (assignment_expression "*pbVar24 = bVar14" (pointer_expression "*pbVar24" * identifier) = identifier) ;) (expression_statement "pbVar24 = pbVar24 + 1;" (assignment_expression "pbVar24 = pbVar24 + 1" identifier = (binary_expression "pbVar24 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar18 != pbVar22)" ( (binary_expression "pbVar18 != pbVar22" identifier != identifier) )) ;) (expression_statement "pbVar8 = pbVar8 + iVar10;" (assignment_expression "pbVar8 = pbVar8 + iVar10" identifier = (binary_expression "pbVar8 + iVar10" identifier + identifier)) ;) (expression_statement "pbVar22 = pbVar22 + iVar9 + 1;" (assignment_expression "pbVar22 = pbVar22 + iVar9 + 1" identifier = (binary_expression "pbVar22 + iVar9 + 1" (binary_expression "pbVar22 + iVar9" identifier + identifier) + number_literal)) ;) (if_statement "if (pbVar27 <= pbVar8) goto LAB_000226d4;" if (parenthesized_expression "(pbVar27 <= pbVar8)" ( (binary_expression "pbVar27 <= pbVar8" identifier <= identifier) )) (goto_statement "goto LAB_000226d4;" goto statement_identifier ;)) })) (expression_statement "pbVar8 = pbVar8 + iVar10;" (assignment_expression "pbVar8 = pbVar8 + iVar10" identifier = (binary_expression "pbVar8 + iVar10" identifier + identifier)) ;) (expression_statement "pbVar22 = pbVar22 + iVar9 + 1;" (assignment_expression "pbVar22 = pbVar22 + iVar9 + 1" identifier = (binary_expression "pbVar22 + iVar9 + 1" (binary_expression "pbVar22 + iVar9" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "(pbVar8 < pbVar27)" ( (binary_expression "pbVar8 < pbVar27" identifier < identifier) )) ;) })) (labeled_statement "LAB_000226d4:\n          uVar31 = uVar31 + iVar33;" statement_identifier : (expression_statement "uVar31 = uVar31 + iVar33;" (assignment_expression "uVar31 = uVar31 + iVar33" identifier = (binary_expression "uVar31 + iVar33" identifier + identifier)) ;)) (expression_statement "iVar30 = iVar30 + iVar33 * iVar4;" (assignment_expression "iVar30 = iVar30 + iVar33 * iVar4" identifier = (binary_expression "iVar30 + iVar33 * iVar4" identifier + (binary_expression "iVar33 * iVar4" identifier * identifier))) ;) }) while (parenthesized_expression "(uVar31 < uVar42)" ( (binary_expression "uVar31 < uVar42" identifier < identifier) )) ;) }))) }))) (if_statement "if (local_154 == uVar16) {\n      return 1;\n    }" if (parenthesized_expression "(local_154 == uVar16)" ( (binary_expression "local_154 == uVar16" identifier == identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "cVar15 = *(char *)(puVar28 + 0x7f);" (assignment_expression "cVar15 = *(char *)(puVar28 + 0x7f)" identifier = (pointer_expression "*(char *)(puVar28 + 0x7f)" * (cast_expression "(char *)(puVar28 + 0x7f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x7f)" ( (binary_expression "puVar28 + 0x7f" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = uVar16;" (assignment_expression "uVar6 = uVar16" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void png_read_row(png_structrp png_ptr,png_bytep row,png_bytep dsp_row)\n\n{\n  bool bVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  int iVar4;\n  int *piVar5;\n  png_uint_32 pVar6;\n  uint uVar7;\n  byte *pbVar8;\n  void *pvVar9;\n  int iVar10;\n  ushort uVar11;\n  byte bVar12;\n  byte bVar13;\n  undefined4 *arg;\n  char cVar14;\n  uint uVar15;\n  undefined4 *puVar16;\n  byte *pbVar17;\n  undefined *puVar18;\n  undefined4 uVar19;\n  _func_int_png_voidp *function;\n  ushort *puVar20;\n  byte *pbVar21;\n  int iVar22;\n  uint uVar23;\n  ushort *puVar24;\n  byte *pbVar25;\n  int iVar26;\n  uint uVar27;\n  byte *pbVar28;\n  png_structrp unaff_s0;\n  png_structrp png_ptr_00;\n  undefined4 *puVar29;\n  int iVar30;\n  uint uVar31;\n  int iVar32;\n  int iVar33;\n  png_bytep unaff_s2;\n  png_structrp ppVar34;\n  png_imagep paVar35;\n  uint uVar36;\n  int iVar37;\n  png_infop ppVar38;\n  int iVar39;\n  int iVar40;\n  undefined *puVar41;\n  code *pcVar42;\n  code *pcVar43;\n  uint uVar44;\n  int iStackY_164;\n  int iStackY_15c;\n  uint uStackY_154;\n  int iStackY_100;\n  int iStackY_f8;\n  uint uStackY_f4;\n  uint uStackY_ec;\n  uint uStackY_e8;\n  uint uStack_80;\n  ushort uStack_7c;\n  ushort uStack_7a;\n  ushort uStack_78;\n  int iStack_74;\n  png_structrp ppStack_70;\n  undefined *puStack_6c;\n  png_bytep ppStack_68;\n  png_bytep ppStack_64;\n  png_row_info row_info;\n  \n  puVar3 = PTR___stack_chk_guard_000534bc;\n  iVar4 = *(int *)PTR___stack_chk_guard_000534bc;\n  if (png_ptr != (png_structrp)0x0) {\n    ppVar34 = png_ptr;\n    if ((png_ptr->flags & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    uVar11._0_1_ = png_ptr->pixel_depth;\n    uVar11._1_1_ = png_ptr->channels;\n    bVar13 = png_ptr->pixel_depth;\n    row_info.width = png_ptr->iwidth;\n    row_info.color_type = png_ptr->color_type;\n    row_info._10_2_ = (ushort)((uVar11 & 0xff) << 8) | uVar11 >> 8;\n    row_info.bit_depth = png_ptr->bit_depth;\n    if (bVar13 < 8) {\n      row_info.rowbytes = bVar13 * row_info.width + 7 >> 3;\n    }\n    else {\n      row_info.rowbytes = (bVar13 >> 3) * row_info.width;\n    }\n    unaff_s0 = png_ptr;\n    unaff_s2 = dsp_row;\n    if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) != 0)) {\n      if (png_ptr->pass < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)))();\n        return;\n      }\n      if ((png_ptr->row_number & 1) == 0) {\n        png_read_finish_row(png_ptr);\n        goto LAB_000212f4;\n      }\n    }\n    if ((png_ptr->mode & 4) == 0) goto LAB_000215cc;\n    *png_ptr->row_buf = 0xff;\n    png_read_IDAT_data(png_ptr,png_ptr->row_buf,row_info.rowbytes + 1);\n    pbVar8 = png_ptr->row_buf;\n    uVar44 = (uint)*pbVar8;\n    if (uVar44 != 0) {\n      if (4 < uVar44) goto LAB_000215e0;\n      png_read_filter_row(png_ptr,&row_info,pbVar8 + 1,png_ptr->prev_row + 1,uVar44);\n      pbVar8 = png_ptr->row_buf;\n    }\n    (*(code *)PTR_memcpy_000534c4)(png_ptr->prev_row,pbVar8,row_info.rowbytes + 1);\n    if ((((png_ptr->mng_features_permitted & 4) == 0) || (png_ptr->filter_type != '@')) ||\n       ((row_info.color_type & 2) == 0)) {\nLAB_00021248:\n      pVar6 = png_ptr->transformations;\n    }\n    else {\n      puVar20 = (ushort *)(png_ptr->row_buf + 1);\n      if (row_info.bit_depth != '\b') {\n        if (row_info.bit_depth == '\x10') {\n          if (row_info.color_type == '\x02') {\n            iVar32 = 6;\n          }\n          else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }\n          pVar6 = 0;\n          if (row_info.width != 0) {\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (row_info.color_type == '\x02') {\n        iVar32 = 3;\n      }\n      else {\n        iVar32 = 4;\n        if (row_info.color_type != '\x06') goto LAB_00021248;\n      }\n      pVar6 = 0;\n      if (row_info.width == 0) goto LAB_00021248;\n      do {\n        uVar11 = *puVar20;\n        pVar6 = pVar6 + 1;\n        *(char *)puVar20 = (char)uVar11 + *(char *)puVar20;\n        *(char *)(puVar20 + 1) = (char)uVar11 + *(char *)(puVar20 + 1);\n        puVar20 = (ushort *)((int)puVar20 + iVar32);\n      } while (row_info.width != pVar6);\n      pVar6 = png_ptr->transformations;\n    }\nLAB_0002124c:\n    if (pVar6 != 0) {\n      png_do_read_transformations(png_ptr,&row_info);\n    }\n    if (png_ptr->transformed_pixel_depth != '\0') {\n      if (png_ptr->transformed_pixel_depth == row_info.pixel_depth) goto LAB_00021274;\n      ppVar34 = png_ptr;\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      png_read_start_row(ppVar34);\n      goto LAB_00021100;\n    }\n    png_ptr->transformed_pixel_depth = row_info.pixel_depth;\n    puVar18 = PTR_s_nt_0005301c;\n    if (png_ptr->maximum_pixel_depth < row_info.pixel_depth) goto LAB_000215f4;\nLAB_00021274:\n    if ((png_ptr->interlaced == '\0') || ((png_ptr->transformations & 2) == 0)) {\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,-1);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,-1);\n      }\n    }\n    else {\n      if (png_ptr->pass < 6) {\n        png_do_read_interlace\n                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,1);\n      }\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,0);\n      }\n    }\n    png_read_finish_row(png_ptr);\n    if (png_ptr->read_row_fn != (png_read_status_ptr)0x0) {\n      (*png_ptr->read_row_fn)(png_ptr,png_ptr->row_number,(int)png_ptr->pass);\n    }\n  }\nLAB_000212f4:\n  if (iVar4 == *(int *)puVar3) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\n  png_ptr = unaff_s0;\n  dsp_row = unaff_s2;\nLAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3fc);\nLAB_000215e0:\n  puVar18 = PTR_s_nt_0005301c + -0x9d4;\n  (*(code *)PTR_png_error_0005340c)(png_ptr,puVar18);\nLAB_000215f4:\n  ppVar34 = png_ptr;\n  puVar41 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(png_ptr,puVar18 + -0x3d8);\n  piVar5 = *(int **)(puVar41 + 0x31eb8);\n  paVar35 = (png_imagep)ppVar34->jmp_buf_local[0].__jmpbuf[0].__pc;\n  iStack_74 = *piVar5;\n  puStack_6c = puVar3;\n  uVar31 = paVar35->format;\n  uVar15 = uVar31 & 4;\n  png_ptr_00 = paVar35->opaque->png_ptr;\n  ppVar38 = paVar35->opaque->info_ptr;\n  ppStack_70 = png_ptr;\n  ppStack_68 = dsp_row;\n  ppStack_64 = row;\n  (**(code **)(puVar41 + 0x31d60))(png_ptr_00);\n  pVar6 = png_image_format(png_ptr_00);\n  uVar44 = pVar6 & 0xfffffff7 ^ uVar31;\n  if ((uVar44 & 2) == 0) {\n    uVar36 = 0;\n    if ((pVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar42 = *(code **)(puVar41 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar41 + 0x31dac))(png_ptr_00,1,0xffffffff,0xffffffff);\n      uVar36 = pVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar41 + 0x31d00))(png_ptr_00);\n    }\n    uVar44 = uVar44 & 0xfffffffd;\n    if ((pVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar42 = *(code **)(puVar41 + 0x31d88);\n    if ((paVar35->flags & 4) == 0) {\n      (*pcVar42)(png_ptr_00,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }\n  (*pcVar42)(png_ptr_00,0,0xffffffff);\njoined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar27 = 0;\n    iVar4 = -1;\n  }\n  else {\n    uVar27 = pVar6 & 1;\n    iVar4 = 100000;\n  }\n  if ((uVar44 & 0x40) != 0) {\n    uVar27 = 2;\n    uVar44 = uVar44 & 0xffffffbf;\n  }\n  if (uVar36 != 0) goto LAB_00021afc;\n  do {\n    uVar7 = uVar44 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar41 + 0x31cc8))(png_ptr_00);\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cf8))(png_ptr_00);\n      }\n      uVar44 = uVar44 & 0xfffffffb;\n    }\n    if ((uVar44 & 1) == 0) {\n      pVar6 = 0;\n    }\n    else {\n      uVar19 = 0xffff;\n      if ((pVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar19 = 0xff;\n        }\n        if (bVar1) {\n          uVar44 = uVar44 & 0xffffffdf;\n        }\n        pVar6 = 0;\n        (**(code **)(puVar41 + 0x31d8c))(png_ptr_00,uVar19,!bVar1);\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }\n        else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        pVar6 = 0;\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar41 + 0x31d88))(png_ptr_00,uVar27,iVar4);\n    if ((uVar44 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar44 = uVar44 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cec))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffef;\n      }\n    }\n    if ((uVar44 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31f04))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n    }\n    if (uVar44 != 0) {\n      (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    png_image_skip_unused_chunks(png_ptr_00);\n    if ((pVar6 == 0) && (uVar36 != 2)) {\n      iVar4 = (**(code **)(puVar41 + 0x31e24))(png_ptr_00);\n    }\n    else {\n      iVar4 = 0;\n    }\n    (**(code **)(puVar41 + 0x31f14))(png_ptr_00,ppVar38);\n    uVar44 = ppVar38->color_type & 2;\n    if ((ppVar38->color_type & 4) == 0) {\n      if (pVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (pVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar44 = uVar44 | 1;\n        }\n      }\n      else {\n        uVar44 = uVar44 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar44 = uVar44 | 0x40;\n    }\n    if (ppVar38->bit_depth == '\x10') {\n      uVar44 = uVar44 | 4;\n    }\n    uVar7 = png_ptr_00->transformations;\n    if ((uVar7 & 1) != 0) {\n      uVar44 = uVar44 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar44 = uVar44 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar44) goto LAB_00021d04;\n      pvVar9 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__sp;\n      iVar32 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      if (uVar15 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        pvVar9 = (void *)((int)pvVar9 - iVar32 * (paVar35->height - 1));\n      }\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4] = (int)pvVar9;\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[5] = iVar32;\n      if (pVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x1d18);\n      }\n      else {\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484);\n      }\n      png_safe_execute(paVar35,function,ppVar34);\n      pcVar42 = *(code **)(puVar41 + 0x31d20);\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = 0;\n      (*pcVar42)(png_ptr_00,iVar4);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar44 = uVar44 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((png_ptr_00->flags & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar32 = png_muldiv((png_fixed_point_p)&uStack_80,iVar4,(png_ptr_00->colorspace).gamma,100000);\n    if ((iVar32 == 0) || (iVar32 = png_gamma_significant(uStack_80), iVar32 != 0)) {\n      uVar7 = uVar44 & 4;\n      if (uVar27 == 1) {\n        uVar27 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );\n  while (iVar4 = iVar4 + -1, -1 < iVar4) {\n    iVar39 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n    for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n      (**(code **)(puVar41 + 0x31da0))(png_ptr_00,iVar39,0);\n      iVar39 = iVar39 + iVar32;\n    }\n  }\nLAB_000219e8:\n  if (iStack_74 == *piVar5) {\n    return;\n  }\nLAB_00021ce8:\n  (**(code **)(puVar41 + 0x31e80))();\nLAB_00021cf4:\n  (**(code **)(puVar41 + 0x31e08))();\nLAB_00021d04:\n  pcVar42 = *(code **)(puVar41 + 0x31e08);\n  (*pcVar42)(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x318);\n  piVar5 = (int *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__pc;\n  iVar4 = piVar5[2];\n  puVar29 = *(undefined4 **)*piVar5;\n  iVar32 = ((undefined4 *)*piVar5)[1];\n  uVar44 = piVar5[3];\n  if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar39 = *(int *)(pcVar42 + 0x31304) + -0x290;\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar39 = (**(code **)(pcVar42 + 0x316b4))(puVar29,iVar32);\n    if (iVar39 != 2) goto LAB_00022470;\n    uVar15 = piVar5[4];\n    iVar39 = *(int *)(pcVar42 + 0x31304);\n    if ((uVar15 & 5) != 1) {\n      uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar31 == 0) {\n        uStackY_e8 = 1;\nLAB_00021dd0:\n        cVar14 = *(char *)(iVar32 + 0x18);\n        if (cVar14 == '\b') {\n          iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];\n          iVar26 = *(int *)(pcVar42 + 0x31454);\n          iVar22 = *(int *)(pcVar42 + 0x31458);\n          uStackY_ec = 1;\n          uVar15 = 0;\n          if (uVar31 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar31 = 0;\n          uVar36 = 0;\n          iStackY_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          } while( true );\n        }\n        if (cVar14 == '\x10') {\n          iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = (uVar15 & 1) + 1;\n          uVar27 = uVar15 & 0x21 ^ 0x21;\n          iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;\n          uStackY_f4 = 1;\n          uVar36 = 0;\n          if (uVar31 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);\n          if (uVar36 < 2) {\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }\n          else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }\n          if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      uStackY_e8 = 7;\n      if (uVar31 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }\n  (**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39 + -0x2b0);\nLAB_00022470:\n  pcVar43 = *(code **)(pcVar42 + 0x316f4);\n  (*pcVar43)(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2c8);\n  puVar16 = (undefined4 *)*puVar29;\n  arg = *(undefined4 **)*puVar16;\n  cVar14 = *(char *)(arg + 0x7f);\n  if (cVar14 == '\0') {\n    uStackY_154 = 1;\n  }\n  else {\n    uStackY_154 = 7;\n    if (cVar14 != '\x01') {\n      pcVar42 = *(code **)(pcVar43 + 0x30f88);\n      (*pcVar42)(arg,*(int *)(pcVar43 + 0x30b98) + -0x290);\n      paVar35 = (png_imagep)*arg;\n      ppVar34 = paVar35->opaque->png_ptr;\n      ppVar38 = paVar35->opaque->info_ptr;\n      png_image_skip_unused_chunks(ppVar34);\n      if (arg[10] == 0) {\n        iVar4 = (**(code **)(pcVar42 + 0x30c58))(ppVar34);\n      }\n      else {\n        iVar4 = 0;\n      }\n      (**(code **)(pcVar42 + 0x30d48))(ppVar34,ppVar38);\n      if ((uint)arg[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))();\n        return;\n      }\n      iVar32 = *(int *)(pcVar42 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260);\n        if (ppVar38->color_type != '\x03') {\n          iVar32 = *(int *)(pcVar42 + 0x3084c);\n          if (ppVar38->color_type != '\0') goto LAB_00022980;\n        }\n        iVar32 = *(int *)(pcVar42 + 0x3084c);\n        if (ppVar38->bit_depth == '\b') {\n          iVar39 = arg[2];\n          iVar32 = arg[1];\n          if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }\n          arg[6] = iVar32;\n          arg[7] = iVar39;\n          if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }\n          while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }\n          return;\n        }\n      } while( true );\n    }\n  }\n  uVar44 = puVar16[3];\n  iVar32 = puVar16[2];\n  iVar4 = puVar29[7];\n  if ((puVar16[4] & 2) == 0) {\n    iVar39 = 1;\n    iStackY_15c = iVar32;\n  }\n  else {\n    iVar39 = 3;\n    iStackY_15c = iVar32 * 3;\n  }\n  iVar26 = *(int *)(pcVar43 + 0x30ce4);\n  iVar22 = *(int *)(pcVar43 + 0x30ce8);\n  uVar15 = 0;\n  do {\n    uVar31 = uVar15 + 1;\n    if (cVar14 == '\x01') {\n      uVar36 = (uVar15 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f);\n      if (uVar15 < 2) {\n        uVar27 = ~uVar36 & 7;\n        uVar7 = 3;\n      }\n      else {\n        uVar7 = (int)(8 - uVar31) >> 1;\n        uVar27 = ((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7);\n      }\n      if (uVar27 + iVar32 >> (uVar7 & 0x1f) != 0) {\n        iStackY_164 = (uVar36 & 7) * iVar39;\n        iVar10 = iVar39 << ((int)(8 - uVar31) >> 1 & 0x1fU);\n        uVar36 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n        if (uVar15 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar36 = 0;\n      iStackY_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar39;\nLAB_000225b8:\n      if (uVar36 < uVar44) {\n        iVar30 = uVar36 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);\n          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);\n          if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }\nLAB_000226d4:\n          uVar36 = uVar36 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar36 < uVar44);\n      }\n    }\n    if (uStackY_154 == uVar31) {\n      return;\n    }\n    cVar14 = *(char *)(arg + 0x7f);\n    uVar15 = uVar31;\n  } while( true );\n}\n\n" (function_definition "void png_read_row(png_structrp png_ptr,png_bytep row,png_bytep dsp_row)\n\n{\n  bool bVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  int iVar4;\n  int *piVar5;\n  png_uint_32 pVar6;\n  uint uVar7;\n  byte *pbVar8;\n  void *pvVar9;\n  int iVar10;\n  ushort uVar11;\n  byte bVar12;\n  byte bVar13;\n  undefined4 *arg;\n  char cVar14;\n  uint uVar15;\n  undefined4 *puVar16;\n  byte *pbVar17;\n  undefined *puVar18;\n  undefined4 uVar19;\n  _func_int_png_voidp *function;\n  ushort *puVar20;\n  byte *pbVar21;\n  int iVar22;\n  uint uVar23;\n  ushort *puVar24;\n  byte *pbVar25;\n  int iVar26;\n  uint uVar27;\n  byte *pbVar28;\n  png_structrp unaff_s0;\n  png_structrp png_ptr_00;\n  undefined4 *puVar29;\n  int iVar30;\n  uint uVar31;\n  int iVar32;\n  int iVar33;\n  png_bytep unaff_s2;\n  png_structrp ppVar34;\n  png_imagep paVar35;\n  uint uVar36;\n  int iVar37;\n  png_infop ppVar38;\n  int iVar39;\n  int iVar40;\n  undefined *puVar41;\n  code *pcVar42;\n  code *pcVar43;\n  uint uVar44;\n  int iStackY_164;\n  int iStackY_15c;\n  uint uStackY_154;\n  int iStackY_100;\n  int iStackY_f8;\n  uint uStackY_f4;\n  uint uStackY_ec;\n  uint uStackY_e8;\n  uint uStack_80;\n  ushort uStack_7c;\n  ushort uStack_7a;\n  ushort uStack_78;\n  int iStack_74;\n  png_structrp ppStack_70;\n  undefined *puStack_6c;\n  png_bytep ppStack_68;\n  png_bytep ppStack_64;\n  png_row_info row_info;\n  \n  puVar3 = PTR___stack_chk_guard_000534bc;\n  iVar4 = *(int *)PTR___stack_chk_guard_000534bc;\n  if (png_ptr != (png_structrp)0x0) {\n    ppVar34 = png_ptr;\n    if ((png_ptr->flags & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    uVar11._0_1_ = png_ptr->pixel_depth;\n    uVar11._1_1_ = png_ptr->channels;\n    bVar13 = png_ptr->pixel_depth;\n    row_info.width = png_ptr->iwidth;\n    row_info.color_type = png_ptr->color_type;\n    row_info._10_2_ = (ushort)((uVar11 & 0xff) << 8) | uVar11 >> 8;\n    row_info.bit_depth = png_ptr->bit_depth;\n    if (bVar13 < 8) {\n      row_info.rowbytes = bVar13 * row_info.width + 7 >> 3;\n    }\n    else {\n      row_info.rowbytes = (bVar13 >> 3) * row_info.width;\n    }\n    unaff_s0 = png_ptr;\n    unaff_s2 = dsp_row;\n    if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) != 0)) {\n      if (png_ptr->pass < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)))();\n        return;\n      }\n      if ((png_ptr->row_number & 1) == 0) {\n        png_read_finish_row(png_ptr);\n        goto LAB_000212f4;\n      }\n    }\n    if ((png_ptr->mode & 4) == 0) goto LAB_000215cc;\n    *png_ptr->row_buf = 0xff;\n    png_read_IDAT_data(png_ptr,png_ptr->row_buf,row_info.rowbytes + 1);\n    pbVar8 = png_ptr->row_buf;\n    uVar44 = (uint)*pbVar8;\n    if (uVar44 != 0) {\n      if (4 < uVar44) goto LAB_000215e0;\n      png_read_filter_row(png_ptr,&row_info,pbVar8 + 1,png_ptr->prev_row + 1,uVar44);\n      pbVar8 = png_ptr->row_buf;\n    }\n    (*(code *)PTR_memcpy_000534c4)(png_ptr->prev_row,pbVar8,row_info.rowbytes + 1);\n    if ((((png_ptr->mng_features_permitted & 4) == 0) || (png_ptr->filter_type != '@')) ||\n       ((row_info.color_type & 2) == 0)) {\nLAB_00021248:\n      pVar6 = png_ptr->transformations;\n    }\n    else {\n      puVar20 = (ushort *)(png_ptr->row_buf + 1);\n      if (row_info.bit_depth != '\b') {\n        if (row_info.bit_depth == '\x10') {\n          if (row_info.color_type == '\x02') {\n            iVar32 = 6;\n          }\n          else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }\n          pVar6 = 0;\n          if (row_info.width != 0) {\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (row_info.color_type == '\x02') {\n        iVar32 = 3;\n      }\n      else {\n        iVar32 = 4;\n        if (row_info.color_type != '\x06') goto LAB_00021248;\n      }\n      pVar6 = 0;\n      if (row_info.width == 0) goto LAB_00021248;\n      do {\n        uVar11 = *puVar20;\n        pVar6 = pVar6 + 1;\n        *(char *)puVar20 = (char)uVar11 + *(char *)puVar20;\n        *(char *)(puVar20 + 1) = (char)uVar11 + *(char *)(puVar20 + 1);\n        puVar20 = (ushort *)((int)puVar20 + iVar32);\n      } while (row_info.width != pVar6);\n      pVar6 = png_ptr->transformations;\n    }\nLAB_0002124c:\n    if (pVar6 != 0) {\n      png_do_read_transformations(png_ptr,&row_info);\n    }\n    if (png_ptr->transformed_pixel_depth != '\0') {\n      if (png_ptr->transformed_pixel_depth == row_info.pixel_depth) goto LAB_00021274;\n      ppVar34 = png_ptr;\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      png_read_start_row(ppVar34);\n      goto LAB_00021100;\n    }\n    png_ptr->transformed_pixel_depth = row_info.pixel_depth;\n    puVar18 = PTR_s_nt_0005301c;\n    if (png_ptr->maximum_pixel_depth < row_info.pixel_depth) goto LAB_000215f4;\nLAB_00021274:\n    if ((png_ptr->interlaced == '\0') || ((png_ptr->transformations & 2) == 0)) {\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,-1);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,-1);\n      }\n    }\n    else {\n      if (png_ptr->pass < 6) {\n        png_do_read_interlace\n                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,1);\n      }\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,0);\n      }\n    }\n    png_read_finish_row(png_ptr);\n    if (png_ptr->read_row_fn != (png_read_status_ptr)0x0) {\n      (*png_ptr->read_row_fn)(png_ptr,png_ptr->row_number,(int)png_ptr->pass);\n    }\n  }\nLAB_000212f4:\n  if (iVar4 == *(int *)puVar3) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\n  png_ptr = unaff_s0;\n  dsp_row = unaff_s2;\nLAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3fc);\nLAB_000215e0:\n  puVar18 = PTR_s_nt_0005301c + -0x9d4;\n  (*(code *)PTR_png_error_0005340c)(png_ptr,puVar18);\nLAB_000215f4:\n  ppVar34 = png_ptr;\n  puVar41 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(png_ptr,puVar18 + -0x3d8);\n  piVar5 = *(int **)(puVar41 + 0x31eb8);\n  paVar35 = (png_imagep)ppVar34->jmp_buf_local[0].__jmpbuf[0].__pc;\n  iStack_74 = *piVar5;\n  puStack_6c = puVar3;\n  uVar31 = paVar35->format;\n  uVar15 = uVar31 & 4;\n  png_ptr_00 = paVar35->opaque->png_ptr;\n  ppVar38 = paVar35->opaque->info_ptr;\n  ppStack_70 = png_ptr;\n  ppStack_68 = dsp_row;\n  ppStack_64 = row;\n  (**(code **)(puVar41 + 0x31d60))(png_ptr_00);\n  pVar6 = png_image_format(png_ptr_00);\n  uVar44 = pVar6 & 0xfffffff7 ^ uVar31;\n  if ((uVar44 & 2) == 0) {\n    uVar36 = 0;\n    if ((pVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar42 = *(code **)(puVar41 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar41 + 0x31dac))(png_ptr_00,1,0xffffffff,0xffffffff);\n      uVar36 = pVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar41 + 0x31d00))(png_ptr_00);\n    }\n    uVar44 = uVar44 & 0xfffffffd;\n    if ((pVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar42 = *(code **)(puVar41 + 0x31d88);\n    if ((paVar35->flags & 4) == 0) {\n      (*pcVar42)(png_ptr_00,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }\n  (*pcVar42)(png_ptr_00,0,0xffffffff);\njoined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar27 = 0;\n    iVar4 = -1;\n  }\n  else {\n    uVar27 = pVar6 & 1;\n    iVar4 = 100000;\n  }\n  if ((uVar44 & 0x40) != 0) {\n    uVar27 = 2;\n    uVar44 = uVar44 & 0xffffffbf;\n  }\n  if (uVar36 != 0) goto LAB_00021afc;\n  do {\n    uVar7 = uVar44 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar41 + 0x31cc8))(png_ptr_00);\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cf8))(png_ptr_00);\n      }\n      uVar44 = uVar44 & 0xfffffffb;\n    }\n    if ((uVar44 & 1) == 0) {\n      pVar6 = 0;\n    }\n    else {\n      uVar19 = 0xffff;\n      if ((pVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar19 = 0xff;\n        }\n        if (bVar1) {\n          uVar44 = uVar44 & 0xffffffdf;\n        }\n        pVar6 = 0;\n        (**(code **)(puVar41 + 0x31d8c))(png_ptr_00,uVar19,!bVar1);\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }\n        else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        pVar6 = 0;\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar41 + 0x31d88))(png_ptr_00,uVar27,iVar4);\n    if ((uVar44 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar44 = uVar44 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cec))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffef;\n      }\n    }\n    if ((uVar44 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31f04))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n    }\n    if (uVar44 != 0) {\n      (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    png_image_skip_unused_chunks(png_ptr_00);\n    if ((pVar6 == 0) && (uVar36 != 2)) {\n      iVar4 = (**(code **)(puVar41 + 0x31e24))(png_ptr_00);\n    }\n    else {\n      iVar4 = 0;\n    }\n    (**(code **)(puVar41 + 0x31f14))(png_ptr_00,ppVar38);\n    uVar44 = ppVar38->color_type & 2;\n    if ((ppVar38->color_type & 4) == 0) {\n      if (pVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (pVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar44 = uVar44 | 1;\n        }\n      }\n      else {\n        uVar44 = uVar44 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar44 = uVar44 | 0x40;\n    }\n    if (ppVar38->bit_depth == '\x10') {\n      uVar44 = uVar44 | 4;\n    }\n    uVar7 = png_ptr_00->transformations;\n    if ((uVar7 & 1) != 0) {\n      uVar44 = uVar44 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar44 = uVar44 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar44) goto LAB_00021d04;\n      pvVar9 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__sp;\n      iVar32 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      if (uVar15 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        pvVar9 = (void *)((int)pvVar9 - iVar32 * (paVar35->height - 1));\n      }\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4] = (int)pvVar9;\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[5] = iVar32;\n      if (pVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x1d18);\n      }\n      else {\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484);\n      }\n      png_safe_execute(paVar35,function,ppVar34);\n      pcVar42 = *(code **)(puVar41 + 0x31d20);\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = 0;\n      (*pcVar42)(png_ptr_00,iVar4);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar44 = uVar44 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((png_ptr_00->flags & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar32 = png_muldiv((png_fixed_point_p)&uStack_80,iVar4,(png_ptr_00->colorspace).gamma,100000);\n    if ((iVar32 == 0) || (iVar32 = png_gamma_significant(uStack_80), iVar32 != 0)) {\n      uVar7 = uVar44 & 4;\n      if (uVar27 == 1) {\n        uVar27 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );\n  while (iVar4 = iVar4 + -1, -1 < iVar4) {\n    iVar39 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n    for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n      (**(code **)(puVar41 + 0x31da0))(png_ptr_00,iVar39,0);\n      iVar39 = iVar39 + iVar32;\n    }\n  }\nLAB_000219e8:\n  if (iStack_74 == *piVar5) {\n    return;\n  }\nLAB_00021ce8:\n  (**(code **)(puVar41 + 0x31e80))();\nLAB_00021cf4:\n  (**(code **)(puVar41 + 0x31e08))();\nLAB_00021d04:\n  pcVar42 = *(code **)(puVar41 + 0x31e08);\n  (*pcVar42)(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x318);\n  piVar5 = (int *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__pc;\n  iVar4 = piVar5[2];\n  puVar29 = *(undefined4 **)*piVar5;\n  iVar32 = ((undefined4 *)*piVar5)[1];\n  uVar44 = piVar5[3];\n  if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar39 = *(int *)(pcVar42 + 0x31304) + -0x290;\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar39 = (**(code **)(pcVar42 + 0x316b4))(puVar29,iVar32);\n    if (iVar39 != 2) goto LAB_00022470;\n    uVar15 = piVar5[4];\n    iVar39 = *(int *)(pcVar42 + 0x31304);\n    if ((uVar15 & 5) != 1) {\n      uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar31 == 0) {\n        uStackY_e8 = 1;\nLAB_00021dd0:\n        cVar14 = *(char *)(iVar32 + 0x18);\n        if (cVar14 == '\b') {\n          iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];\n          iVar26 = *(int *)(pcVar42 + 0x31454);\n          iVar22 = *(int *)(pcVar42 + 0x31458);\n          uStackY_ec = 1;\n          uVar15 = 0;\n          if (uVar31 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar31 = 0;\n          uVar36 = 0;\n          iStackY_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          } while( true );\n        }\n        if (cVar14 == '\x10') {\n          iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = (uVar15 & 1) + 1;\n          uVar27 = uVar15 & 0x21 ^ 0x21;\n          iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;\n          uStackY_f4 = 1;\n          uVar36 = 0;\n          if (uVar31 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);\n          if (uVar36 < 2) {\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }\n          else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }\n          if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      uStackY_e8 = 7;\n      if (uVar31 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }\n  (**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39 + -0x2b0);\nLAB_00022470:\n  pcVar43 = *(code **)(pcVar42 + 0x316f4);\n  (*pcVar43)(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2c8);\n  puVar16 = (undefined4 *)*puVar29;\n  arg = *(undefined4 **)*puVar16;\n  cVar14 = *(char *)(arg + 0x7f);\n  if (cVar14 == '\0') {\n    uStackY_154 = 1;\n  }\n  else {\n    uStackY_154 = 7;\n    if (cVar14 != '\x01') {\n      pcVar42 = *(code **)(pcVar43 + 0x30f88);\n      (*pcVar42)(arg,*(int *)(pcVar43 + 0x30b98) + -0x290);\n      paVar35 = (png_imagep)*arg;\n      ppVar34 = paVar35->opaque->png_ptr;\n      ppVar38 = paVar35->opaque->info_ptr;\n      png_image_skip_unused_chunks(ppVar34);\n      if (arg[10] == 0) {\n        iVar4 = (**(code **)(pcVar42 + 0x30c58))(ppVar34);\n      }\n      else {\n        iVar4 = 0;\n      }\n      (**(code **)(pcVar42 + 0x30d48))(ppVar34,ppVar38);\n      if ((uint)arg[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))();\n        return;\n      }\n      iVar32 = *(int *)(pcVar42 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260);\n        if (ppVar38->color_type != '\x03') {\n          iVar32 = *(int *)(pcVar42 + 0x3084c);\n          if (ppVar38->color_type != '\0') goto LAB_00022980;\n        }\n        iVar32 = *(int *)(pcVar42 + 0x3084c);\n        if (ppVar38->bit_depth == '\b') {\n          iVar39 = arg[2];\n          iVar32 = arg[1];\n          if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }\n          arg[6] = iVar32;\n          arg[7] = iVar39;\n          if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }\n          while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }\n          return;\n        }\n      } while( true );\n    }\n  }\n  uVar44 = puVar16[3];\n  iVar32 = puVar16[2];\n  iVar4 = puVar29[7];\n  if ((puVar16[4] & 2) == 0) {\n    iVar39 = 1;\n    iStackY_15c = iVar32;\n  }\n  else {\n    iVar39 = 3;\n    iStackY_15c = iVar32 * 3;\n  }\n  iVar26 = *(int *)(pcVar43 + 0x30ce4);\n  iVar22 = *(int *)(pcVar43 + 0x30ce8);\n  uVar15 = 0;\n  do {\n    uVar31 = uVar15 + 1;\n    if (cVar14 == '\x01') {\n      uVar36 = (uVar15 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f);\n      if (uVar15 < 2) {\n        uVar27 = ~uVar36 & 7;\n        uVar7 = 3;\n      }\n      else {\n        uVar7 = (int)(8 - uVar31) >> 1;\n        uVar27 = ((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7);\n      }\n      if (uVar27 + iVar32 >> (uVar7 & 0x1f) != 0) {\n        iStackY_164 = (uVar36 & 7) * iVar39;\n        iVar10 = iVar39 << ((int)(8 - uVar31) >> 1 & 0x1fU);\n        uVar36 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n        if (uVar15 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar36 = 0;\n      iStackY_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar39;\nLAB_000225b8:\n      if (uVar36 < uVar44) {\n        iVar30 = uVar36 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);\n          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);\n          if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }\nLAB_000226d4:\n          uVar36 = uVar36 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar36 < uVar44);\n      }\n    }\n    if (uStackY_154 == uVar31) {\n      return;\n    }\n    cVar14 = *(char *)(arg + 0x7f);\n    uVar15 = uVar31;\n  } while( true );\n}" primitive_type (function_declarator "png_read_row(png_structrp png_ptr,png_bytep row,png_bytep dsp_row)" identifier (parameter_list "(png_structrp png_ptr,png_bytep row,png_bytep dsp_row)" ( (parameter_declaration "png_structrp png_ptr" type_identifier identifier) , (parameter_declaration "png_bytep row" type_identifier identifier) , (parameter_declaration "png_bytep dsp_row" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  int iVar4;\n  int *piVar5;\n  png_uint_32 pVar6;\n  uint uVar7;\n  byte *pbVar8;\n  void *pvVar9;\n  int iVar10;\n  ushort uVar11;\n  byte bVar12;\n  byte bVar13;\n  undefined4 *arg;\n  char cVar14;\n  uint uVar15;\n  undefined4 *puVar16;\n  byte *pbVar17;\n  undefined *puVar18;\n  undefined4 uVar19;\n  _func_int_png_voidp *function;\n  ushort *puVar20;\n  byte *pbVar21;\n  int iVar22;\n  uint uVar23;\n  ushort *puVar24;\n  byte *pbVar25;\n  int iVar26;\n  uint uVar27;\n  byte *pbVar28;\n  png_structrp unaff_s0;\n  png_structrp png_ptr_00;\n  undefined4 *puVar29;\n  int iVar30;\n  uint uVar31;\n  int iVar32;\n  int iVar33;\n  png_bytep unaff_s2;\n  png_structrp ppVar34;\n  png_imagep paVar35;\n  uint uVar36;\n  int iVar37;\n  png_infop ppVar38;\n  int iVar39;\n  int iVar40;\n  undefined *puVar41;\n  code *pcVar42;\n  code *pcVar43;\n  uint uVar44;\n  int iStackY_164;\n  int iStackY_15c;\n  uint uStackY_154;\n  int iStackY_100;\n  int iStackY_f8;\n  uint uStackY_f4;\n  uint uStackY_ec;\n  uint uStackY_e8;\n  uint uStack_80;\n  ushort uStack_7c;\n  ushort uStack_7a;\n  ushort uStack_78;\n  int iStack_74;\n  png_structrp ppStack_70;\n  undefined *puStack_6c;\n  png_bytep ppStack_68;\n  png_bytep ppStack_64;\n  png_row_info row_info;\n  \n  puVar3 = PTR___stack_chk_guard_000534bc;\n  iVar4 = *(int *)PTR___stack_chk_guard_000534bc;\n  if (png_ptr != (png_structrp)0x0) {\n    ppVar34 = png_ptr;\n    if ((png_ptr->flags & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    uVar11._0_1_ = png_ptr->pixel_depth;\n    uVar11._1_1_ = png_ptr->channels;\n    bVar13 = png_ptr->pixel_depth;\n    row_info.width = png_ptr->iwidth;\n    row_info.color_type = png_ptr->color_type;\n    row_info._10_2_ = (ushort)((uVar11 & 0xff) << 8) | uVar11 >> 8;\n    row_info.bit_depth = png_ptr->bit_depth;\n    if (bVar13 < 8) {\n      row_info.rowbytes = bVar13 * row_info.width + 7 >> 3;\n    }\n    else {\n      row_info.rowbytes = (bVar13 >> 3) * row_info.width;\n    }\n    unaff_s0 = png_ptr;\n    unaff_s2 = dsp_row;\n    if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) != 0)) {\n      if (png_ptr->pass < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)))();\n        return;\n      }\n      if ((png_ptr->row_number & 1) == 0) {\n        png_read_finish_row(png_ptr);\n        goto LAB_000212f4;\n      }\n    }\n    if ((png_ptr->mode & 4) == 0) goto LAB_000215cc;\n    *png_ptr->row_buf = 0xff;\n    png_read_IDAT_data(png_ptr,png_ptr->row_buf,row_info.rowbytes + 1);\n    pbVar8 = png_ptr->row_buf;\n    uVar44 = (uint)*pbVar8;\n    if (uVar44 != 0) {\n      if (4 < uVar44) goto LAB_000215e0;\n      png_read_filter_row(png_ptr,&row_info,pbVar8 + 1,png_ptr->prev_row + 1,uVar44);\n      pbVar8 = png_ptr->row_buf;\n    }\n    (*(code *)PTR_memcpy_000534c4)(png_ptr->prev_row,pbVar8,row_info.rowbytes + 1);\n    if ((((png_ptr->mng_features_permitted & 4) == 0) || (png_ptr->filter_type != '@')) ||\n       ((row_info.color_type & 2) == 0)) {\nLAB_00021248:\n      pVar6 = png_ptr->transformations;\n    }\n    else {\n      puVar20 = (ushort *)(png_ptr->row_buf + 1);\n      if (row_info.bit_depth != '\b') {\n        if (row_info.bit_depth == '\x10') {\n          if (row_info.color_type == '\x02') {\n            iVar32 = 6;\n          }\n          else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }\n          pVar6 = 0;\n          if (row_info.width != 0) {\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (row_info.color_type == '\x02') {\n        iVar32 = 3;\n      }\n      else {\n        iVar32 = 4;\n        if (row_info.color_type != '\x06') goto LAB_00021248;\n      }\n      pVar6 = 0;\n      if (row_info.width == 0) goto LAB_00021248;\n      do {\n        uVar11 = *puVar20;\n        pVar6 = pVar6 + 1;\n        *(char *)puVar20 = (char)uVar11 + *(char *)puVar20;\n        *(char *)(puVar20 + 1) = (char)uVar11 + *(char *)(puVar20 + 1);\n        puVar20 = (ushort *)((int)puVar20 + iVar32);\n      } while (row_info.width != pVar6);\n      pVar6 = png_ptr->transformations;\n    }\nLAB_0002124c:\n    if (pVar6 != 0) {\n      png_do_read_transformations(png_ptr,&row_info);\n    }\n    if (png_ptr->transformed_pixel_depth != '\0') {\n      if (png_ptr->transformed_pixel_depth == row_info.pixel_depth) goto LAB_00021274;\n      ppVar34 = png_ptr;\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      png_read_start_row(ppVar34);\n      goto LAB_00021100;\n    }\n    png_ptr->transformed_pixel_depth = row_info.pixel_depth;\n    puVar18 = PTR_s_nt_0005301c;\n    if (png_ptr->maximum_pixel_depth < row_info.pixel_depth) goto LAB_000215f4;\nLAB_00021274:\n    if ((png_ptr->interlaced == '\0') || ((png_ptr->transformations & 2) == 0)) {\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,-1);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,-1);\n      }\n    }\n    else {\n      if (png_ptr->pass < 6) {\n        png_do_read_interlace\n                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,1);\n      }\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,0);\n      }\n    }\n    png_read_finish_row(png_ptr);\n    if (png_ptr->read_row_fn != (png_read_status_ptr)0x0) {\n      (*png_ptr->read_row_fn)(png_ptr,png_ptr->row_number,(int)png_ptr->pass);\n    }\n  }\nLAB_000212f4:\n  if (iVar4 == *(int *)puVar3) {\n    return;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\n  png_ptr = unaff_s0;\n  dsp_row = unaff_s2;\nLAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3fc);\nLAB_000215e0:\n  puVar18 = PTR_s_nt_0005301c + -0x9d4;\n  (*(code *)PTR_png_error_0005340c)(png_ptr,puVar18);\nLAB_000215f4:\n  ppVar34 = png_ptr;\n  puVar41 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(png_ptr,puVar18 + -0x3d8);\n  piVar5 = *(int **)(puVar41 + 0x31eb8);\n  paVar35 = (png_imagep)ppVar34->jmp_buf_local[0].__jmpbuf[0].__pc;\n  iStack_74 = *piVar5;\n  puStack_6c = puVar3;\n  uVar31 = paVar35->format;\n  uVar15 = uVar31 & 4;\n  png_ptr_00 = paVar35->opaque->png_ptr;\n  ppVar38 = paVar35->opaque->info_ptr;\n  ppStack_70 = png_ptr;\n  ppStack_68 = dsp_row;\n  ppStack_64 = row;\n  (**(code **)(puVar41 + 0x31d60))(png_ptr_00);\n  pVar6 = png_image_format(png_ptr_00);\n  uVar44 = pVar6 & 0xfffffff7 ^ uVar31;\n  if ((uVar44 & 2) == 0) {\n    uVar36 = 0;\n    if ((pVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar42 = *(code **)(puVar41 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar41 + 0x31dac))(png_ptr_00,1,0xffffffff,0xffffffff);\n      uVar36 = pVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar41 + 0x31d00))(png_ptr_00);\n    }\n    uVar44 = uVar44 & 0xfffffffd;\n    if ((pVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar42 = *(code **)(puVar41 + 0x31d88);\n    if ((paVar35->flags & 4) == 0) {\n      (*pcVar42)(png_ptr_00,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }\n  (*pcVar42)(png_ptr_00,0,0xffffffff);\njoined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar27 = 0;\n    iVar4 = -1;\n  }\n  else {\n    uVar27 = pVar6 & 1;\n    iVar4 = 100000;\n  }\n  if ((uVar44 & 0x40) != 0) {\n    uVar27 = 2;\n    uVar44 = uVar44 & 0xffffffbf;\n  }\n  if (uVar36 != 0) goto LAB_00021afc;\n  do {\n    uVar7 = uVar44 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar41 + 0x31cc8))(png_ptr_00);\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cf8))(png_ptr_00);\n      }\n      uVar44 = uVar44 & 0xfffffffb;\n    }\n    if ((uVar44 & 1) == 0) {\n      pVar6 = 0;\n    }\n    else {\n      uVar19 = 0xffff;\n      if ((pVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar19 = 0xff;\n        }\n        if (bVar1) {\n          uVar44 = uVar44 & 0xffffffdf;\n        }\n        pVar6 = 0;\n        (**(code **)(puVar41 + 0x31d8c))(png_ptr_00,uVar19,!bVar1);\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }\n        else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        pVar6 = 0;\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar41 + 0x31d88))(png_ptr_00,uVar27,iVar4);\n    if ((uVar44 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar44 = uVar44 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cec))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffef;\n      }\n    }\n    if ((uVar44 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31f04))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n    }\n    if (uVar44 != 0) {\n      (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    png_image_skip_unused_chunks(png_ptr_00);\n    if ((pVar6 == 0) && (uVar36 != 2)) {\n      iVar4 = (**(code **)(puVar41 + 0x31e24))(png_ptr_00);\n    }\n    else {\n      iVar4 = 0;\n    }\n    (**(code **)(puVar41 + 0x31f14))(png_ptr_00,ppVar38);\n    uVar44 = ppVar38->color_type & 2;\n    if ((ppVar38->color_type & 4) == 0) {\n      if (pVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (pVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar44 = uVar44 | 1;\n        }\n      }\n      else {\n        uVar44 = uVar44 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar44 = uVar44 | 0x40;\n    }\n    if (ppVar38->bit_depth == '\x10') {\n      uVar44 = uVar44 | 4;\n    }\n    uVar7 = png_ptr_00->transformations;\n    if ((uVar7 & 1) != 0) {\n      uVar44 = uVar44 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar44 = uVar44 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar44) goto LAB_00021d04;\n      pvVar9 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__sp;\n      iVar32 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      if (uVar15 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        pvVar9 = (void *)((int)pvVar9 - iVar32 * (paVar35->height - 1));\n      }\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4] = (int)pvVar9;\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[5] = iVar32;\n      if (pVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x1d18);\n      }\n      else {\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484);\n      }\n      png_safe_execute(paVar35,function,ppVar34);\n      pcVar42 = *(code **)(puVar41 + 0x31d20);\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = 0;\n      (*pcVar42)(png_ptr_00,iVar4);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar44 = uVar44 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((png_ptr_00->flags & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar32 = png_muldiv((png_fixed_point_p)&uStack_80,iVar4,(png_ptr_00->colorspace).gamma,100000);\n    if ((iVar32 == 0) || (iVar32 = png_gamma_significant(uStack_80), iVar32 != 0)) {\n      uVar7 = uVar44 & 4;\n      if (uVar27 == 1) {\n        uVar27 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );\n  while (iVar4 = iVar4 + -1, -1 < iVar4) {\n    iVar39 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n    for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n      (**(code **)(puVar41 + 0x31da0))(png_ptr_00,iVar39,0);\n      iVar39 = iVar39 + iVar32;\n    }\n  }\nLAB_000219e8:\n  if (iStack_74 == *piVar5) {\n    return;\n  }\nLAB_00021ce8:\n  (**(code **)(puVar41 + 0x31e80))();\nLAB_00021cf4:\n  (**(code **)(puVar41 + 0x31e08))();\nLAB_00021d04:\n  pcVar42 = *(code **)(puVar41 + 0x31e08);\n  (*pcVar42)(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x318);\n  piVar5 = (int *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__pc;\n  iVar4 = piVar5[2];\n  puVar29 = *(undefined4 **)*piVar5;\n  iVar32 = ((undefined4 *)*piVar5)[1];\n  uVar44 = piVar5[3];\n  if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar39 = *(int *)(pcVar42 + 0x31304) + -0x290;\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar39 = (**(code **)(pcVar42 + 0x316b4))(puVar29,iVar32);\n    if (iVar39 != 2) goto LAB_00022470;\n    uVar15 = piVar5[4];\n    iVar39 = *(int *)(pcVar42 + 0x31304);\n    if ((uVar15 & 5) != 1) {\n      uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar31 == 0) {\n        uStackY_e8 = 1;\nLAB_00021dd0:\n        cVar14 = *(char *)(iVar32 + 0x18);\n        if (cVar14 == '\b') {\n          iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];\n          iVar26 = *(int *)(pcVar42 + 0x31454);\n          iVar22 = *(int *)(pcVar42 + 0x31458);\n          uStackY_ec = 1;\n          uVar15 = 0;\n          if (uVar31 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar31 = 0;\n          uVar36 = 0;\n          iStackY_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          } while( true );\n        }\n        if (cVar14 == '\x10') {\n          iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = (uVar15 & 1) + 1;\n          uVar27 = uVar15 & 0x21 ^ 0x21;\n          iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;\n          uStackY_f4 = 1;\n          uVar36 = 0;\n          if (uVar31 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);\n          if (uVar36 < 2) {\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }\n          else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }\n          if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      uStackY_e8 = 7;\n      if (uVar31 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }\n  (**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39 + -0x2b0);\nLAB_00022470:\n  pcVar43 = *(code **)(pcVar42 + 0x316f4);\n  (*pcVar43)(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2c8);\n  puVar16 = (undefined4 *)*puVar29;\n  arg = *(undefined4 **)*puVar16;\n  cVar14 = *(char *)(arg + 0x7f);\n  if (cVar14 == '\0') {\n    uStackY_154 = 1;\n  }\n  else {\n    uStackY_154 = 7;\n    if (cVar14 != '\x01') {\n      pcVar42 = *(code **)(pcVar43 + 0x30f88);\n      (*pcVar42)(arg,*(int *)(pcVar43 + 0x30b98) + -0x290);\n      paVar35 = (png_imagep)*arg;\n      ppVar34 = paVar35->opaque->png_ptr;\n      ppVar38 = paVar35->opaque->info_ptr;\n      png_image_skip_unused_chunks(ppVar34);\n      if (arg[10] == 0) {\n        iVar4 = (**(code **)(pcVar42 + 0x30c58))(ppVar34);\n      }\n      else {\n        iVar4 = 0;\n      }\n      (**(code **)(pcVar42 + 0x30d48))(ppVar34,ppVar38);\n      if ((uint)arg[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))();\n        return;\n      }\n      iVar32 = *(int *)(pcVar42 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260);\n        if (ppVar38->color_type != '\x03') {\n          iVar32 = *(int *)(pcVar42 + 0x3084c);\n          if (ppVar38->color_type != '\0') goto LAB_00022980;\n        }\n        iVar32 = *(int *)(pcVar42 + 0x3084c);\n        if (ppVar38->bit_depth == '\b') {\n          iVar39 = arg[2];\n          iVar32 = arg[1];\n          if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }\n          arg[6] = iVar32;\n          arg[7] = iVar39;\n          if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }\n          while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }\n          return;\n        }\n      } while( true );\n    }\n  }\n  uVar44 = puVar16[3];\n  iVar32 = puVar16[2];\n  iVar4 = puVar29[7];\n  if ((puVar16[4] & 2) == 0) {\n    iVar39 = 1;\n    iStackY_15c = iVar32;\n  }\n  else {\n    iVar39 = 3;\n    iStackY_15c = iVar32 * 3;\n  }\n  iVar26 = *(int *)(pcVar43 + 0x30ce4);\n  iVar22 = *(int *)(pcVar43 + 0x30ce8);\n  uVar15 = 0;\n  do {\n    uVar31 = uVar15 + 1;\n    if (cVar14 == '\x01') {\n      uVar36 = (uVar15 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f);\n      if (uVar15 < 2) {\n        uVar27 = ~uVar36 & 7;\n        uVar7 = 3;\n      }\n      else {\n        uVar7 = (int)(8 - uVar31) >> 1;\n        uVar27 = ((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7);\n      }\n      if (uVar27 + iVar32 >> (uVar7 & 0x1f) != 0) {\n        iStackY_164 = (uVar36 & 7) * iVar39;\n        iVar10 = iVar39 << ((int)(8 - uVar31) >> 1 & 0x1fU);\n        uVar36 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n        if (uVar15 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar36 = 0;\n      iStackY_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar39;\nLAB_000225b8:\n      if (uVar36 < uVar44) {\n        iVar30 = uVar36 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);\n          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);\n          if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }\nLAB_000226d4:\n          uVar36 = uVar36 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar36 < uVar44);\n      }\n    }\n    if (uStackY_154 == uVar31) {\n      return;\n    }\n    cVar14 = *(char *)(arg + 0x7f);\n    uVar15 = uVar31;\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "png_uint_32 pVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "void *pvVar9;" primitive_type (pointer_declarator "*pvVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "ushort uVar11;" type_identifier identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "undefined4 *arg;" type_identifier (pointer_declarator "*arg" * identifier) ;) (declaration "char cVar14;" primitive_type identifier ;) (declaration "uint uVar15;" type_identifier identifier ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "undefined *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "undefined4 uVar19;" type_identifier identifier ;) (declaration "_func_int_png_voidp *function;" type_identifier (pointer_declarator "*function" * identifier) ;) (declaration "ushort *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "byte *pbVar21;" type_identifier (pointer_declarator "*pbVar21" * identifier) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "ushort *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "byte *pbVar25;" type_identifier (pointer_declarator "*pbVar25" * identifier) ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "uint uVar27;" type_identifier identifier ;) (declaration "byte *pbVar28;" type_identifier (pointer_declarator "*pbVar28" * identifier) ;) (declaration "png_structrp unaff_s0;" type_identifier identifier ;) (declaration "png_structrp png_ptr_00;" type_identifier identifier ;) (declaration "undefined4 *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "png_bytep unaff_s2;" type_identifier identifier ;) (declaration "png_structrp ppVar34;" type_identifier identifier ;) (declaration "png_imagep paVar35;" type_identifier identifier ;) (declaration "uint uVar36;" type_identifier identifier ;) (declaration "int iVar37;" primitive_type identifier ;) (declaration "png_infop ppVar38;" type_identifier identifier ;) (declaration "int iVar39;" primitive_type identifier ;) (declaration "int iVar40;" primitive_type identifier ;) (declaration "undefined *puVar41;" type_identifier (pointer_declarator "*puVar41" * identifier) ;) (declaration "code *pcVar42;" type_identifier (pointer_declarator "*pcVar42" * identifier) ;) (declaration "code *pcVar43;" type_identifier (pointer_declarator "*pcVar43" * identifier) ;) (declaration "uint uVar44;" type_identifier identifier ;) (declaration "int iStackY_164;" primitive_type identifier ;) (declaration "int iStackY_15c;" primitive_type identifier ;) (declaration "uint uStackY_154;" type_identifier identifier ;) (declaration "int iStackY_100;" primitive_type identifier ;) (declaration "int iStackY_f8;" primitive_type identifier ;) (declaration "uint uStackY_f4;" type_identifier identifier ;) (declaration "uint uStackY_ec;" type_identifier identifier ;) (declaration "uint uStackY_e8;" type_identifier identifier ;) (declaration "uint uStack_80;" type_identifier identifier ;) (declaration "ushort uStack_7c;" type_identifier identifier ;) (declaration "ushort uStack_7a;" type_identifier identifier ;) (declaration "ushort uStack_78;" type_identifier identifier ;) (declaration "int iStack_74;" primitive_type identifier ;) (declaration "png_structrp ppStack_70;" type_identifier identifier ;) (declaration "undefined *puStack_6c;" type_identifier (pointer_declarator "*puStack_6c" * identifier) ;) (declaration "png_bytep ppStack_68;" type_identifier identifier ;) (declaration "png_bytep ppStack_64;" type_identifier identifier ;) (declaration "png_row_info row_info;" type_identifier identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_000534bc;" (assignment_expression "puVar3 = PTR___stack_chk_guard_000534bc" identifier = identifier) ;) (expression_statement "iVar4 = *(int *)PTR___stack_chk_guard_000534bc;" (assignment_expression "iVar4 = *(int *)PTR___stack_chk_guard_000534bc" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000534bc" * (cast_expression "(int *)PTR___stack_chk_guard_000534bc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (png_ptr != (png_structrp)0x0) {\n    ppVar34 = png_ptr;\n    if ((png_ptr->flags & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    uVar11._0_1_ = png_ptr->pixel_depth;\n    uVar11._1_1_ = png_ptr->channels;\n    bVar13 = png_ptr->pixel_depth;\n    row_info.width = png_ptr->iwidth;\n    row_info.color_type = png_ptr->color_type;\n    row_info._10_2_ = (ushort)((uVar11 & 0xff) << 8) | uVar11 >> 8;\n    row_info.bit_depth = png_ptr->bit_depth;\n    if (bVar13 < 8) {\n      row_info.rowbytes = bVar13 * row_info.width + 7 >> 3;\n    }\n    else {\n      row_info.rowbytes = (bVar13 >> 3) * row_info.width;\n    }\n    unaff_s0 = png_ptr;\n    unaff_s2 = dsp_row;\n    if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) != 0)) {\n      if (png_ptr->pass < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)))();\n        return;\n      }\n      if ((png_ptr->row_number & 1) == 0) {\n        png_read_finish_row(png_ptr);\n        goto LAB_000212f4;\n      }\n    }\n    if ((png_ptr->mode & 4) == 0) goto LAB_000215cc;\n    *png_ptr->row_buf = 0xff;\n    png_read_IDAT_data(png_ptr,png_ptr->row_buf,row_info.rowbytes + 1);\n    pbVar8 = png_ptr->row_buf;\n    uVar44 = (uint)*pbVar8;\n    if (uVar44 != 0) {\n      if (4 < uVar44) goto LAB_000215e0;\n      png_read_filter_row(png_ptr,&row_info,pbVar8 + 1,png_ptr->prev_row + 1,uVar44);\n      pbVar8 = png_ptr->row_buf;\n    }\n    (*(code *)PTR_memcpy_000534c4)(png_ptr->prev_row,pbVar8,row_info.rowbytes + 1);\n    if ((((png_ptr->mng_features_permitted & 4) == 0) || (png_ptr->filter_type != '@')) ||\n       ((row_info.color_type & 2) == 0)) {\nLAB_00021248:\n      pVar6 = png_ptr->transformations;\n    }\n    else {\n      puVar20 = (ushort *)(png_ptr->row_buf + 1);\n      if (row_info.bit_depth != '\b') {\n        if (row_info.bit_depth == '\x10') {\n          if (row_info.color_type == '\x02') {\n            iVar32 = 6;\n          }\n          else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }\n          pVar6 = 0;\n          if (row_info.width != 0) {\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (row_info.color_type == '\x02') {\n        iVar32 = 3;\n      }\n      else {\n        iVar32 = 4;\n        if (row_info.color_type != '\x06') goto LAB_00021248;\n      }\n      pVar6 = 0;\n      if (row_info.width == 0) goto LAB_00021248;\n      do {\n        uVar11 = *puVar20;\n        pVar6 = pVar6 + 1;\n        *(char *)puVar20 = (char)uVar11 + *(char *)puVar20;\n        *(char *)(puVar20 + 1) = (char)uVar11 + *(char *)(puVar20 + 1);\n        puVar20 = (ushort *)((int)puVar20 + iVar32);\n      } while (row_info.width != pVar6);\n      pVar6 = png_ptr->transformations;\n    }\nLAB_0002124c:\n    if (pVar6 != 0) {\n      png_do_read_transformations(png_ptr,&row_info);\n    }\n    if (png_ptr->transformed_pixel_depth != '\0') {\n      if (png_ptr->transformed_pixel_depth == row_info.pixel_depth) goto LAB_00021274;\n      ppVar34 = png_ptr;\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      png_read_start_row(ppVar34);\n      goto LAB_00021100;\n    }\n    png_ptr->transformed_pixel_depth = row_info.pixel_depth;\n    puVar18 = PTR_s_nt_0005301c;\n    if (png_ptr->maximum_pixel_depth < row_info.pixel_depth) goto LAB_000215f4;\nLAB_00021274:\n    if ((png_ptr->interlaced == '\0') || ((png_ptr->transformations & 2) == 0)) {\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,-1);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,-1);\n      }\n    }\n    else {\n      if (png_ptr->pass < 6) {\n        png_do_read_interlace\n                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,1);\n      }\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,0);\n      }\n    }\n    png_read_finish_row(png_ptr);\n    if (png_ptr->read_row_fn != (png_read_status_ptr)0x0) {\n      (*png_ptr->read_row_fn)(png_ptr,png_ptr->row_number,(int)png_ptr->pass);\n    }\n  }" if (parenthesized_expression "(png_ptr != (png_structrp)0x0)" ( (binary_expression "png_ptr != (png_structrp)0x0" identifier != (cast_expression "(png_structrp)0x0" ( (type_descriptor "png_structrp" type_identifier) ) number_literal)) )) (compound_statement "{\n    ppVar34 = png_ptr;\n    if ((png_ptr->flags & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    uVar11._0_1_ = png_ptr->pixel_depth;\n    uVar11._1_1_ = png_ptr->channels;\n    bVar13 = png_ptr->pixel_depth;\n    row_info.width = png_ptr->iwidth;\n    row_info.color_type = png_ptr->color_type;\n    row_info._10_2_ = (ushort)((uVar11 & 0xff) << 8) | uVar11 >> 8;\n    row_info.bit_depth = png_ptr->bit_depth;\n    if (bVar13 < 8) {\n      row_info.rowbytes = bVar13 * row_info.width + 7 >> 3;\n    }\n    else {\n      row_info.rowbytes = (bVar13 >> 3) * row_info.width;\n    }\n    unaff_s0 = png_ptr;\n    unaff_s2 = dsp_row;\n    if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) != 0)) {\n      if (png_ptr->pass < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)))();\n        return;\n      }\n      if ((png_ptr->row_number & 1) == 0) {\n        png_read_finish_row(png_ptr);\n        goto LAB_000212f4;\n      }\n    }\n    if ((png_ptr->mode & 4) == 0) goto LAB_000215cc;\n    *png_ptr->row_buf = 0xff;\n    png_read_IDAT_data(png_ptr,png_ptr->row_buf,row_info.rowbytes + 1);\n    pbVar8 = png_ptr->row_buf;\n    uVar44 = (uint)*pbVar8;\n    if (uVar44 != 0) {\n      if (4 < uVar44) goto LAB_000215e0;\n      png_read_filter_row(png_ptr,&row_info,pbVar8 + 1,png_ptr->prev_row + 1,uVar44);\n      pbVar8 = png_ptr->row_buf;\n    }\n    (*(code *)PTR_memcpy_000534c4)(png_ptr->prev_row,pbVar8,row_info.rowbytes + 1);\n    if ((((png_ptr->mng_features_permitted & 4) == 0) || (png_ptr->filter_type != '@')) ||\n       ((row_info.color_type & 2) == 0)) {\nLAB_00021248:\n      pVar6 = png_ptr->transformations;\n    }\n    else {\n      puVar20 = (ushort *)(png_ptr->row_buf + 1);\n      if (row_info.bit_depth != '\b') {\n        if (row_info.bit_depth == '\x10') {\n          if (row_info.color_type == '\x02') {\n            iVar32 = 6;\n          }\n          else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }\n          pVar6 = 0;\n          if (row_info.width != 0) {\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (row_info.color_type == '\x02') {\n        iVar32 = 3;\n      }\n      else {\n        iVar32 = 4;\n        if (row_info.color_type != '\x06') goto LAB_00021248;\n      }\n      pVar6 = 0;\n      if (row_info.width == 0) goto LAB_00021248;\n      do {\n        uVar11 = *puVar20;\n        pVar6 = pVar6 + 1;\n        *(char *)puVar20 = (char)uVar11 + *(char *)puVar20;\n        *(char *)(puVar20 + 1) = (char)uVar11 + *(char *)(puVar20 + 1);\n        puVar20 = (ushort *)((int)puVar20 + iVar32);\n      } while (row_info.width != pVar6);\n      pVar6 = png_ptr->transformations;\n    }\nLAB_0002124c:\n    if (pVar6 != 0) {\n      png_do_read_transformations(png_ptr,&row_info);\n    }\n    if (png_ptr->transformed_pixel_depth != '\0') {\n      if (png_ptr->transformed_pixel_depth == row_info.pixel_depth) goto LAB_00021274;\n      ppVar34 = png_ptr;\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      png_read_start_row(ppVar34);\n      goto LAB_00021100;\n    }\n    png_ptr->transformed_pixel_depth = row_info.pixel_depth;\n    puVar18 = PTR_s_nt_0005301c;\n    if (png_ptr->maximum_pixel_depth < row_info.pixel_depth) goto LAB_000215f4;\nLAB_00021274:\n    if ((png_ptr->interlaced == '\0') || ((png_ptr->transformations & 2) == 0)) {\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,-1);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,-1);\n      }\n    }\n    else {\n      if (png_ptr->pass < 6) {\n        png_do_read_interlace\n                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,1);\n      }\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,0);\n      }\n    }\n    png_read_finish_row(png_ptr);\n    if (png_ptr->read_row_fn != (png_read_status_ptr)0x0) {\n      (*png_ptr->read_row_fn)(png_ptr,png_ptr->row_number,(int)png_ptr->pass);\n    }\n  }" { (expression_statement "ppVar34 = png_ptr;" (assignment_expression "ppVar34 = png_ptr" identifier = identifier) ;) (if_statement "if ((png_ptr->flags & 0x40) == 0) goto LAB_00021340;" if (parenthesized_expression "((png_ptr->flags & 0x40) == 0)" ( (binary_expression "(png_ptr->flags & 0x40) == 0" (parenthesized_expression "(png_ptr->flags & 0x40)" ( (binary_expression "png_ptr->flags & 0x40" (field_expression "png_ptr->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00021340;" goto statement_identifier ;)) (labeled_statement "LAB_00021100:\n    uVar11._0_1_ = png_ptr->pixel_depth;" statement_identifier : (expression_statement "uVar11._0_1_ = png_ptr->pixel_depth;" (assignment_expression "uVar11._0_1_ = png_ptr->pixel_depth" (field_expression "uVar11._0_1_" identifier . field_identifier) = (field_expression "png_ptr->pixel_depth" identifier -> field_identifier)) ;)) (expression_statement "uVar11._1_1_ = png_ptr->channels;" (assignment_expression "uVar11._1_1_ = png_ptr->channels" (field_expression "uVar11._1_1_" identifier . field_identifier) = (field_expression "png_ptr->channels" identifier -> field_identifier)) ;) (expression_statement "bVar13 = png_ptr->pixel_depth;" (assignment_expression "bVar13 = png_ptr->pixel_depth" identifier = (field_expression "png_ptr->pixel_depth" identifier -> field_identifier)) ;) (expression_statement "row_info.width = png_ptr->iwidth;" (assignment_expression "row_info.width = png_ptr->iwidth" (field_expression "row_info.width" identifier . field_identifier) = (field_expression "png_ptr->iwidth" identifier -> field_identifier)) ;) (expression_statement "row_info.color_type = png_ptr->color_type;" (assignment_expression "row_info.color_type = png_ptr->color_type" (field_expression "row_info.color_type" identifier . field_identifier) = (field_expression "png_ptr->color_type" identifier -> field_identifier)) ;) (expression_statement "row_info._10_2_ = (ushort)((uVar11 & 0xff) << 8) | uVar11 >> 8;" (assignment_expression "row_info._10_2_ = (ushort)((uVar11 & 0xff) << 8) | uVar11 >> 8" (field_expression "row_info._10_2_" identifier . field_identifier) = (binary_expression "(ushort)((uVar11 & 0xff) << 8) | uVar11 >> 8" (call_expression "(ushort)((uVar11 & 0xff) << 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uVar11 & 0xff) << 8)" ( (binary_expression "(uVar11 & 0xff) << 8" (parenthesized_expression "(uVar11 & 0xff)" ( (binary_expression "uVar11 & 0xff" identifier & number_literal) )) << number_literal) ))) | (binary_expression "uVar11 >> 8" identifier >> number_literal))) ;) (expression_statement "row_info.bit_depth = png_ptr->bit_depth;" (assignment_expression "row_info.bit_depth = png_ptr->bit_depth" (field_expression "row_info.bit_depth" identifier . field_identifier) = (field_expression "png_ptr->bit_depth" identifier -> field_identifier)) ;) (if_statement "if (bVar13 < 8) {\n      row_info.rowbytes = bVar13 * row_info.width + 7 >> 3;\n    }\n    else {\n      row_info.rowbytes = (bVar13 >> 3) * row_info.width;\n    }" if (parenthesized_expression "(bVar13 < 8)" ( (binary_expression "bVar13 < 8" identifier < number_literal) )) (compound_statement "{\n      row_info.rowbytes = bVar13 * row_info.width + 7 >> 3;\n    }" { (expression_statement "row_info.rowbytes = bVar13 * row_info.width + 7 >> 3;" (assignment_expression "row_info.rowbytes = bVar13 * row_info.width + 7 >> 3" (field_expression "row_info.rowbytes" identifier . field_identifier) = (binary_expression "bVar13 * row_info.width + 7 >> 3" (binary_expression "bVar13 * row_info.width + 7" (binary_expression "bVar13 * row_info.width" identifier * (field_expression "row_info.width" identifier . field_identifier)) + number_literal) >> number_literal)) ;) }) (else_clause "else {\n      row_info.rowbytes = (bVar13 >> 3) * row_info.width;\n    }" else (compound_statement "{\n      row_info.rowbytes = (bVar13 >> 3) * row_info.width;\n    }" { (expression_statement "row_info.rowbytes = (bVar13 >> 3) * row_info.width;" (assignment_expression "row_info.rowbytes = (bVar13 >> 3) * row_info.width" (field_expression "row_info.rowbytes" identifier . field_identifier) = (binary_expression "(bVar13 >> 3) * row_info.width" (parenthesized_expression "(bVar13 >> 3)" ( (binary_expression "bVar13 >> 3" identifier >> number_literal) )) * (field_expression "row_info.width" identifier . field_identifier))) ;) }))) (expression_statement "unaff_s0 = png_ptr;" (assignment_expression "unaff_s0 = png_ptr" identifier = identifier) ;) (expression_statement "unaff_s2 = dsp_row;" (assignment_expression "unaff_s2 = dsp_row" identifier = identifier) ;) (if_statement "if ((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) != 0)) {\n      if (png_ptr->pass < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)))();\n        return;\n      }\n      if ((png_ptr->row_number & 1) == 0) {\n        png_read_finish_row(png_ptr);\n        goto LAB_000212f4;\n      }\n    }" if (parenthesized_expression "((png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) != 0))" ( (binary_expression "(png_ptr->interlaced != '\0') && ((png_ptr->transformations & 2) != 0)" (parenthesized_expression "(png_ptr->interlaced != '\0')" ( (binary_expression "png_ptr->interlaced != '\0'" (field_expression "png_ptr->interlaced" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((png_ptr->transformations & 2) != 0)" ( (binary_expression "(png_ptr->transformations & 2) != 0" (parenthesized_expression "(png_ptr->transformations & 2)" ( (binary_expression "png_ptr->transformations & 2" (field_expression "png_ptr->transformations" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      if (png_ptr->pass < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)))();\n        return;\n      }\n      if ((png_ptr->row_number & 1) == 0) {\n        png_read_finish_row(png_ptr);\n        goto LAB_000212f4;\n      }\n    }" { (if_statement "if (png_ptr->pass < 6) {\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)))();\n        return;\n      }" if (parenthesized_expression "(png_ptr->pass < 6)" ( (binary_expression "png_ptr->pass < 6" (field_expression "png_ptr->pass" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00021174 */\n                    /* WARNING: Treating indirect jump as call */\n        (*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)))();\n        return;\n      }" { comment comment (expression_statement "(*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)))();" (call_expression "(*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c))" * (cast_expression "(code *)(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c))" ( (binary_expression "&_gp + *(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)" * (cast_expression "(int *)(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c)" ( (binary_expression "PTR_s_nt_0005301c + (uint)png_ptr->pass * 4 + 0x14c" (binary_expression "PTR_s_nt_0005301c + (uint)png_ptr->pass * 4" identifier + (binary_expression "(uint)png_ptr->pass * 4" (cast_expression "(uint)png_ptr->pass" ( (type_descriptor "uint" type_identifier) ) (field_expression "png_ptr->pass" identifier -> field_identifier)) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (if_statement "if ((png_ptr->row_number & 1) == 0) {\n        png_read_finish_row(png_ptr);\n        goto LAB_000212f4;\n      }" if (parenthesized_expression "((png_ptr->row_number & 1) == 0)" ( (binary_expression "(png_ptr->row_number & 1) == 0" (parenthesized_expression "(png_ptr->row_number & 1)" ( (binary_expression "png_ptr->row_number & 1" (field_expression "png_ptr->row_number" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        png_read_finish_row(png_ptr);\n        goto LAB_000212f4;\n      }" { (expression_statement "png_read_finish_row(png_ptr);" (call_expression "png_read_finish_row(png_ptr)" identifier (argument_list "(png_ptr)" ( identifier ))) ;) (goto_statement "goto LAB_000212f4;" goto statement_identifier ;) })) })) (if_statement "if ((png_ptr->mode & 4) == 0) goto LAB_000215cc;" if (parenthesized_expression "((png_ptr->mode & 4) == 0)" ( (binary_expression "(png_ptr->mode & 4) == 0" (parenthesized_expression "(png_ptr->mode & 4)" ( (binary_expression "png_ptr->mode & 4" (field_expression "png_ptr->mode" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000215cc;" goto statement_identifier ;)) (expression_statement "*png_ptr->row_buf = 0xff;" (assignment_expression "*png_ptr->row_buf = 0xff" (pointer_expression "*png_ptr->row_buf" * (field_expression "png_ptr->row_buf" identifier -> field_identifier)) = number_literal) ;) (expression_statement "png_read_IDAT_data(png_ptr,png_ptr->row_buf,row_info.rowbytes + 1);" (call_expression "png_read_IDAT_data(png_ptr,png_ptr->row_buf,row_info.rowbytes + 1)" identifier (argument_list "(png_ptr,png_ptr->row_buf,row_info.rowbytes + 1)" ( identifier , (field_expression "png_ptr->row_buf" identifier -> field_identifier) , (binary_expression "row_info.rowbytes + 1" (field_expression "row_info.rowbytes" identifier . field_identifier) + number_literal) ))) ;) (expression_statement "pbVar8 = png_ptr->row_buf;" (assignment_expression "pbVar8 = png_ptr->row_buf" identifier = (field_expression "png_ptr->row_buf" identifier -> field_identifier)) ;) (expression_statement "uVar44 = (uint)*pbVar8;" (assignment_expression "uVar44 = (uint)*pbVar8" identifier = (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (if_statement "if (uVar44 != 0) {\n      if (4 < uVar44) goto LAB_000215e0;\n      png_read_filter_row(png_ptr,&row_info,pbVar8 + 1,png_ptr->prev_row + 1,uVar44);\n      pbVar8 = png_ptr->row_buf;\n    }" if (parenthesized_expression "(uVar44 != 0)" ( (binary_expression "uVar44 != 0" identifier != number_literal) )) (compound_statement "{\n      if (4 < uVar44) goto LAB_000215e0;\n      png_read_filter_row(png_ptr,&row_info,pbVar8 + 1,png_ptr->prev_row + 1,uVar44);\n      pbVar8 = png_ptr->row_buf;\n    }" { (if_statement "if (4 < uVar44) goto LAB_000215e0;" if (parenthesized_expression "(4 < uVar44)" ( (binary_expression "4 < uVar44" number_literal < identifier) )) (goto_statement "goto LAB_000215e0;" goto statement_identifier ;)) (expression_statement "png_read_filter_row(png_ptr,&row_info,pbVar8 + 1,png_ptr->prev_row + 1,uVar44);" (call_expression "png_read_filter_row(png_ptr,&row_info,pbVar8 + 1,png_ptr->prev_row + 1,uVar44)" identifier (argument_list "(png_ptr,&row_info,pbVar8 + 1,png_ptr->prev_row + 1,uVar44)" ( identifier , (pointer_expression "&row_info" & identifier) , (binary_expression "pbVar8 + 1" identifier + number_literal) , (binary_expression "png_ptr->prev_row + 1" (field_expression "png_ptr->prev_row" identifier -> field_identifier) + number_literal) , identifier ))) ;) (expression_statement "pbVar8 = png_ptr->row_buf;" (assignment_expression "pbVar8 = png_ptr->row_buf" identifier = (field_expression "png_ptr->row_buf" identifier -> field_identifier)) ;) })) (expression_statement "(*(code *)PTR_memcpy_000534c4)(png_ptr->prev_row,pbVar8,row_info.rowbytes + 1);" (call_expression "(*(code *)PTR_memcpy_000534c4)(png_ptr->prev_row,pbVar8,row_info.rowbytes + 1)" (parenthesized_expression "(*(code *)PTR_memcpy_000534c4)" ( (pointer_expression "*(code *)PTR_memcpy_000534c4" * (cast_expression "(code *)PTR_memcpy_000534c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr->prev_row,pbVar8,row_info.rowbytes + 1)" ( (field_expression "png_ptr->prev_row" identifier -> field_identifier) , identifier , (binary_expression "row_info.rowbytes + 1" (field_expression "row_info.rowbytes" identifier . field_identifier) + number_literal) ))) ;) (if_statement "if ((((png_ptr->mng_features_permitted & 4) == 0) || (png_ptr->filter_type != '@')) ||\n       ((row_info.color_type & 2) == 0)) {\nLAB_00021248:\n      pVar6 = png_ptr->transformations;\n    }\n    else {\n      puVar20 = (ushort *)(png_ptr->row_buf + 1);\n      if (row_info.bit_depth != '\b') {\n        if (row_info.bit_depth == '\x10') {\n          if (row_info.color_type == '\x02') {\n            iVar32 = 6;\n          }\n          else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }\n          pVar6 = 0;\n          if (row_info.width != 0) {\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (row_info.color_type == '\x02') {\n        iVar32 = 3;\n      }\n      else {\n        iVar32 = 4;\n        if (row_info.color_type != '\x06') goto LAB_00021248;\n      }\n      pVar6 = 0;\n      if (row_info.width == 0) goto LAB_00021248;\n      do {\n        uVar11 = *puVar20;\n        pVar6 = pVar6 + 1;\n        *(char *)puVar20 = (char)uVar11 + *(char *)puVar20;\n        *(char *)(puVar20 + 1) = (char)uVar11 + *(char *)(puVar20 + 1);\n        puVar20 = (ushort *)((int)puVar20 + iVar32);\n      } while (row_info.width != pVar6);\n      pVar6 = png_ptr->transformations;\n    }" if (parenthesized_expression "((((png_ptr->mng_features_permitted & 4) == 0) || (png_ptr->filter_type != '@')) ||\n       ((row_info.color_type & 2) == 0))" ( (binary_expression "(((png_ptr->mng_features_permitted & 4) == 0) || (png_ptr->filter_type != '@')) ||\n       ((row_info.color_type & 2) == 0)" (parenthesized_expression "(((png_ptr->mng_features_permitted & 4) == 0) || (png_ptr->filter_type != '@'))" ( (binary_expression "((png_ptr->mng_features_permitted & 4) == 0) || (png_ptr->filter_type != '@')" (parenthesized_expression "((png_ptr->mng_features_permitted & 4) == 0)" ( (binary_expression "(png_ptr->mng_features_permitted & 4) == 0" (parenthesized_expression "(png_ptr->mng_features_permitted & 4)" ( (binary_expression "png_ptr->mng_features_permitted & 4" (field_expression "png_ptr->mng_features_permitted" identifier -> field_identifier) & number_literal) )) == number_literal) )) || (parenthesized_expression "(png_ptr->filter_type != '@')" ( (binary_expression "png_ptr->filter_type != '@'" (field_expression "png_ptr->filter_type" identifier -> field_identifier) != (char_literal "'@'" ' character ')) ))) )) || (parenthesized_expression "((row_info.color_type & 2) == 0)" ( (binary_expression "(row_info.color_type & 2) == 0" (parenthesized_expression "(row_info.color_type & 2)" ( (binary_expression "row_info.color_type & 2" (field_expression "row_info.color_type" identifier . field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\nLAB_00021248:\n      pVar6 = png_ptr->transformations;\n    }" { (labeled_statement "LAB_00021248:\n      pVar6 = png_ptr->transformations;" statement_identifier : (expression_statement "pVar6 = png_ptr->transformations;" (assignment_expression "pVar6 = png_ptr->transformations" identifier = (field_expression "png_ptr->transformations" identifier -> field_identifier)) ;)) }) (else_clause "else {\n      puVar20 = (ushort *)(png_ptr->row_buf + 1);\n      if (row_info.bit_depth != '\b') {\n        if (row_info.bit_depth == '\x10') {\n          if (row_info.color_type == '\x02') {\n            iVar32 = 6;\n          }\n          else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }\n          pVar6 = 0;\n          if (row_info.width != 0) {\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (row_info.color_type == '\x02') {\n        iVar32 = 3;\n      }\n      else {\n        iVar32 = 4;\n        if (row_info.color_type != '\x06') goto LAB_00021248;\n      }\n      pVar6 = 0;\n      if (row_info.width == 0) goto LAB_00021248;\n      do {\n        uVar11 = *puVar20;\n        pVar6 = pVar6 + 1;\n        *(char *)puVar20 = (char)uVar11 + *(char *)puVar20;\n        *(char *)(puVar20 + 1) = (char)uVar11 + *(char *)(puVar20 + 1);\n        puVar20 = (ushort *)((int)puVar20 + iVar32);\n      } while (row_info.width != pVar6);\n      pVar6 = png_ptr->transformations;\n    }" else (compound_statement "{\n      puVar20 = (ushort *)(png_ptr->row_buf + 1);\n      if (row_info.bit_depth != '\b') {\n        if (row_info.bit_depth == '\x10') {\n          if (row_info.color_type == '\x02') {\n            iVar32 = 6;\n          }\n          else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }\n          pVar6 = 0;\n          if (row_info.width != 0) {\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (row_info.color_type == '\x02') {\n        iVar32 = 3;\n      }\n      else {\n        iVar32 = 4;\n        if (row_info.color_type != '\x06') goto LAB_00021248;\n      }\n      pVar6 = 0;\n      if (row_info.width == 0) goto LAB_00021248;\n      do {\n        uVar11 = *puVar20;\n        pVar6 = pVar6 + 1;\n        *(char *)puVar20 = (char)uVar11 + *(char *)puVar20;\n        *(char *)(puVar20 + 1) = (char)uVar11 + *(char *)(puVar20 + 1);\n        puVar20 = (ushort *)((int)puVar20 + iVar32);\n      } while (row_info.width != pVar6);\n      pVar6 = png_ptr->transformations;\n    }" { (expression_statement "puVar20 = (ushort *)(png_ptr->row_buf + 1);" (assignment_expression "puVar20 = (ushort *)(png_ptr->row_buf + 1)" identifier = (cast_expression "(ushort *)(png_ptr->row_buf + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(png_ptr->row_buf + 1)" ( (binary_expression "png_ptr->row_buf + 1" (field_expression "png_ptr->row_buf" identifier -> field_identifier) + number_literal) )))) ;) (if_statement "if (row_info.bit_depth != '\b') {\n        if (row_info.bit_depth == '\x10') {\n          if (row_info.color_type == '\x02') {\n            iVar32 = 6;\n          }\n          else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }\n          pVar6 = 0;\n          if (row_info.width != 0) {\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }" if (parenthesized_expression "(row_info.bit_depth != '\b')" ( (binary_expression "row_info.bit_depth != '\b'" (field_expression "row_info.bit_depth" identifier . field_identifier) != (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n        if (row_info.bit_depth == '\x10') {\n          if (row_info.color_type == '\x02') {\n            iVar32 = 6;\n          }\n          else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }\n          pVar6 = 0;\n          if (row_info.width != 0) {\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }" { (if_statement "if (row_info.bit_depth == '\x10') {\n          if (row_info.color_type == '\x02') {\n            iVar32 = 6;\n          }\n          else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }\n          pVar6 = 0;\n          if (row_info.width != 0) {\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }\n        }" if (parenthesized_expression "(row_info.bit_depth == '\x10')" ( (binary_expression "row_info.bit_depth == '\x10'" (field_expression "row_info.bit_depth" identifier . field_identifier) == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n          if (row_info.color_type == '\x02') {\n            iVar32 = 6;\n          }\n          else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }\n          pVar6 = 0;\n          if (row_info.width != 0) {\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }\n        }" { (if_statement "if (row_info.color_type == '\x02') {\n            iVar32 = 6;\n          }\n          else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }" if (parenthesized_expression "(row_info.color_type == '\x02')" ( (binary_expression "row_info.color_type == '\x02'" (field_expression "row_info.color_type" identifier . field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n            iVar32 = 6;\n          }" { (expression_statement "iVar32 = 6;" (assignment_expression "iVar32 = 6" identifier = number_literal) ;) }) (else_clause "else {\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }" else (compound_statement "{\n            iVar32 = 8;\n            if (row_info.color_type != '\x06') goto LAB_00021248;\n          }" { (expression_statement "iVar32 = 8;" (assignment_expression "iVar32 = 8" identifier = number_literal) ;) (if_statement "if (row_info.color_type != '\x06') goto LAB_00021248;" if (parenthesized_expression "(row_info.color_type != '\x06')" ( (binary_expression "row_info.color_type != '\x06'" (field_expression "row_info.color_type" identifier . field_identifier) != (char_literal "'\x06'" ' escape_sequence ')) )) (goto_statement "goto LAB_00021248;" goto statement_identifier ;)) }))) (expression_statement "pVar6 = 0;" (assignment_expression "pVar6 = 0" identifier = number_literal) ;) (if_statement "if (row_info.width != 0) {\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }" if (parenthesized_expression "(row_info.width != 0)" ( (binary_expression "row_info.width != 0" (field_expression "row_info.width" identifier . field_identifier) != number_literal) )) (compound_statement "{\n            do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);\n            pVar6 = png_ptr->transformations;\n            goto LAB_0002124c;\n          }" { (do_statement "do {\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            } while (row_info.width != pVar6);" do (compound_statement "{\n              pVar6 = pVar6 + 1;\n              uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;\n              uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;\n              *(char *)((int)puVar20 + 1) = (char)uVar15;\n              *(char *)((int)puVar20 + 5) = (char)uVar44;\n              *(char *)puVar20 = (char)(uVar15 >> 8);\n              *(char *)(puVar20 + 2) = (char)(uVar44 >> 8);\n              puVar20 = (ushort *)((int)puVar20 + iVar32);\n            }" { (expression_statement "pVar6 = pVar6 + 1;" (assignment_expression "pVar6 = pVar6 + 1" identifier = (binary_expression "pVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff;" (assignment_expression "uVar15 = (uint)puVar20[1] + (uint)*puVar20 & 0xffff" identifier = (binary_expression "(uint)puVar20[1] + (uint)*puVar20 & 0xffff" (binary_expression "(uint)puVar20[1] + (uint)*puVar20" (cast_expression "(uint)puVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar20[1]" identifier [ number_literal ])) + (binary_expression "(uint)*puVar20" (parenthesized_expression "(uint)" ( identifier )) * identifier)) & number_literal)) ;) (expression_statement "uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff;" (assignment_expression "uVar44 = (uint)puVar20[1] + (uint)puVar20[2] & 0xffff" identifier = (binary_expression "(uint)puVar20[1] + (uint)puVar20[2] & 0xffff" (binary_expression "(uint)puVar20[1] + (uint)puVar20[2]" (cast_expression "(uint)puVar20[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar20[1]" identifier [ number_literal ])) + (cast_expression "(uint)puVar20[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar20[2]" identifier [ number_literal ]))) & number_literal)) ;) (expression_statement "*(char *)((int)puVar20 + 1) = (char)uVar15;" (assignment_expression "*(char *)((int)puVar20 + 1) = (char)uVar15" (pointer_expression "*(char *)((int)puVar20 + 1)" * (cast_expression "(char *)((int)puVar20 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar20 + 1)" ( (binary_expression "(int)puVar20 + 1" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(char)uVar15" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)((int)puVar20 + 5) = (char)uVar44;" (assignment_expression "*(char *)((int)puVar20 + 5) = (char)uVar44" (pointer_expression "*(char *)((int)puVar20 + 5)" * (cast_expression "(char *)((int)puVar20 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar20 + 5)" ( (binary_expression "(int)puVar20 + 5" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(char)uVar44" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)puVar20 = (char)(uVar15 >> 8);" (assignment_expression "*(char *)puVar20 = (char)(uVar15 >> 8)" (pointer_expression "*(char *)puVar20" * (cast_expression "(char *)puVar20" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)(uVar15 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar15 >> 8)" ( (binary_expression "uVar15 >> 8" identifier >> number_literal) )))) ;) (expression_statement "*(char *)(puVar20 + 2) = (char)(uVar44 >> 8);" (assignment_expression "*(char *)(puVar20 + 2) = (char)(uVar44 >> 8)" (pointer_expression "*(char *)(puVar20 + 2)" * (cast_expression "(char *)(puVar20 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 2)" ( (binary_expression "puVar20 + 2" identifier + number_literal) )))) = (cast_expression "(char)(uVar44 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar44 >> 8)" ( (binary_expression "uVar44 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar20 = (ushort *)((int)puVar20 + iVar32);" (assignment_expression "puVar20 = (ushort *)((int)puVar20 + iVar32)" identifier = (cast_expression "(ushort *)((int)puVar20 + iVar32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar20 + iVar32)" ( (binary_expression "(int)puVar20 + iVar32" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(row_info.width != pVar6)" ( (binary_expression "row_info.width != pVar6" (field_expression "row_info.width" identifier . field_identifier) != identifier) )) ;) (expression_statement "pVar6 = png_ptr->transformations;" (assignment_expression "pVar6 = png_ptr->transformations" identifier = (field_expression "png_ptr->transformations" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0002124c;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_00021248;" goto statement_identifier ;) })) (if_statement "if (row_info.color_type == '\x02') {\n        iVar32 = 3;\n      }\n      else {\n        iVar32 = 4;\n        if (row_info.color_type != '\x06') goto LAB_00021248;\n      }" if (parenthesized_expression "(row_info.color_type == '\x02')" ( (binary_expression "row_info.color_type == '\x02'" (field_expression "row_info.color_type" identifier . field_identifier) == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n        iVar32 = 3;\n      }" { (expression_statement "iVar32 = 3;" (assignment_expression "iVar32 = 3" identifier = number_literal) ;) }) (else_clause "else {\n        iVar32 = 4;\n        if (row_info.color_type != '\x06') goto LAB_00021248;\n      }" else (compound_statement "{\n        iVar32 = 4;\n        if (row_info.color_type != '\x06') goto LAB_00021248;\n      }" { (expression_statement "iVar32 = 4;" (assignment_expression "iVar32 = 4" identifier = number_literal) ;) (if_statement "if (row_info.color_type != '\x06') goto LAB_00021248;" if (parenthesized_expression "(row_info.color_type != '\x06')" ( (binary_expression "row_info.color_type != '\x06'" (field_expression "row_info.color_type" identifier . field_identifier) != (char_literal "'\x06'" ' escape_sequence ')) )) (goto_statement "goto LAB_00021248;" goto statement_identifier ;)) }))) (expression_statement "pVar6 = 0;" (assignment_expression "pVar6 = 0" identifier = number_literal) ;) (if_statement "if (row_info.width == 0) goto LAB_00021248;" if (parenthesized_expression "(row_info.width == 0)" ( (binary_expression "row_info.width == 0" (field_expression "row_info.width" identifier . field_identifier) == number_literal) )) (goto_statement "goto LAB_00021248;" goto statement_identifier ;)) (do_statement "do {\n        uVar11 = *puVar20;\n        pVar6 = pVar6 + 1;\n        *(char *)puVar20 = (char)uVar11 + *(char *)puVar20;\n        *(char *)(puVar20 + 1) = (char)uVar11 + *(char *)(puVar20 + 1);\n        puVar20 = (ushort *)((int)puVar20 + iVar32);\n      } while (row_info.width != pVar6);" do (compound_statement "{\n        uVar11 = *puVar20;\n        pVar6 = pVar6 + 1;\n        *(char *)puVar20 = (char)uVar11 + *(char *)puVar20;\n        *(char *)(puVar20 + 1) = (char)uVar11 + *(char *)(puVar20 + 1);\n        puVar20 = (ushort *)((int)puVar20 + iVar32);\n      }" { (expression_statement "uVar11 = *puVar20;" (assignment_expression "uVar11 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "pVar6 = pVar6 + 1;" (assignment_expression "pVar6 = pVar6 + 1" identifier = (binary_expression "pVar6 + 1" identifier + number_literal)) ;) (expression_statement "*(char *)puVar20 = (char)uVar11 + *(char *)puVar20;" (assignment_expression "*(char *)puVar20 = (char)uVar11 + *(char *)puVar20" (pointer_expression "*(char *)puVar20" * (cast_expression "(char *)puVar20" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(char)uVar11 + *(char *)puVar20" (cast_expression "(char)uVar11" ( (type_descriptor "char" primitive_type) ) identifier) + (pointer_expression "*(char *)puVar20" * (cast_expression "(char *)puVar20" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (expression_statement "*(char *)(puVar20 + 1) = (char)uVar11 + *(char *)(puVar20 + 1);" (assignment_expression "*(char *)(puVar20 + 1) = (char)uVar11 + *(char *)(puVar20 + 1)" (pointer_expression "*(char *)(puVar20 + 1)" * (cast_expression "(char *)(puVar20 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 1)" ( (binary_expression "puVar20 + 1" identifier + number_literal) )))) = (binary_expression "(char)uVar11 + *(char *)(puVar20 + 1)" (cast_expression "(char)uVar11" ( (type_descriptor "char" primitive_type) ) identifier) + (pointer_expression "*(char *)(puVar20 + 1)" * (cast_expression "(char *)(puVar20 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar20 + 1)" ( (binary_expression "puVar20 + 1" identifier + number_literal) )))))) ;) (expression_statement "puVar20 = (ushort *)((int)puVar20 + iVar32);" (assignment_expression "puVar20 = (ushort *)((int)puVar20 + iVar32)" identifier = (cast_expression "(ushort *)((int)puVar20 + iVar32)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar20 + iVar32)" ( (binary_expression "(int)puVar20 + iVar32" (cast_expression "(int)puVar20" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(row_info.width != pVar6)" ( (binary_expression "row_info.width != pVar6" (field_expression "row_info.width" identifier . field_identifier) != identifier) )) ;) (expression_statement "pVar6 = png_ptr->transformations;" (assignment_expression "pVar6 = png_ptr->transformations" identifier = (field_expression "png_ptr->transformations" identifier -> field_identifier)) ;) }))) (labeled_statement "LAB_0002124c:\n    if (pVar6 != 0) {\n      png_do_read_transformations(png_ptr,&row_info);\n    }" statement_identifier : (if_statement "if (pVar6 != 0) {\n      png_do_read_transformations(png_ptr,&row_info);\n    }" if (parenthesized_expression "(pVar6 != 0)" ( (binary_expression "pVar6 != 0" identifier != number_literal) )) (compound_statement "{\n      png_do_read_transformations(png_ptr,&row_info);\n    }" { (expression_statement "png_do_read_transformations(png_ptr,&row_info);" (call_expression "png_do_read_transformations(png_ptr,&row_info)" identifier (argument_list "(png_ptr,&row_info)" ( identifier , (pointer_expression "&row_info" & identifier) ))) ;) }))) (if_statement "if (png_ptr->transformed_pixel_depth != '\0') {\n      if (png_ptr->transformed_pixel_depth == row_info.pixel_depth) goto LAB_00021274;\n      ppVar34 = png_ptr;\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      png_read_start_row(ppVar34);\n      goto LAB_00021100;\n    }" if (parenthesized_expression "(png_ptr->transformed_pixel_depth != '\0')" ( (binary_expression "png_ptr->transformed_pixel_depth != '\0'" (field_expression "png_ptr->transformed_pixel_depth" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      if (png_ptr->transformed_pixel_depth == row_info.pixel_depth) goto LAB_00021274;\n      ppVar34 = png_ptr;\n      (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      png_read_start_row(ppVar34);\n      goto LAB_00021100;\n    }" { (if_statement "if (png_ptr->transformed_pixel_depth == row_info.pixel_depth) goto LAB_00021274;" if (parenthesized_expression "(png_ptr->transformed_pixel_depth == row_info.pixel_depth)" ( (binary_expression "png_ptr->transformed_pixel_depth == row_info.pixel_depth" (field_expression "png_ptr->transformed_pixel_depth" identifier -> field_identifier) == (field_expression "row_info.pixel_depth" identifier . field_identifier)) )) (goto_statement "goto LAB_00021274;" goto statement_identifier ;)) (expression_statement "ppVar34 = png_ptr;" (assignment_expression "ppVar34 = png_ptr" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3c0);" (call_expression "(*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3c0)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,PTR_s_nt_0005301c + -0x3c0)" ( identifier , (binary_expression "PTR_s_nt_0005301c + -0x3c0" identifier + number_literal) ))) ;) (labeled_statement "LAB_00021340:\n      png_read_start_row(ppVar34);" statement_identifier : (expression_statement "png_read_start_row(ppVar34);" (call_expression "png_read_start_row(ppVar34)" identifier (argument_list "(ppVar34)" ( identifier ))) ;)) (goto_statement "goto LAB_00021100;" goto statement_identifier ;) })) (expression_statement "png_ptr->transformed_pixel_depth = row_info.pixel_depth;" (assignment_expression "png_ptr->transformed_pixel_depth = row_info.pixel_depth" (field_expression "png_ptr->transformed_pixel_depth" identifier -> field_identifier) = (field_expression "row_info.pixel_depth" identifier . field_identifier)) ;) (expression_statement "puVar18 = PTR_s_nt_0005301c;" (assignment_expression "puVar18 = PTR_s_nt_0005301c" identifier = identifier) ;) (if_statement "if (png_ptr->maximum_pixel_depth < row_info.pixel_depth) goto LAB_000215f4;" if (parenthesized_expression "(png_ptr->maximum_pixel_depth < row_info.pixel_depth)" ( (binary_expression "png_ptr->maximum_pixel_depth < row_info.pixel_depth" (field_expression "png_ptr->maximum_pixel_depth" identifier -> field_identifier) < (field_expression "row_info.pixel_depth" identifier . field_identifier)) )) (goto_statement "goto LAB_000215f4;" goto statement_identifier ;)) (labeled_statement "LAB_00021274:\n    if ((png_ptr->interlaced == '\0') || ((png_ptr->transformations & 2) == 0)) {\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,-1);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,-1);\n      }\n    }\n    else {\n      if (png_ptr->pass < 6) {\n        png_do_read_interlace\n                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,1);\n      }\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,0);\n      }\n    }" statement_identifier : (if_statement "if ((png_ptr->interlaced == '\0') || ((png_ptr->transformations & 2) == 0)) {\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,-1);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,-1);\n      }\n    }\n    else {\n      if (png_ptr->pass < 6) {\n        png_do_read_interlace\n                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,1);\n      }\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,0);\n      }\n    }" if (parenthesized_expression "((png_ptr->interlaced == '\0') || ((png_ptr->transformations & 2) == 0))" ( (binary_expression "(png_ptr->interlaced == '\0') || ((png_ptr->transformations & 2) == 0)" (parenthesized_expression "(png_ptr->interlaced == '\0')" ( (binary_expression "png_ptr->interlaced == '\0'" (field_expression "png_ptr->interlaced" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "((png_ptr->transformations & 2) == 0)" ( (binary_expression "(png_ptr->transformations & 2) == 0" (parenthesized_expression "(png_ptr->transformations & 2)" ( (binary_expression "png_ptr->transformations & 2" (field_expression "png_ptr->transformations" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,-1);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,-1);\n      }\n    }" { (if_statement "if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,-1);\n      }" if (parenthesized_expression "(row != (png_bytep)0x0)" ( (binary_expression "row != (png_bytep)0x0" identifier != (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) )) (compound_statement "{\n        png_combine_row(png_ptr,row,-1);\n      }" { (expression_statement "png_combine_row(png_ptr,row,-1);" (call_expression "png_combine_row(png_ptr,row,-1)" identifier (argument_list "(png_ptr,row,-1)" ( identifier , identifier , number_literal ))) ;) })) (if_statement "if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,-1);\n      }" if (parenthesized_expression "(dsp_row != (png_bytep)0x0)" ( (binary_expression "dsp_row != (png_bytep)0x0" identifier != (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) )) (compound_statement "{\n        png_combine_row(png_ptr,dsp_row,-1);\n      }" { (expression_statement "png_combine_row(png_ptr,dsp_row,-1);" (call_expression "png_combine_row(png_ptr,dsp_row,-1)" identifier (argument_list "(png_ptr,dsp_row,-1)" ( identifier , identifier , number_literal ))) ;) })) }) (else_clause "else {\n      if (png_ptr->pass < 6) {\n        png_do_read_interlace\n                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,1);\n      }\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,0);\n      }\n    }" else (compound_statement "{\n      if (png_ptr->pass < 6) {\n        png_do_read_interlace\n                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations);\n      }\n      if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,1);\n      }\n      if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,0);\n      }\n    }" { (if_statement "if (png_ptr->pass < 6) {\n        png_do_read_interlace\n                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations);\n      }" if (parenthesized_expression "(png_ptr->pass < 6)" ( (binary_expression "png_ptr->pass < 6" (field_expression "png_ptr->pass" identifier -> field_identifier) < number_literal) )) (compound_statement "{\n        png_do_read_interlace\n                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations);\n      }" { (expression_statement "png_do_read_interlace\n                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations);" (call_expression "png_do_read_interlace\n                  (&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations)" identifier (argument_list "(&row_info,png_ptr->row_buf + 1,(uint)png_ptr->pass,png_ptr->transformations)" ( (pointer_expression "&row_info" & identifier) , (binary_expression "png_ptr->row_buf + 1" (field_expression "png_ptr->row_buf" identifier -> field_identifier) + number_literal) , (cast_expression "(uint)png_ptr->pass" ( (type_descriptor "uint" type_identifier) ) (field_expression "png_ptr->pass" identifier -> field_identifier)) , (field_expression "png_ptr->transformations" identifier -> field_identifier) ))) ;) })) (if_statement "if (dsp_row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,dsp_row,1);\n      }" if (parenthesized_expression "(dsp_row != (png_bytep)0x0)" ( (binary_expression "dsp_row != (png_bytep)0x0" identifier != (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) )) (compound_statement "{\n        png_combine_row(png_ptr,dsp_row,1);\n      }" { (expression_statement "png_combine_row(png_ptr,dsp_row,1);" (call_expression "png_combine_row(png_ptr,dsp_row,1)" identifier (argument_list "(png_ptr,dsp_row,1)" ( identifier , identifier , number_literal ))) ;) })) (if_statement "if (row != (png_bytep)0x0) {\n        png_combine_row(png_ptr,row,0);\n      }" if (parenthesized_expression "(row != (png_bytep)0x0)" ( (binary_expression "row != (png_bytep)0x0" identifier != (cast_expression "(png_bytep)0x0" ( (type_descriptor "png_bytep" type_identifier) ) number_literal)) )) (compound_statement "{\n        png_combine_row(png_ptr,row,0);\n      }" { (expression_statement "png_combine_row(png_ptr,row,0);" (call_expression "png_combine_row(png_ptr,row,0)" identifier (argument_list "(png_ptr,row,0)" ( identifier , identifier , number_literal ))) ;) })) })))) (expression_statement "png_read_finish_row(png_ptr);" (call_expression "png_read_finish_row(png_ptr)" identifier (argument_list "(png_ptr)" ( identifier ))) ;) (if_statement "if (png_ptr->read_row_fn != (png_read_status_ptr)0x0) {\n      (*png_ptr->read_row_fn)(png_ptr,png_ptr->row_number,(int)png_ptr->pass);\n    }" if (parenthesized_expression "(png_ptr->read_row_fn != (png_read_status_ptr)0x0)" ( (binary_expression "png_ptr->read_row_fn != (png_read_status_ptr)0x0" (field_expression "png_ptr->read_row_fn" identifier -> field_identifier) != (cast_expression "(png_read_status_ptr)0x0" ( (type_descriptor "png_read_status_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n      (*png_ptr->read_row_fn)(png_ptr,png_ptr->row_number,(int)png_ptr->pass);\n    }" { (expression_statement "(*png_ptr->read_row_fn)(png_ptr,png_ptr->row_number,(int)png_ptr->pass);" (call_expression "(*png_ptr->read_row_fn)(png_ptr,png_ptr->row_number,(int)png_ptr->pass)" (parenthesized_expression "(*png_ptr->read_row_fn)" ( (pointer_expression "*png_ptr->read_row_fn" * (field_expression "png_ptr->read_row_fn" identifier -> field_identifier)) )) (argument_list "(png_ptr,png_ptr->row_number,(int)png_ptr->pass)" ( identifier , (field_expression "png_ptr->row_number" identifier -> field_identifier) , (cast_expression "(int)png_ptr->pass" ( (type_descriptor "int" primitive_type) ) (field_expression "png_ptr->pass" identifier -> field_identifier)) ))) ;) })) })) (labeled_statement "LAB_000212f4:\n  if (iVar4 == *(int *)puVar3) {\n    return;\n  }" statement_identifier : (if_statement "if (iVar4 == *(int *)puVar3) {\n    return;\n  }" if (parenthesized_expression "(iVar4 == *(int *)puVar3)" ( (binary_expression "iVar4 == *(int *)puVar3" identifier == (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_00053484)();" (call_expression "(*(code *)PTR___stack_chk_fail_00053484)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00053484)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00053484" * (cast_expression "(code *)PTR___stack_chk_fail_00053484" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "png_ptr = unaff_s0;" (assignment_expression "png_ptr = unaff_s0" identifier = identifier) ;) (expression_statement "dsp_row = unaff_s2;" (assignment_expression "dsp_row = unaff_s2" identifier = identifier) ;) (labeled_statement "LAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3fc);" statement_identifier : (expression_statement "(*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3fc);" (call_expression "(*(code *)PTR_png_error_0005340c)(png_ptr,PTR_s_nt_0005301c + -0x3fc)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,PTR_s_nt_0005301c + -0x3fc)" ( identifier , (binary_expression "PTR_s_nt_0005301c + -0x3fc" identifier + number_literal) ))) ;)) (labeled_statement "LAB_000215e0:\n  puVar18 = PTR_s_nt_0005301c + -0x9d4;" statement_identifier : (expression_statement "puVar18 = PTR_s_nt_0005301c + -0x9d4;" (assignment_expression "puVar18 = PTR_s_nt_0005301c + -0x9d4" identifier = (binary_expression "PTR_s_nt_0005301c + -0x9d4" identifier + number_literal)) ;)) (expression_statement "(*(code *)PTR_png_error_0005340c)(png_ptr,puVar18);" (call_expression "(*(code *)PTR_png_error_0005340c)(png_ptr,puVar18)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,puVar18)" ( identifier , identifier ))) ;) (labeled_statement "LAB_000215f4:\n  ppVar34 = png_ptr;" statement_identifier : (expression_statement "ppVar34 = png_ptr;" (assignment_expression "ppVar34 = png_ptr" identifier = identifier) ;)) (expression_statement "puVar41 = PTR_png_error_0005340c;" (assignment_expression "puVar41 = PTR_png_error_0005340c" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_error_0005340c)(png_ptr,puVar18 + -0x3d8);" (call_expression "(*(code *)PTR_png_error_0005340c)(png_ptr,puVar18 + -0x3d8)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(png_ptr,puVar18 + -0x3d8)" ( identifier , (binary_expression "puVar18 + -0x3d8" identifier + number_literal) ))) ;) (expression_statement "piVar5 = *(int **)(puVar41 + 0x31eb8);" (assignment_expression "piVar5 = *(int **)(puVar41 + 0x31eb8)" identifier = (pointer_expression "*(int **)(puVar41 + 0x31eb8)" * (cast_expression "(int **)(puVar41 + 0x31eb8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31eb8)" ( (binary_expression "puVar41 + 0x31eb8" identifier + number_literal) ))))) ;) (expression_statement "paVar35 = (png_imagep)ppVar34->jmp_buf_local[0].__jmpbuf[0].__pc;" (assignment_expression "paVar35 = (png_imagep)ppVar34->jmp_buf_local[0].__jmpbuf[0].__pc" identifier = (cast_expression "(png_imagep)ppVar34->jmp_buf_local[0].__jmpbuf[0].__pc" ( (type_descriptor "png_imagep" type_identifier) ) (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__pc" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar34->jmp_buf_local[0]" (field_expression "ppVar34->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "iStack_74 = *piVar5;" (assignment_expression "iStack_74 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "puStack_6c = puVar3;" (assignment_expression "puStack_6c = puVar3" identifier = identifier) ;) (expression_statement "uVar31 = paVar35->format;" (assignment_expression "uVar31 = paVar35->format" identifier = (field_expression "paVar35->format" identifier -> field_identifier)) ;) (expression_statement "uVar15 = uVar31 & 4;" (assignment_expression "uVar15 = uVar31 & 4" identifier = (binary_expression "uVar31 & 4" identifier & number_literal)) ;) (expression_statement "png_ptr_00 = paVar35->opaque->png_ptr;" (assignment_expression "png_ptr_00 = paVar35->opaque->png_ptr" identifier = (field_expression "paVar35->opaque->png_ptr" (field_expression "paVar35->opaque" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "ppVar38 = paVar35->opaque->info_ptr;" (assignment_expression "ppVar38 = paVar35->opaque->info_ptr" identifier = (field_expression "paVar35->opaque->info_ptr" (field_expression "paVar35->opaque" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "ppStack_70 = png_ptr;" (assignment_expression "ppStack_70 = png_ptr" identifier = identifier) ;) (expression_statement "ppStack_68 = dsp_row;" (assignment_expression "ppStack_68 = dsp_row" identifier = identifier) ;) (expression_statement "ppStack_64 = row;" (assignment_expression "ppStack_64 = row" identifier = identifier) ;) (expression_statement "(**(code **)(puVar41 + 0x31d60))(png_ptr_00);" (call_expression "(**(code **)(puVar41 + 0x31d60))(png_ptr_00)" (parenthesized_expression "(**(code **)(puVar41 + 0x31d60))" ( (pointer_expression "**(code **)(puVar41 + 0x31d60)" * (pointer_expression "*(code **)(puVar41 + 0x31d60)" * (cast_expression "(code **)(puVar41 + 0x31d60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31d60)" ( (binary_expression "puVar41 + 0x31d60" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00)" ( identifier ))) ;) (expression_statement "pVar6 = png_image_format(png_ptr_00);" (assignment_expression "pVar6 = png_image_format(png_ptr_00)" identifier = (call_expression "png_image_format(png_ptr_00)" identifier (argument_list "(png_ptr_00)" ( identifier )))) ;) (expression_statement "uVar44 = pVar6 & 0xfffffff7 ^ uVar31;" (assignment_expression "uVar44 = pVar6 & 0xfffffff7 ^ uVar31" identifier = (binary_expression "pVar6 & 0xfffffff7 ^ uVar31" (binary_expression "pVar6 & 0xfffffff7" identifier & number_literal) ^ identifier)) ;) (if_statement "if ((uVar44 & 2) == 0) {\n    uVar36 = 0;\n    if ((pVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar42 = *(code **)(puVar41 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar41 + 0x31dac))(png_ptr_00,1,0xffffffff,0xffffffff);\n      uVar36 = pVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar41 + 0x31d00))(png_ptr_00);\n    }\n    uVar44 = uVar44 & 0xfffffffd;\n    if ((pVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar42 = *(code **)(puVar41 + 0x31d88);\n    if ((paVar35->flags & 4) == 0) {\n      (*pcVar42)(png_ptr_00,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }" if (parenthesized_expression "((uVar44 & 2) == 0)" ( (binary_expression "(uVar44 & 2) == 0" (parenthesized_expression "(uVar44 & 2)" ( (binary_expression "uVar44 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar36 = 0;\n    if ((pVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar42 = *(code **)(puVar41 + 0x31d88);\n  }" { (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (if_statement "if ((pVar6 & 4) != 0) goto LAB_000217f4;" if (parenthesized_expression "((pVar6 & 4) != 0)" ( (binary_expression "(pVar6 & 4) != 0" (parenthesized_expression "(pVar6 & 4)" ( (binary_expression "pVar6 & 4" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000217f4;" goto statement_identifier ;)) (labeled_statement "LAB_000216e8:\n    pcVar42 = *(code **)(puVar41 + 0x31d88);" statement_identifier : (expression_statement "pcVar42 = *(code **)(puVar41 + 0x31d88);" (assignment_expression "pcVar42 = *(code **)(puVar41 + 0x31d88)" identifier = (pointer_expression "*(code **)(puVar41 + 0x31d88)" * (cast_expression "(code **)(puVar41 + 0x31d88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31d88)" ( (binary_expression "puVar41 + 0x31d88" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar41 + 0x31dac))(png_ptr_00,1,0xffffffff,0xffffffff);\n      uVar36 = pVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar41 + 0x31d00))(png_ptr_00);\n    }\n    uVar44 = uVar44 & 0xfffffffd;\n    if ((pVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar42 = *(code **)(puVar41 + 0x31d88);\n    if ((paVar35->flags & 4) == 0) {\n      (*pcVar42)(png_ptr_00,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }" else (compound_statement "{\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar41 + 0x31dac))(png_ptr_00,1,0xffffffff,0xffffffff);\n      uVar36 = pVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar41 + 0x31d00))(png_ptr_00);\n    }\n    uVar44 = uVar44 & 0xfffffffd;\n    if ((pVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar42 = *(code **)(puVar41 + 0x31d88);\n    if ((paVar35->flags & 4) == 0) {\n      (*pcVar42)(png_ptr_00,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }" { (if_statement "if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar41 + 0x31dac))(png_ptr_00,1,0xffffffff,0xffffffff);\n      uVar36 = pVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar41 + 0x31d00))(png_ptr_00);\n    }" if (parenthesized_expression "((uVar31 & 2) == 0)" ( (binary_expression "(uVar31 & 2) == 0" (parenthesized_expression "(uVar31 & 2)" ( (binary_expression "uVar31 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (**(code **)(puVar41 + 0x31dac))(png_ptr_00,1,0xffffffff,0xffffffff);\n      uVar36 = pVar6 & 1;\n    }" { (expression_statement "(**(code **)(puVar41 + 0x31dac))(png_ptr_00,1,0xffffffff,0xffffffff);" (call_expression "(**(code **)(puVar41 + 0x31dac))(png_ptr_00,1,0xffffffff,0xffffffff)" (parenthesized_expression "(**(code **)(puVar41 + 0x31dac))" ( (pointer_expression "**(code **)(puVar41 + 0x31dac)" * (pointer_expression "*(code **)(puVar41 + 0x31dac)" * (cast_expression "(code **)(puVar41 + 0x31dac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31dac)" ( (binary_expression "puVar41 + 0x31dac" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,1,0xffffffff,0xffffffff)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "uVar36 = pVar6 & 1;" (assignment_expression "uVar36 = pVar6 & 1" identifier = (binary_expression "pVar6 & 1" identifier & number_literal)) ;) }) (else_clause "else {\n      uVar36 = 0;\n      (**(code **)(puVar41 + 0x31d00))(png_ptr_00);\n    }" else (compound_statement "{\n      uVar36 = 0;\n      (**(code **)(puVar41 + 0x31d00))(png_ptr_00);\n    }" { (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(puVar41 + 0x31d00))(png_ptr_00);" (call_expression "(**(code **)(puVar41 + 0x31d00))(png_ptr_00)" (parenthesized_expression "(**(code **)(puVar41 + 0x31d00))" ( (pointer_expression "**(code **)(puVar41 + 0x31d00)" * (pointer_expression "*(code **)(puVar41 + 0x31d00)" * (cast_expression "(code **)(puVar41 + 0x31d00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31d00)" ( (binary_expression "puVar41 + 0x31d00" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00)" ( identifier ))) ;) }))) (expression_statement "uVar44 = uVar44 & 0xfffffffd;" (assignment_expression "uVar44 = uVar44 & 0xfffffffd" identifier = (binary_expression "uVar44 & 0xfffffffd" identifier & number_literal)) ;) (if_statement "if ((pVar6 & 4) == 0) goto LAB_000216e8;" if (parenthesized_expression "((pVar6 & 4) == 0)" ( (binary_expression "(pVar6 & 4) == 0" (parenthesized_expression "(pVar6 & 4)" ( (binary_expression "pVar6 & 4" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000216e8;" goto statement_identifier ;)) (labeled_statement "LAB_000217f4:\n    pcVar42 = *(code **)(puVar41 + 0x31d88);" statement_identifier : (expression_statement "pcVar42 = *(code **)(puVar41 + 0x31d88);" (assignment_expression "pcVar42 = *(code **)(puVar41 + 0x31d88)" identifier = (pointer_expression "*(code **)(puVar41 + 0x31d88)" * (cast_expression "(code **)(puVar41 + 0x31d88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31d88)" ( (binary_expression "puVar41 + 0x31d88" identifier + number_literal) ))))) ;)) (if_statement "if ((paVar35->flags & 4) == 0) {\n      (*pcVar42)(png_ptr_00,0,100000);\n      goto joined_r0x0002181c;\n    }" if (parenthesized_expression "((paVar35->flags & 4) == 0)" ( (binary_expression "(paVar35->flags & 4) == 0" (parenthesized_expression "(paVar35->flags & 4)" ( (binary_expression "paVar35->flags & 4" (field_expression "paVar35->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      (*pcVar42)(png_ptr_00,0,100000);\n      goto joined_r0x0002181c;\n    }" { (expression_statement "(*pcVar42)(png_ptr_00,0,100000);" (call_expression "(*pcVar42)(png_ptr_00,0,100000)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(png_ptr_00,0,100000)" ( identifier , number_literal , number_literal ))) ;) (goto_statement "goto joined_r0x0002181c;" goto statement_identifier ;) })) }))) (expression_statement "(*pcVar42)(png_ptr_00,0,0xffffffff);" (call_expression "(*pcVar42)(png_ptr_00,0,0xffffffff)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(png_ptr_00,0,0xffffffff)" ( identifier , number_literal , number_literal ))) ;) (labeled_statement "joined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar27 = 0;\n    iVar4 = -1;\n  }\n  else {\n    uVar27 = pVar6 & 1;\n    iVar4 = 100000;\n  }" statement_identifier : (if_statement "if ((uVar31 & 4) == 0) {\n    uVar27 = 0;\n    iVar4 = -1;\n  }\n  else {\n    uVar27 = pVar6 & 1;\n    iVar4 = 100000;\n  }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar27 = 0;\n    iVar4 = -1;\n  }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = -1;" (assignment_expression "iVar4 = -1" identifier = number_literal) ;) }) (else_clause "else {\n    uVar27 = pVar6 & 1;\n    iVar4 = 100000;\n  }" else (compound_statement "{\n    uVar27 = pVar6 & 1;\n    iVar4 = 100000;\n  }" { (expression_statement "uVar27 = pVar6 & 1;" (assignment_expression "uVar27 = pVar6 & 1" identifier = (binary_expression "pVar6 & 1" identifier & number_literal)) ;) (expression_statement "iVar4 = 100000;" (assignment_expression "iVar4 = 100000" identifier = number_literal) ;) })))) (if_statement "if ((uVar44 & 0x40) != 0) {\n    uVar27 = 2;\n    uVar44 = uVar44 & 0xffffffbf;\n  }" if (parenthesized_expression "((uVar44 & 0x40) != 0)" ( (binary_expression "(uVar44 & 0x40) != 0" (parenthesized_expression "(uVar44 & 0x40)" ( (binary_expression "uVar44 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar27 = 2;\n    uVar44 = uVar44 & 0xffffffbf;\n  }" { (expression_statement "uVar27 = 2;" (assignment_expression "uVar27 = 2" identifier = number_literal) ;) (expression_statement "uVar44 = uVar44 & 0xffffffbf;" (assignment_expression "uVar44 = uVar44 & 0xffffffbf" identifier = (binary_expression "uVar44 & 0xffffffbf" identifier & number_literal)) ;) })) (if_statement "if (uVar36 != 0) goto LAB_00021afc;" if (parenthesized_expression "(uVar36 != 0)" ( (binary_expression "uVar36 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021afc;" goto statement_identifier ;)) (do_statement "do {\n    uVar7 = uVar44 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar41 + 0x31cc8))(png_ptr_00);\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cf8))(png_ptr_00);\n      }\n      uVar44 = uVar44 & 0xfffffffb;\n    }\n    if ((uVar44 & 1) == 0) {\n      pVar6 = 0;\n    }\n    else {\n      uVar19 = 0xffff;\n      if ((pVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar19 = 0xff;\n        }\n        if (bVar1) {\n          uVar44 = uVar44 & 0xffffffdf;\n        }\n        pVar6 = 0;\n        (**(code **)(puVar41 + 0x31d8c))(png_ptr_00,uVar19,!bVar1);\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }\n        else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        pVar6 = 0;\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar41 + 0x31d88))(png_ptr_00,uVar27,iVar4);\n    if ((uVar44 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar44 = uVar44 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cec))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffef;\n      }\n    }\n    if ((uVar44 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31f04))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n    }\n    if (uVar44 != 0) {\n      (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    png_image_skip_unused_chunks(png_ptr_00);\n    if ((pVar6 == 0) && (uVar36 != 2)) {\n      iVar4 = (**(code **)(puVar41 + 0x31e24))(png_ptr_00);\n    }\n    else {\n      iVar4 = 0;\n    }\n    (**(code **)(puVar41 + 0x31f14))(png_ptr_00,ppVar38);\n    uVar44 = ppVar38->color_type & 2;\n    if ((ppVar38->color_type & 4) == 0) {\n      if (pVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (pVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar44 = uVar44 | 1;\n        }\n      }\n      else {\n        uVar44 = uVar44 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar44 = uVar44 | 0x40;\n    }\n    if (ppVar38->bit_depth == '\x10') {\n      uVar44 = uVar44 | 4;\n    }\n    uVar7 = png_ptr_00->transformations;\n    if ((uVar7 & 1) != 0) {\n      uVar44 = uVar44 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar44 = uVar44 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar44) goto LAB_00021d04;\n      pvVar9 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__sp;\n      iVar32 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      if (uVar15 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        pvVar9 = (void *)((int)pvVar9 - iVar32 * (paVar35->height - 1));\n      }\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4] = (int)pvVar9;\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[5] = iVar32;\n      if (pVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x1d18);\n      }\n      else {\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484);\n      }\n      png_safe_execute(paVar35,function,ppVar34);\n      pcVar42 = *(code **)(puVar41 + 0x31d20);\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = 0;\n      (*pcVar42)(png_ptr_00,iVar4);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar44 = uVar44 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((png_ptr_00->flags & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar32 = png_muldiv((png_fixed_point_p)&uStack_80,iVar4,(png_ptr_00->colorspace).gamma,100000);\n    if ((iVar32 == 0) || (iVar32 = png_gamma_significant(uStack_80), iVar32 != 0)) {\n      uVar7 = uVar44 & 4;\n      if (uVar27 == 1) {\n        uVar27 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );" do (compound_statement "{\n    uVar7 = uVar44 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar41 + 0x31cc8))(png_ptr_00);\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cf8))(png_ptr_00);\n      }\n      uVar44 = uVar44 & 0xfffffffb;\n    }\n    if ((uVar44 & 1) == 0) {\n      pVar6 = 0;\n    }\n    else {\n      uVar19 = 0xffff;\n      if ((pVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar19 = 0xff;\n        }\n        if (bVar1) {\n          uVar44 = uVar44 & 0xffffffdf;\n        }\n        pVar6 = 0;\n        (**(code **)(puVar41 + 0x31d8c))(png_ptr_00,uVar19,!bVar1);\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }\n        else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        pVar6 = 0;\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar41 + 0x31d88))(png_ptr_00,uVar27,iVar4);\n    if ((uVar44 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar44 = uVar44 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cec))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffef;\n      }\n    }\n    if ((uVar44 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31f04))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n    }\n    if (uVar44 != 0) {\n      (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    png_image_skip_unused_chunks(png_ptr_00);\n    if ((pVar6 == 0) && (uVar36 != 2)) {\n      iVar4 = (**(code **)(puVar41 + 0x31e24))(png_ptr_00);\n    }\n    else {\n      iVar4 = 0;\n    }\n    (**(code **)(puVar41 + 0x31f14))(png_ptr_00,ppVar38);\n    uVar44 = ppVar38->color_type & 2;\n    if ((ppVar38->color_type & 4) == 0) {\n      if (pVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (pVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar44 = uVar44 | 1;\n        }\n      }\n      else {\n        uVar44 = uVar44 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar44 = uVar44 | 0x40;\n    }\n    if (ppVar38->bit_depth == '\x10') {\n      uVar44 = uVar44 | 4;\n    }\n    uVar7 = png_ptr_00->transformations;\n    if ((uVar7 & 1) != 0) {\n      uVar44 = uVar44 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar44 = uVar44 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar44) goto LAB_00021d04;\n      pvVar9 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__sp;\n      iVar32 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      if (uVar15 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        pvVar9 = (void *)((int)pvVar9 - iVar32 * (paVar35->height - 1));\n      }\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4] = (int)pvVar9;\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[5] = iVar32;\n      if (pVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x1d18);\n      }\n      else {\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484);\n      }\n      png_safe_execute(paVar35,function,ppVar34);\n      pcVar42 = *(code **)(puVar41 + 0x31d20);\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = 0;\n      (*pcVar42)(png_ptr_00,iVar4);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar44 = uVar44 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((png_ptr_00->flags & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar32 = png_muldiv((png_fixed_point_p)&uStack_80,iVar4,(png_ptr_00->colorspace).gamma,100000);\n    if ((iVar32 == 0) || (iVar32 = png_gamma_significant(uStack_80), iVar32 != 0)) {\n      uVar7 = uVar44 & 4;\n      if (uVar27 == 1) {\n        uVar27 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  }" { (expression_statement "uVar7 = uVar44 & 4;" (assignment_expression "uVar7 = uVar44 & 4" identifier = (binary_expression "uVar44 & 4" identifier & number_literal)) ;) (labeled_statement "LAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar41 + 0x31cc8))(png_ptr_00);\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cf8))(png_ptr_00);\n      }\n      uVar44 = uVar44 & 0xfffffffb;\n    }" statement_identifier : (if_statement "if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar41 + 0x31cc8))(png_ptr_00);\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cf8))(png_ptr_00);\n      }\n      uVar44 = uVar44 & 0xfffffffb;\n    }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar41 + 0x31cc8))(png_ptr_00);\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cf8))(png_ptr_00);\n      }\n      uVar44 = uVar44 & 0xfffffffb;\n    }" { (if_statement "if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar41 + 0x31cc8))(png_ptr_00);\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cf8))(png_ptr_00);\n      }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        (**(code **)(puVar41 + 0x31cc8))(png_ptr_00);\n      }" { (expression_statement "(**(code **)(puVar41 + 0x31cc8))(png_ptr_00);" (call_expression "(**(code **)(puVar41 + 0x31cc8))(png_ptr_00)" (parenthesized_expression "(**(code **)(puVar41 + 0x31cc8))" ( (pointer_expression "**(code **)(puVar41 + 0x31cc8)" * (pointer_expression "*(code **)(puVar41 + 0x31cc8)" * (cast_expression "(code **)(puVar41 + 0x31cc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31cc8)" ( (binary_expression "puVar41 + 0x31cc8" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00)" ( identifier ))) ;) }) (else_clause "else {\n        (**(code **)(puVar41 + 0x31cf8))(png_ptr_00);\n      }" else (compound_statement "{\n        (**(code **)(puVar41 + 0x31cf8))(png_ptr_00);\n      }" { (expression_statement "(**(code **)(puVar41 + 0x31cf8))(png_ptr_00);" (call_expression "(**(code **)(puVar41 + 0x31cf8))(png_ptr_00)" (parenthesized_expression "(**(code **)(puVar41 + 0x31cf8))" ( (pointer_expression "**(code **)(puVar41 + 0x31cf8)" * (pointer_expression "*(code **)(puVar41 + 0x31cf8)" * (cast_expression "(code **)(puVar41 + 0x31cf8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31cf8)" ( (binary_expression "puVar41 + 0x31cf8" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00)" ( identifier ))) ;) }))) (expression_statement "uVar44 = uVar44 & 0xfffffffb;" (assignment_expression "uVar44 = uVar44 & 0xfffffffb" identifier = (binary_expression "uVar44 & 0xfffffffb" identifier & number_literal)) ;) }))) (if_statement "if ((uVar44 & 1) == 0) {\n      pVar6 = 0;\n    }\n    else {\n      uVar19 = 0xffff;\n      if ((pVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar19 = 0xff;\n        }\n        if (bVar1) {\n          uVar44 = uVar44 & 0xffffffdf;\n        }\n        pVar6 = 0;\n        (**(code **)(puVar41 + 0x31d8c))(png_ptr_00,uVar19,!bVar1);\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }\n        else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        pVar6 = 0;\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n    }" if (parenthesized_expression "((uVar44 & 1) == 0)" ( (binary_expression "(uVar44 & 1) == 0" (parenthesized_expression "(uVar44 & 1)" ( (binary_expression "uVar44 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      pVar6 = 0;\n    }" { (expression_statement "pVar6 = 0;" (assignment_expression "pVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar19 = 0xffff;\n      if ((pVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar19 = 0xff;\n        }\n        if (bVar1) {\n          uVar44 = uVar44 & 0xffffffdf;\n        }\n        pVar6 = 0;\n        (**(code **)(puVar41 + 0x31d8c))(png_ptr_00,uVar19,!bVar1);\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }\n        else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        pVar6 = 0;\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n    }" else (compound_statement "{\n      uVar19 = 0xffff;\n      if ((pVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar19 = 0xff;\n        }\n        if (bVar1) {\n          uVar44 = uVar44 & 0xffffffdf;\n        }\n        pVar6 = 0;\n        (**(code **)(puVar41 + 0x31d8c))(png_ptr_00,uVar19,!bVar1);\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }\n        else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        pVar6 = 0;\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n    }" { (expression_statement "uVar19 = 0xffff;" (assignment_expression "uVar19 = 0xffff" identifier = number_literal) ;) (if_statement "if ((pVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar19 = 0xff;\n        }\n        if (bVar1) {\n          uVar44 = uVar44 & 0xffffffdf;\n        }\n        pVar6 = 0;\n        (**(code **)(puVar41 + 0x31d8c))(png_ptr_00,uVar19,!bVar1);\n        uVar44 = uVar44 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }\n        else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        pVar6 = 0;\n        uVar44 = uVar44 & 0xfffffffe;\n      }" if (parenthesized_expression "((pVar6 & 1) == 0)" ( (binary_expression "(pVar6 & 1) == 0" (parenthesized_expression "(pVar6 & 1)" ( (binary_expression "pVar6 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar19 = 0xff;\n        }\n        if (bVar1) {\n          uVar44 = uVar44 & 0xffffffdf;\n        }\n        pVar6 = 0;\n        (**(code **)(puVar41 + 0x31d8c))(png_ptr_00,uVar19,!bVar1);\n        uVar44 = uVar44 & 0xfffffffe;\n      }" { (expression_statement "bVar1 = (uVar31 & 0x20) != 0;" (assignment_expression "bVar1 = (uVar31 & 0x20) != 0" identifier = (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" ( (binary_expression "uVar31 & 0x20" identifier & number_literal) )) != number_literal)) ;) (if_statement "if ((uVar31 & 4) == 0) {\n          uVar19 = 0xff;\n        }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar19 = 0xff;\n        }" { (expression_statement "uVar19 = 0xff;" (assignment_expression "uVar19 = 0xff" identifier = number_literal) ;) })) (if_statement "if (bVar1) {\n          uVar44 = uVar44 & 0xffffffdf;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          uVar44 = uVar44 & 0xffffffdf;\n        }" { (expression_statement "uVar44 = uVar44 & 0xffffffdf;" (assignment_expression "uVar44 = uVar44 & 0xffffffdf" identifier = (binary_expression "uVar44 & 0xffffffdf" identifier & number_literal)) ;) })) (expression_statement "pVar6 = 0;" (assignment_expression "pVar6 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(puVar41 + 0x31d8c))(png_ptr_00,uVar19,!bVar1);" (call_expression "(**(code **)(puVar41 + 0x31d8c))(png_ptr_00,uVar19,!bVar1)" (parenthesized_expression "(**(code **)(puVar41 + 0x31d8c))" ( (pointer_expression "**(code **)(puVar41 + 0x31d8c)" * (pointer_expression "*(code **)(puVar41 + 0x31d8c)" * (cast_expression "(code **)(puVar41 + 0x31d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31d8c)" ( (binary_expression "puVar41 + 0x31d8c" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,uVar19,!bVar1)" ( identifier , identifier , (unary_expression "!bVar1" ! identifier) ))) ;) (expression_statement "uVar44 = uVar44 & 0xfffffffe;" (assignment_expression "uVar44 = uVar44 & 0xfffffffe" identifier = (binary_expression "uVar44 & 0xfffffffe" identifier & number_literal)) ;) }) (else_clause "else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }\n        else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        pVar6 = 0;\n        uVar44 = uVar44 & 0xfffffffe;\n      }" else (if_statement "if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }\n        else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        pVar6 = 0;\n        uVar44 = uVar44 & 0xfffffffe;\n      }" if (parenthesized_expression "(uVar36 == 0)" ( (binary_expression "uVar36 == 0" identifier == number_literal) )) (compound_statement "{\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }\n        else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }\n      }" { (if_statement "if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }\n        else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n        }" { (expression_statement "pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];" (assignment_expression "pbVar8 = (byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2]" identifier = (cast_expression "(byte *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar34->jmp_buf_local[0]" (field_expression "ppVar34->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]))) ;) (if_statement "if (pbVar8 == (byte *)0x0) {\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }\n          else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }" if (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            uVar27 = 2;\n            pVar6 = 1;\n            uVar44 = uVar44 & 0xfffffffe;\n          }" { (expression_statement "uVar27 = 2;" (assignment_expression "uVar27 = 2" identifier = number_literal) ;) (expression_statement "pVar6 = 1;" (assignment_expression "pVar6 = 1" identifier = number_literal) ;) (expression_statement "uVar44 = uVar44 & 0xfffffffe;" (assignment_expression "uVar44 = uVar44 & 0xfffffffe" identifier = (binary_expression "uVar44 & 0xfffffffe" identifier & number_literal)) ;) }) (else_clause "else {\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }" else (compound_statement "{\n            uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            pVar6 = 0;\n            uStack_7c = (ushort)pbVar8[1];\n            uStack_7a = (ushort)pbVar8[2];\n            uStack_78 = uStack_7c;\n            (**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);\n            uVar44 = uVar44 & 0xfffffffe;\n          }" { (expression_statement "uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;" (assignment_expression "uStack_80 = CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff" identifier = (binary_expression "CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8) & 0xffffff" (call_expression "CONCAT22((short)(uStack_80 >> 0x10),(ushort)*pbVar8)" identifier (argument_list "((short)(uStack_80 >> 0x10),(ushort)*pbVar8)" ( (cast_expression "(short)(uStack_80 >> 0x10)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(uStack_80 >> 0x10)" ( (binary_expression "uStack_80 >> 0x10" identifier >> number_literal) ))) , (binary_expression "(ushort)*pbVar8" (parenthesized_expression "(ushort)" ( identifier )) * identifier) ))) & number_literal)) ;) (expression_statement "pVar6 = 0;" (assignment_expression "pVar6 = 0" identifier = number_literal) ;) (expression_statement "uStack_7c = (ushort)pbVar8[1];" (assignment_expression "uStack_7c = (ushort)pbVar8[1]" identifier = (cast_expression "(ushort)pbVar8[1]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "pbVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "uStack_7a = (ushort)pbVar8[2];" (assignment_expression "uStack_7a = (ushort)pbVar8[2]" identifier = (cast_expression "(ushort)pbVar8[2]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "pbVar8[2]" identifier [ number_literal ]))) ;) (expression_statement "uStack_78 = uStack_7c;" (assignment_expression "uStack_78 = uStack_7c" identifier = identifier) ;) (expression_statement "(**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0);" (call_expression "(**(code **)(puVar41 + 0x31e58))(png_ptr_00,&uStack_80,1,0,0)" (parenthesized_expression "(**(code **)(puVar41 + 0x31e58))" ( (pointer_expression "**(code **)(puVar41 + 0x31e58)" * (pointer_expression "*(code **)(puVar41 + 0x31e58)" * (cast_expression "(code **)(puVar41 + 0x31e58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31e58)" ( (binary_expression "puVar41 + 0x31e58" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,&uStack_80,1,0,0)" ( identifier , (pointer_expression "&uStack_80" & identifier) , number_literal , number_literal , number_literal ))) ;) (expression_statement "uVar44 = uVar44 & 0xfffffffe;" (assignment_expression "uVar44 = uVar44 & 0xfffffffe" identifier = (binary_expression "uVar44 & 0xfffffffe" identifier & number_literal)) ;) }))) }) (else_clause "else {\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }" else (compound_statement "{\n          pVar6 = 0;\n          (**(code **)(puVar41 + 0x31d34))(png_ptr_00);\n          uVar44 = uVar44 & 0xfffffffe;\n        }" { (expression_statement "pVar6 = 0;" (assignment_expression "pVar6 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(puVar41 + 0x31d34))(png_ptr_00);" (call_expression "(**(code **)(puVar41 + 0x31d34))(png_ptr_00)" (parenthesized_expression "(**(code **)(puVar41 + 0x31d34))" ( (pointer_expression "**(code **)(puVar41 + 0x31d34)" * (pointer_expression "*(code **)(puVar41 + 0x31d34)" * (cast_expression "(code **)(puVar41 + 0x31d34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31d34)" ( (binary_expression "puVar41 + 0x31d34" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00)" ( identifier ))) ;) (expression_statement "uVar44 = uVar44 & 0xfffffffe;" (assignment_expression "uVar44 = uVar44 & 0xfffffffe" identifier = (binary_expression "uVar44 & 0xfffffffe" identifier & number_literal)) ;) }))) }) (else_clause "else {\n        uVar36 = 2;\n        pVar6 = 0;\n        uVar44 = uVar44 & 0xfffffffe;\n      }" else (compound_statement "{\n        uVar36 = 2;\n        pVar6 = 0;\n        uVar44 = uVar44 & 0xfffffffe;\n      }" { (expression_statement "uVar36 = 2;" (assignment_expression "uVar36 = 2" identifier = number_literal) ;) (expression_statement "pVar6 = 0;" (assignment_expression "pVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar44 = uVar44 & 0xfffffffe;" (assignment_expression "uVar44 = uVar44 & 0xfffffffe" identifier = (binary_expression "uVar44 & 0xfffffffe" identifier & number_literal)) ;) }))))) }))) (expression_statement "(**(code **)(puVar41 + 0x31d88))(png_ptr_00,uVar27,iVar4);" (call_expression "(**(code **)(puVar41 + 0x31d88))(png_ptr_00,uVar27,iVar4)" (parenthesized_expression "(**(code **)(puVar41 + 0x31d88))" ( (pointer_expression "**(code **)(puVar41 + 0x31d88)" * (pointer_expression "*(code **)(puVar41 + 0x31d88)" * (cast_expression "(code **)(puVar41 + 0x31d88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31d88)" ( (binary_expression "puVar41 + 0x31d88" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,uVar27,iVar4)" ( identifier , identifier , identifier ))) ;) (if_statement "if ((uVar44 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar44 = uVar44 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cec))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffef;\n      }\n    }" if (parenthesized_expression "((uVar44 & 0x10) != 0)" ( (binary_expression "(uVar44 & 0x10) != 0" (parenthesized_expression "(uVar44 & 0x10)" ( (binary_expression "uVar44 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar44 = uVar44 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cec))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffef;\n      }\n    }" { (if_statement "if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar44 = uVar44 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31cec))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffef;\n      }" if (parenthesized_expression "((uVar31 & 2) == 0)" ( (binary_expression "(uVar31 & 2) == 0" (parenthesized_expression "(uVar31 & 2)" ( (binary_expression "uVar31 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar31 = uVar31 & 0xffffffef;\n        uVar44 = uVar44 & 0xffffffef;\n      }" { (expression_statement "uVar31 = uVar31 & 0xffffffef;" (assignment_expression "uVar31 = uVar31 & 0xffffffef" identifier = (binary_expression "uVar31 & 0xffffffef" identifier & number_literal)) ;) (expression_statement "uVar44 = uVar44 & 0xffffffef;" (assignment_expression "uVar44 = uVar44 & 0xffffffef" identifier = (binary_expression "uVar44 & 0xffffffef" identifier & number_literal)) ;) }) (else_clause "else {\n        (**(code **)(puVar41 + 0x31cec))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffef;\n      }" else (compound_statement "{\n        (**(code **)(puVar41 + 0x31cec))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffef;\n      }" { (expression_statement "(**(code **)(puVar41 + 0x31cec))(png_ptr_00);" (call_expression "(**(code **)(puVar41 + 0x31cec))(png_ptr_00)" (parenthesized_expression "(**(code **)(puVar41 + 0x31cec))" ( (pointer_expression "**(code **)(puVar41 + 0x31cec)" * (pointer_expression "*(code **)(puVar41 + 0x31cec)" * (cast_expression "(code **)(puVar41 + 0x31cec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31cec)" ( (binary_expression "puVar41 + 0x31cec" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00)" ( identifier ))) ;) (expression_statement "uVar44 = uVar44 & 0xffffffef;" (assignment_expression "uVar44 = uVar44 & 0xffffffef" identifier = (binary_expression "uVar44 & 0xffffffef" identifier & number_literal)) ;) }))) })) (if_statement "if ((uVar44 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31f04))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n    }" if (parenthesized_expression "((uVar44 & 0x20) != 0)" ( (binary_expression "(uVar44 & 0x20) != 0" (parenthesized_expression "(uVar44 & 0x20)" ( (binary_expression "uVar44 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31f04))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n    }" { (if_statement "if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31f04))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffdf;\n      }" if (parenthesized_expression "((uVar31 & 1) == 0)" ( (binary_expression "(uVar31 & 1) == 0" (parenthesized_expression "(uVar31 & 1)" ( (binary_expression "uVar31 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar44 = uVar44 & 0xffffffdf;\n      }" { (expression_statement "uVar31 = uVar31 & 0xffffffdf;" (assignment_expression "uVar31 = uVar31 & 0xffffffdf" identifier = (binary_expression "uVar31 & 0xffffffdf" identifier & number_literal)) ;) (expression_statement "uVar44 = uVar44 & 0xffffffdf;" (assignment_expression "uVar44 = uVar44 & 0xffffffdf" identifier = (binary_expression "uVar44 & 0xffffffdf" identifier & number_literal)) ;) }) (else_clause "else if (uVar36 == 2) {\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31f04))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffdf;\n      }" else (if_statement "if (uVar36 == 2) {\n        uVar44 = uVar44 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar41 + 0x31f04))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffdf;\n      }" if (parenthesized_expression "(uVar36 == 2)" ( (binary_expression "uVar36 == 2" identifier == number_literal) )) (compound_statement "{\n        uVar44 = uVar44 & 0xffffffdf;\n      }" { (expression_statement "uVar44 = uVar44 & 0xffffffdf;" (assignment_expression "uVar44 = uVar44 & 0xffffffdf" identifier = (binary_expression "uVar44 & 0xffffffdf" identifier & number_literal)) ;) }) (else_clause "else {\n        (**(code **)(puVar41 + 0x31f04))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffdf;\n      }" else (compound_statement "{\n        (**(code **)(puVar41 + 0x31f04))(png_ptr_00);\n        uVar44 = uVar44 & 0xffffffdf;\n      }" { (expression_statement "(**(code **)(puVar41 + 0x31f04))(png_ptr_00);" (call_expression "(**(code **)(puVar41 + 0x31f04))(png_ptr_00)" (parenthesized_expression "(**(code **)(puVar41 + 0x31f04))" ( (pointer_expression "**(code **)(puVar41 + 0x31f04)" * (pointer_expression "*(code **)(puVar41 + 0x31f04)" * (cast_expression "(code **)(puVar41 + 0x31f04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31f04)" ( (binary_expression "puVar41 + 0x31f04" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00)" ( identifier ))) ;) (expression_statement "uVar44 = uVar44 & 0xffffffdf;" (assignment_expression "uVar44 = uVar44 & 0xffffffdf" identifier = (binary_expression "uVar44 & 0xffffffdf" identifier & number_literal)) ;) }))))) })) (if_statement "if (uVar44 != 0) {\n      (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }" if (parenthesized_expression "(uVar44 != 0)" ( (binary_expression "uVar44 != 0" identifier != number_literal) )) (compound_statement "{\n      (**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }" { (expression_statement "(**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x390);" (call_expression "(**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x390)" (parenthesized_expression "(**(code **)(puVar41 + 0x31e08))" ( (pointer_expression "**(code **)(puVar41 + 0x31e08)" * (pointer_expression "*(code **)(puVar41 + 0x31e08)" * (cast_expression "(code **)(puVar41 + 0x31e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31e08)" ( (binary_expression "puVar41 + 0x31e08" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x390)" ( identifier , (binary_expression "*(int *)(puVar41 + 0x31a18) + -0x390" (pointer_expression "*(int *)(puVar41 + 0x31a18)" * (cast_expression "(int *)(puVar41 + 0x31a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar41 + 0x31a18)" ( (binary_expression "puVar41 + 0x31a18" identifier + number_literal) )))) + number_literal) ))) ;) (goto_statement "goto LAB_00021ce8;" goto statement_identifier ;) })) (expression_statement "png_image_skip_unused_chunks(png_ptr_00);" (call_expression "png_image_skip_unused_chunks(png_ptr_00)" identifier (argument_list "(png_ptr_00)" ( identifier ))) ;) (if_statement "if ((pVar6 == 0) && (uVar36 != 2)) {\n      iVar4 = (**(code **)(puVar41 + 0x31e24))(png_ptr_00);\n    }\n    else {\n      iVar4 = 0;\n    }" if (parenthesized_expression "((pVar6 == 0) && (uVar36 != 2))" ( (binary_expression "(pVar6 == 0) && (uVar36 != 2)" (parenthesized_expression "(pVar6 == 0)" ( (binary_expression "pVar6 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar36 != 2)" ( (binary_expression "uVar36 != 2" identifier != number_literal) ))) )) (compound_statement "{\n      iVar4 = (**(code **)(puVar41 + 0x31e24))(png_ptr_00);\n    }" { (expression_statement "iVar4 = (**(code **)(puVar41 + 0x31e24))(png_ptr_00);" (assignment_expression "iVar4 = (**(code **)(puVar41 + 0x31e24))(png_ptr_00)" identifier = (call_expression "(**(code **)(puVar41 + 0x31e24))(png_ptr_00)" (parenthesized_expression "(**(code **)(puVar41 + 0x31e24))" ( (pointer_expression "**(code **)(puVar41 + 0x31e24)" * (pointer_expression "*(code **)(puVar41 + 0x31e24)" * (cast_expression "(code **)(puVar41 + 0x31e24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31e24)" ( (binary_expression "puVar41 + 0x31e24" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00)" ( identifier )))) ;) }) (else_clause "else {\n      iVar4 = 0;\n    }" else (compound_statement "{\n      iVar4 = 0;\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) }))) (expression_statement "(**(code **)(puVar41 + 0x31f14))(png_ptr_00,ppVar38);" (call_expression "(**(code **)(puVar41 + 0x31f14))(png_ptr_00,ppVar38)" (parenthesized_expression "(**(code **)(puVar41 + 0x31f14))" ( (pointer_expression "**(code **)(puVar41 + 0x31f14)" * (pointer_expression "*(code **)(puVar41 + 0x31f14)" * (cast_expression "(code **)(puVar41 + 0x31f14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31f14)" ( (binary_expression "puVar41 + 0x31f14" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,ppVar38)" ( identifier , identifier ))) ;) (expression_statement "uVar44 = ppVar38->color_type & 2;" (assignment_expression "uVar44 = ppVar38->color_type & 2" identifier = (binary_expression "ppVar38->color_type & 2" (field_expression "ppVar38->color_type" identifier -> field_identifier) & number_literal)) ;) (if_statement "if ((ppVar38->color_type & 4) == 0) {\n      if (pVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (pVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar44 = uVar44 | 1;\n        }\n      }\n      else {\n        uVar44 = uVar44 | 1;\n      }\n    }" if (parenthesized_expression "((ppVar38->color_type & 4) == 0)" ( (binary_expression "(ppVar38->color_type & 4) == 0" (parenthesized_expression "(ppVar38->color_type & 4)" ( (binary_expression "ppVar38->color_type & 4" (field_expression "ppVar38->color_type" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (pVar6 != 0) goto LAB_00021cf4;\n    }" { (if_statement "if (pVar6 != 0) goto LAB_00021cf4;" if (parenthesized_expression "(pVar6 != 0)" ( (binary_expression "pVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021cf4;" goto statement_identifier ;)) }) (else_clause "else if (pVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar44 = uVar44 | 1;\n        }\n      }\n      else {\n        uVar44 = uVar44 | 1;\n      }\n    }" else (if_statement "if (pVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar44 = uVar44 | 1;\n        }\n      }\n      else {\n        uVar44 = uVar44 | 1;\n      }\n    }" if (parenthesized_expression "(pVar6 == 0)" ( (binary_expression "pVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar44 = uVar44 | 1;\n        }\n      }\n      else {\n        uVar44 = uVar44 | 1;\n      }\n    }" { (if_statement "if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar44 = uVar44 | 1;\n        }\n      }\n      else {\n        uVar44 = uVar44 | 1;\n      }" if (parenthesized_expression "(uVar36 == 2)" ( (binary_expression "uVar36 == 2" identifier == number_literal) )) (compound_statement "{\n        if ((uVar31 & 1) != 0) {\n          uVar44 = uVar44 | 1;\n        }\n      }" { (if_statement "if ((uVar31 & 1) != 0) {\n          uVar44 = uVar44 | 1;\n        }" if (parenthesized_expression "((uVar31 & 1) != 0)" ( (binary_expression "(uVar31 & 1) != 0" (parenthesized_expression "(uVar31 & 1)" ( (binary_expression "uVar31 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar44 = uVar44 | 1;\n        }" { (expression_statement "uVar44 = uVar44 | 1;" (assignment_expression "uVar44 = uVar44 | 1" identifier = (binary_expression "uVar44 | 1" identifier | number_literal)) ;) })) }) (else_clause "else {\n        uVar44 = uVar44 | 1;\n      }" else (compound_statement "{\n        uVar44 = uVar44 | 1;\n      }" { (expression_statement "uVar44 = uVar44 | 1;" (assignment_expression "uVar44 = uVar44 | 1" identifier = (binary_expression "uVar44 | 1" identifier | number_literal)) ;) }))) })))) (if_statement "if ((uVar31 & 0x40) != 0) {\n      uVar44 = uVar44 | 0x40;\n    }" if (parenthesized_expression "((uVar31 & 0x40) != 0)" ( (binary_expression "(uVar31 & 0x40) != 0" (parenthesized_expression "(uVar31 & 0x40)" ( (binary_expression "uVar31 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar44 = uVar44 | 0x40;\n    }" { (expression_statement "uVar44 = uVar44 | 0x40;" (assignment_expression "uVar44 = uVar44 | 0x40" identifier = (binary_expression "uVar44 | 0x40" identifier | number_literal)) ;) })) (if_statement "if (ppVar38->bit_depth == '\x10') {\n      uVar44 = uVar44 | 4;\n    }" if (parenthesized_expression "(ppVar38->bit_depth == '\x10')" ( (binary_expression "ppVar38->bit_depth == '\x10'" (field_expression "ppVar38->bit_depth" identifier -> field_identifier) == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n      uVar44 = uVar44 | 4;\n    }" { (expression_statement "uVar44 = uVar44 | 4;" (assignment_expression "uVar44 = uVar44 | 4" identifier = (binary_expression "uVar44 | 4" identifier | number_literal)) ;) })) (expression_statement "uVar7 = png_ptr_00->transformations;" (assignment_expression "uVar7 = png_ptr_00->transformations" identifier = (field_expression "png_ptr_00->transformations" identifier -> field_identifier)) ;) (if_statement "if ((uVar7 & 1) != 0) {\n      uVar44 = uVar44 | 0x10;\n    }" if (parenthesized_expression "((uVar7 & 1) != 0)" ( (binary_expression "(uVar7 & 1) != 0" (parenthesized_expression "(uVar7 & 1)" ( (binary_expression "uVar7 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar44 = uVar44 | 0x10;\n    }" { (expression_statement "uVar44 = uVar44 | 0x10;" (assignment_expression "uVar44 = uVar44 | 0x10" identifier = (binary_expression "uVar44 | 0x10" identifier | number_literal)) ;) })) (if_statement "if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar44 = uVar44 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar44) goto LAB_00021d04;\n      pvVar9 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__sp;\n      iVar32 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      if (uVar15 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        pvVar9 = (void *)((int)pvVar9 - iVar32 * (paVar35->height - 1));\n      }\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4] = (int)pvVar9;\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[5] = iVar32;\n      if (pVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x1d18);\n      }\n      else {\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484);\n      }\n      png_safe_execute(paVar35,function,ppVar34);\n      pcVar42 = *(code **)(puVar41 + 0x31d20);\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = 0;\n      (*pcVar42)(png_ptr_00,iVar4);\n      goto LAB_000219e8;\n    }" if (parenthesized_expression "(uVar36 != 2)" ( (binary_expression "uVar36 != 2" identifier != number_literal) )) (compound_statement "{\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar44 = uVar44 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar44) goto LAB_00021d04;\n      pvVar9 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__sp;\n      iVar32 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[0];\n      if (uVar15 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        pvVar9 = (void *)((int)pvVar9 - iVar32 * (paVar35->height - 1));\n      }\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4] = (int)pvVar9;\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[5] = iVar32;\n      if (pVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x1d18);\n      }\n      else {\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484);\n      }\n      png_safe_execute(paVar35,function,ppVar34);\n      pcVar42 = *(code **)(puVar41 + 0x31d20);\n      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = 0;\n      (*pcVar42)(png_ptr_00,iVar4);\n      goto LAB_000219e8;\n    }" { (if_statement "if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;" if (parenthesized_expression "((uVar7 & 0x20000) == 0)" ( (binary_expression "(uVar7 & 0x20000) == 0" (parenthesized_expression "(uVar7 & 0x20000)" ( (binary_expression "uVar7 & 0x20000" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00021ac8;" goto statement_identifier ;)) (labeled_statement "LAB_00021954:\n      uVar44 = uVar44 | 0x20;" statement_identifier : (expression_statement "uVar44 = uVar44 | 0x20;" (assignment_expression "uVar44 = uVar44 | 0x20" identifier = (binary_expression "uVar44 | 0x20" identifier | number_literal)) ;)) (labeled_statement "LAB_00021958:\n      if (uVar31 != uVar44) goto LAB_00021d04;" statement_identifier : (if_statement "if (uVar31 != uVar44) goto LAB_00021d04;" if (parenthesized_expression "(uVar31 != uVar44)" ( (binary_expression "uVar31 != uVar44" identifier != identifier) )) (goto_statement "goto LAB_00021d04;" goto statement_identifier ;))) (expression_statement "pvVar9 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__sp;" (assignment_expression "pvVar9 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__sp" identifier = (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__sp" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar34->jmp_buf_local[0]" (field_expression "ppVar34->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "iVar32 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[0];" (assignment_expression "iVar32 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[0]" identifier = (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[0]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar34->jmp_buf_local[0]" (field_expression "ppVar34->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ])) ;) (if_statement "if (uVar15 != 0) {\n        iVar32 = iVar32 << 1;\n      }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar32 = iVar32 << 1;\n      }" { (expression_statement "iVar32 = iVar32 << 1;" (assignment_expression "iVar32 = iVar32 << 1" identifier = (binary_expression "iVar32 << 1" identifier << number_literal)) ;) })) (if_statement "if (iVar32 < 0) {\n        pvVar9 = (void *)((int)pvVar9 - iVar32 * (paVar35->height - 1));\n      }" if (parenthesized_expression "(iVar32 < 0)" ( (binary_expression "iVar32 < 0" identifier < number_literal) )) (compound_statement "{\n        pvVar9 = (void *)((int)pvVar9 - iVar32 * (paVar35->height - 1));\n      }" { (expression_statement "pvVar9 = (void *)((int)pvVar9 - iVar32 * (paVar35->height - 1));" (assignment_expression "pvVar9 = (void *)((int)pvVar9 - iVar32 * (paVar35->height - 1))" identifier = (cast_expression "(void *)((int)pvVar9 - iVar32 * (paVar35->height - 1))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar9 - iVar32 * (paVar35->height - 1))" ( (binary_expression "(int)pvVar9 - iVar32 * (paVar35->height - 1)" (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (binary_expression "iVar32 * (paVar35->height - 1)" identifier * (parenthesized_expression "(paVar35->height - 1)" ( (binary_expression "paVar35->height - 1" (field_expression "paVar35->height" identifier -> field_identifier) - number_literal) )))) )))) ;) })) (expression_statement "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4] = (int)pvVar9;" (assignment_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4] = (int)pvVar9" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar34->jmp_buf_local[0]" (field_expression "ppVar34->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) = (cast_expression "(int)pvVar9" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[5] = iVar32;" (assignment_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[5] = iVar32" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[5]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar34->jmp_buf_local[0]" (field_expression "ppVar34->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) = identifier) ;) (if_statement "if (pVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x1d18);\n      }\n      else {\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484);\n      }" if (parenthesized_expression "(pVar6 == 0)" ( (binary_expression "pVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        if (uVar36 != 2) break;\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x1d18);\n      }" { (if_statement "if (uVar36 != 2) break;" if (parenthesized_expression "(uVar36 != 2)" ( (binary_expression "uVar36 != 2" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);" (assignment_expression "uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38)" identifier = (call_expression "(**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38)" (parenthesized_expression "(**(code **)(puVar41 + 0x31f08))" ( (pointer_expression "**(code **)(puVar41 + 0x31f08)" * (pointer_expression "*(code **)(puVar41 + 0x31f08)" * (cast_expression "(code **)(puVar41 + 0x31f08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31f08)" ( (binary_expression "puVar41 + 0x31f08" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,ppVar38)" ( identifier , identifier )))) ;) (expression_statement "iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);" (assignment_expression "iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19)" identifier = (call_expression "(**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19)" (parenthesized_expression "(**(code **)(puVar41 + 0x31d04))" ( (pointer_expression "**(code **)(puVar41 + 0x31d04)" * (pointer_expression "*(code **)(puVar41 + 0x31d04)" * (cast_expression "(code **)(puVar41 + 0x31d04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31d04)" ( (binary_expression "puVar41 + 0x31d04" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,uVar19)" ( identifier , identifier )))) ;) (expression_statement "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;" (assignment_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar34->jmp_buf_local[0]" (field_expression "ppVar34->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x1d18);" (assignment_expression "function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x1d18)" identifier = (cast_expression "(_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x1d18)" ( (type_descriptor "_func_int_png_voidp *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar41 + 0x31a6c) + 0x1d18)" ( (binary_expression "*(int *)(puVar41 + 0x31a6c) + 0x1d18" (pointer_expression "*(int *)(puVar41 + 0x31a6c)" * (cast_expression "(int *)(puVar41 + 0x31a6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar41 + 0x31a6c)" ( (binary_expression "puVar41 + 0x31a6c" identifier + number_literal) )))) + number_literal) )))) ;) }) (else_clause "else {\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484);\n      }" else (compound_statement "{\n        uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);\n        iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);\n        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;\n        function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484);\n      }" { (expression_statement "uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38);" (assignment_expression "uVar19 = (**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38)" identifier = (call_expression "(**(code **)(puVar41 + 0x31f08))(png_ptr_00,ppVar38)" (parenthesized_expression "(**(code **)(puVar41 + 0x31f08))" ( (pointer_expression "**(code **)(puVar41 + 0x31f08)" * (pointer_expression "*(code **)(puVar41 + 0x31f08)" * (cast_expression "(code **)(puVar41 + 0x31f08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31f08)" ( (binary_expression "puVar41 + 0x31f08" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,ppVar38)" ( identifier , identifier )))) ;) (expression_statement "iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19);" (assignment_expression "iVar4 = (**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19)" identifier = (call_expression "(**(code **)(puVar41 + 0x31d04))(png_ptr_00,uVar19)" (parenthesized_expression "(**(code **)(puVar41 + 0x31d04))" ( (pointer_expression "**(code **)(puVar41 + 0x31d04)" * (pointer_expression "*(code **)(puVar41 + 0x31d04)" * (cast_expression "(code **)(puVar41 + 0x31d04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31d04)" ( (binary_expression "puVar41 + 0x31d04" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,uVar19)" ( identifier , identifier )))) ;) (expression_statement "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4;" (assignment_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = iVar4" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar34->jmp_buf_local[0]" (field_expression "ppVar34->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) = identifier) ;) (expression_statement "function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484);" (assignment_expression "function = (_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484)" identifier = (cast_expression "(_func_int_png_voidp *)(*(int *)(puVar41 + 0x31a6c) + 0x2484)" ( (type_descriptor "_func_int_png_voidp *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar41 + 0x31a6c) + 0x2484)" ( (binary_expression "*(int *)(puVar41 + 0x31a6c) + 0x2484" (pointer_expression "*(int *)(puVar41 + 0x31a6c)" * (cast_expression "(int *)(puVar41 + 0x31a6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar41 + 0x31a6c)" ( (binary_expression "puVar41 + 0x31a6c" identifier + number_literal) )))) + number_literal) )))) ;) }))) (expression_statement "png_safe_execute(paVar35,function,ppVar34);" (call_expression "png_safe_execute(paVar35,function,ppVar34)" identifier (argument_list "(paVar35,function,ppVar34)" ( identifier , identifier , identifier ))) ;) (expression_statement "pcVar42 = *(code **)(puVar41 + 0x31d20);" (assignment_expression "pcVar42 = *(code **)(puVar41 + 0x31d20)" identifier = (pointer_expression "*(code **)(puVar41 + 0x31d20)" * (cast_expression "(code **)(puVar41 + 0x31d20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31d20)" ( (binary_expression "puVar41 + 0x31d20" identifier + number_literal) ))))) ;) (expression_statement "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = 0;" (assignment_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = 0" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar34->jmp_buf_local[0]" (field_expression "ppVar34->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "(*pcVar42)(png_ptr_00,iVar4);" (call_expression "(*pcVar42)(png_ptr_00,iVar4)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(png_ptr_00,iVar4)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_000219e8;" goto statement_identifier ;) })) (if_statement "if ((uVar31 & 0x20) != 0) {\n      uVar44 = uVar44 | 0x20;\n    }" if (parenthesized_expression "((uVar31 & 0x20) != 0)" ( (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" ( (binary_expression "uVar31 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar44 = uVar44 | 0x20;\n    }" { (expression_statement "uVar44 = uVar44 | 0x20;" (assignment_expression "uVar44 = uVar44 | 0x20" identifier = (binary_expression "uVar44 | 0x20" identifier | number_literal)) ;) })) (if_statement "if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((png_ptr_00->flags & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }" if (parenthesized_expression "((uVar7 & 0x20000) == 0)" ( (binary_expression "(uVar7 & 0x20000) == 0" (parenthesized_expression "(uVar7 & 0x20000)" ( (binary_expression "uVar7 & 0x20000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((png_ptr_00->flags & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }" { (labeled_statement "LAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((png_ptr_00->flags & 0x80) != 0)) goto LAB_00021958;" statement_identifier : (if_statement "if ((-1 < (int)(uVar7 << 7)) || ((png_ptr_00->flags & 0x80) != 0)) goto LAB_00021958;" if (parenthesized_expression "((-1 < (int)(uVar7 << 7)) || ((png_ptr_00->flags & 0x80) != 0))" ( (binary_expression "(-1 < (int)(uVar7 << 7)) || ((png_ptr_00->flags & 0x80) != 0)" (parenthesized_expression "(-1 < (int)(uVar7 << 7))" ( (binary_expression "-1 < (int)(uVar7 << 7)" number_literal < (cast_expression "(int)(uVar7 << 7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar7 << 7)" ( (binary_expression "uVar7 << 7" identifier << number_literal) )))) )) || (parenthesized_expression "((png_ptr_00->flags & 0x80) != 0)" ( (binary_expression "(png_ptr_00->flags & 0x80) != 0" (parenthesized_expression "(png_ptr_00->flags & 0x80)" ( (binary_expression "png_ptr_00->flags & 0x80" (field_expression "png_ptr_00->flags" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_00021958;" goto statement_identifier ;))) (if_statement "if (uVar36 != 2) goto LAB_00021954;" if (parenthesized_expression "(uVar36 != 2)" ( (binary_expression "uVar36 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00021954;" goto statement_identifier ;)) })) (expression_statement "(**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x340);" (call_expression "(**(code **)(puVar41 + 0x31e08))(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x340)" (parenthesized_expression "(**(code **)(puVar41 + 0x31e08))" ( (pointer_expression "**(code **)(puVar41 + 0x31e08)" * (pointer_expression "*(code **)(puVar41 + 0x31e08)" * (cast_expression "(code **)(puVar41 + 0x31e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31e08)" ( (binary_expression "puVar41 + 0x31e08" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x340)" ( identifier , (binary_expression "*(int *)(puVar41 + 0x31a18) + -0x340" (pointer_expression "*(int *)(puVar41 + 0x31a18)" * (cast_expression "(int *)(puVar41 + 0x31a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar41 + 0x31a18)" ( (binary_expression "puVar41 + 0x31a18" identifier + number_literal) )))) + number_literal) ))) ;) (labeled_statement "LAB_00021afc:\n    iVar32 = png_muldiv((png_fixed_point_p)&uStack_80,iVar4,(png_ptr_00->colorspace).gamma,100000);" statement_identifier : (expression_statement "iVar32 = png_muldiv((png_fixed_point_p)&uStack_80,iVar4,(png_ptr_00->colorspace).gamma,100000);" (assignment_expression "iVar32 = png_muldiv((png_fixed_point_p)&uStack_80,iVar4,(png_ptr_00->colorspace).gamma,100000)" identifier = (call_expression "png_muldiv((png_fixed_point_p)&uStack_80,iVar4,(png_ptr_00->colorspace).gamma,100000)" identifier (argument_list "((png_fixed_point_p)&uStack_80,iVar4,(png_ptr_00->colorspace).gamma,100000)" ( (binary_expression "(png_fixed_point_p)&uStack_80" (parenthesized_expression "(png_fixed_point_p)" ( identifier )) & identifier) , identifier , (field_expression "(png_ptr_00->colorspace).gamma" (parenthesized_expression "(png_ptr_00->colorspace)" ( (field_expression "png_ptr_00->colorspace" identifier -> field_identifier) )) . field_identifier) , number_literal )))) ;)) (if_statement "if ((iVar32 == 0) || (iVar32 = png_gamma_significant(uStack_80), iVar32 != 0)) {\n      uVar7 = uVar44 & 4;\n      if (uVar27 == 1) {\n        uVar27 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }" if (parenthesized_expression "((iVar32 == 0) || (iVar32 = png_gamma_significant(uStack_80), iVar32 != 0))" ( (binary_expression "(iVar32 == 0) || (iVar32 = png_gamma_significant(uStack_80), iVar32 != 0)" (parenthesized_expression "(iVar32 == 0)" ( (binary_expression "iVar32 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar32 = png_gamma_significant(uStack_80), iVar32 != 0)" ( (comma_expression "iVar32 = png_gamma_significant(uStack_80), iVar32 != 0" (assignment_expression "iVar32 = png_gamma_significant(uStack_80)" identifier = (call_expression "png_gamma_significant(uStack_80)" identifier (argument_list "(uStack_80)" ( identifier )))) , (binary_expression "iVar32 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      uVar7 = uVar44 & 4;\n      if (uVar27 == 1) {\n        uVar27 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }" { (expression_statement "uVar7 = uVar44 & 4;" (assignment_expression "uVar7 = uVar44 & 4" identifier = (binary_expression "uVar44 & 4" identifier & number_literal)) ;) (if_statement "if (uVar27 == 1) {\n        uVar27 = 0;\n        uVar36 = 2;\n      }" if (parenthesized_expression "(uVar27 == 1)" ( (binary_expression "uVar27 == 1" identifier == number_literal) )) (compound_statement "{\n        uVar27 = 0;\n        uVar36 = 2;\n      }" { (expression_statement "uVar27 = 0;" (assignment_expression "uVar27 = 0" identifier = number_literal) ;) (expression_statement "uVar36 = 2;" (assignment_expression "uVar36 = 2" identifier = number_literal) ;) })) (goto_statement "goto LAB_00021734;" goto statement_identifier ;) })) (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (while_statement "while (iVar4 = iVar4 + -1, -1 < iVar4) {\n    iVar39 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n    for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n      (**(code **)(puVar41 + 0x31da0))(png_ptr_00,iVar39,0);\n      iVar39 = iVar39 + iVar32;\n    }\n  }" while (parenthesized_expression "(iVar4 = iVar4 + -1, -1 < iVar4)" ( (comma_expression "iVar4 = iVar4 + -1, -1 < iVar4" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) , (binary_expression "-1 < iVar4" number_literal < identifier)) )) (compound_statement "{\n    iVar39 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n    for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n      (**(code **)(puVar41 + 0x31da0))(png_ptr_00,iVar39,0);\n      iVar39 = iVar39 + iVar32;\n    }\n  }" { (expression_statement "iVar39 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4];" (assignment_expression "iVar39 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4]" identifier = (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "ppVar34->jmp_buf_local[0].__jmpbuf[0]" (field_expression "ppVar34->jmp_buf_local[0].__jmpbuf" (subscript_expression "ppVar34->jmp_buf_local[0]" (field_expression "ppVar34->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ])) ;) (for_statement "for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n      (**(code **)(puVar41 + 0x31da0))(png_ptr_00,iVar39,0);\n      iVar39 = iVar39 + iVar32;\n    }" for ( (assignment_expression "pVar6 = paVar35->height" identifier = (field_expression "paVar35->height" identifier -> field_identifier)) ; (binary_expression "pVar6 != 0" identifier != number_literal) ; (assignment_expression "pVar6 = pVar6 - 1" identifier = (binary_expression "pVar6 - 1" identifier - number_literal)) ) (compound_statement "{\n      (**(code **)(puVar41 + 0x31da0))(png_ptr_00,iVar39,0);\n      iVar39 = iVar39 + iVar32;\n    }" { (expression_statement "(**(code **)(puVar41 + 0x31da0))(png_ptr_00,iVar39,0);" (call_expression "(**(code **)(puVar41 + 0x31da0))(png_ptr_00,iVar39,0)" (parenthesized_expression "(**(code **)(puVar41 + 0x31da0))" ( (pointer_expression "**(code **)(puVar41 + 0x31da0)" * (pointer_expression "*(code **)(puVar41 + 0x31da0)" * (cast_expression "(code **)(puVar41 + 0x31da0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31da0)" ( (binary_expression "puVar41 + 0x31da0" identifier + number_literal) ))))) )) (argument_list "(png_ptr_00,iVar39,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "iVar39 = iVar39 + iVar32;" (assignment_expression "iVar39 = iVar39 + iVar32" identifier = (binary_expression "iVar39 + iVar32" identifier + identifier)) ;) })) })) (labeled_statement "LAB_000219e8:\n  if (iStack_74 == *piVar5) {\n    return;\n  }" statement_identifier : (if_statement "if (iStack_74 == *piVar5) {\n    return;\n  }" if (parenthesized_expression "(iStack_74 == *piVar5)" ( (binary_expression "iStack_74 == *piVar5" identifier == (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (labeled_statement "LAB_00021ce8:\n  (**(code **)(puVar41 + 0x31e80))();" statement_identifier : (expression_statement "(**(code **)(puVar41 + 0x31e80))();" (call_expression "(**(code **)(puVar41 + 0x31e80))()" (parenthesized_expression "(**(code **)(puVar41 + 0x31e80))" ( (pointer_expression "**(code **)(puVar41 + 0x31e80)" * (pointer_expression "*(code **)(puVar41 + 0x31e80)" * (cast_expression "(code **)(puVar41 + 0x31e80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31e80)" ( (binary_expression "puVar41 + 0x31e80" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_00021cf4:\n  (**(code **)(puVar41 + 0x31e08))();" statement_identifier : (expression_statement "(**(code **)(puVar41 + 0x31e08))();" (call_expression "(**(code **)(puVar41 + 0x31e08))()" (parenthesized_expression "(**(code **)(puVar41 + 0x31e08))" ( (pointer_expression "**(code **)(puVar41 + 0x31e08)" * (pointer_expression "*(code **)(puVar41 + 0x31e08)" * (cast_expression "(code **)(puVar41 + 0x31e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31e08)" ( (binary_expression "puVar41 + 0x31e08" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_00021d04:\n  pcVar42 = *(code **)(puVar41 + 0x31e08);" statement_identifier : (expression_statement "pcVar42 = *(code **)(puVar41 + 0x31e08);" (assignment_expression "pcVar42 = *(code **)(puVar41 + 0x31e08)" identifier = (pointer_expression "*(code **)(puVar41 + 0x31e08)" * (cast_expression "(code **)(puVar41 + 0x31e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar41 + 0x31e08)" ( (binary_expression "puVar41 + 0x31e08" identifier + number_literal) ))))) ;)) (expression_statement "(*pcVar42)(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x318);" (call_expression "(*pcVar42)(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x318)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(png_ptr_00,*(int *)(puVar41 + 0x31a18) + -0x318)" ( identifier , (binary_expression "*(int *)(puVar41 + 0x31a18) + -0x318" (pointer_expression "*(int *)(puVar41 + 0x31a18)" * (cast_expression "(int *)(puVar41 + 0x31a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar41 + 0x31a18)" ( (binary_expression "puVar41 + 0x31a18" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "piVar5 = (int *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__pc;" (assignment_expression "piVar5 = (int *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__pc" identifier = (cast_expression "(int *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__pc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__pc" (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr_00->jmp_buf_local[0]" (field_expression "png_ptr_00->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "iVar4 = piVar5[2];" (assignment_expression "iVar4 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "puVar29 = *(undefined4 **)*piVar5;" (assignment_expression "puVar29 = *(undefined4 **)*piVar5" identifier = (pointer_expression "*(undefined4 **)*piVar5" * (cast_expression "(undefined4 **)*piVar5" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar5" * identifier)))) ;) (expression_statement "iVar32 = ((undefined4 *)*piVar5)[1];" (assignment_expression "iVar32 = ((undefined4 *)*piVar5)[1]" identifier = (subscript_expression "((undefined4 *)*piVar5)[1]" (parenthesized_expression "((undefined4 *)*piVar5)" ( (cast_expression "(undefined4 *)*piVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) )) [ number_literal ])) ;) (expression_statement "uVar44 = piVar5[3];" (assignment_expression "uVar44 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (if_statement "if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar39 = *(int *)(pcVar42 + 0x31304) + -0x290;\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar39 = (**(code **)(pcVar42 + 0x316b4))(puVar29,iVar32);\n    if (iVar39 != 2) goto LAB_00022470;\n    uVar15 = piVar5[4];\n    iVar39 = *(int *)(pcVar42 + 0x31304);\n    if ((uVar15 & 5) != 1) {\n      uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar31 == 0) {\n        uStackY_e8 = 1;\nLAB_00021dd0:\n        cVar14 = *(char *)(iVar32 + 0x18);\n        if (cVar14 == '\b') {\n          iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];\n          iVar26 = *(int *)(pcVar42 + 0x31454);\n          iVar22 = *(int *)(pcVar42 + 0x31458);\n          uStackY_ec = 1;\n          uVar15 = 0;\n          if (uVar31 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar31 = 0;\n          uVar36 = 0;\n          iStackY_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          } while( true );\n        }\n        if (cVar14 == '\x10') {\n          iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = (uVar15 & 1) + 1;\n          uVar27 = uVar15 & 0x21 ^ 0x21;\n          iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;\n          uStackY_f4 = 1;\n          uVar36 = 0;\n          if (uVar31 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);\n          if (uVar36 < 2) {\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }\n          else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }\n          if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      uStackY_e8 = 7;\n      if (uVar31 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }" if (parenthesized_expression "((puVar29[0x4b] & 0x600000) == 0)" ( (binary_expression "(puVar29[0x4b] & 0x600000) == 0" (parenthesized_expression "(puVar29[0x4b] & 0x600000)" ( (binary_expression "puVar29[0x4b] & 0x600000" (subscript_expression "puVar29[0x4b]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_00022424:\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar39 = *(int *)(pcVar42 + 0x31304) + -0x290;\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39);\n  }" { (labeled_statement "LAB_00022424:\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2f0);" statement_identifier : (expression_statement "(**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2f0);" (call_expression "(**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2f0)" (parenthesized_expression "(**(code **)(pcVar42 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar42 + 0x316f4)" * (pointer_expression "*(code **)(pcVar42 + 0x316f4)" * (cast_expression "(code **)(pcVar42 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x316f4)" ( (binary_expression "pcVar42 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2f0)" ( identifier , (binary_expression "*(int *)(pcVar42 + 0x31304) + -0x2f0" (pointer_expression "*(int *)(pcVar42 + 0x31304)" * (cast_expression "(int *)(pcVar42 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x31304)" ( (binary_expression "pcVar42 + 0x31304" identifier + number_literal) )))) + number_literal) ))) ;)) (labeled_statement "LAB_00022438:\n    (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x278);" statement_identifier : (expression_statement "(**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x278);" (call_expression "(**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x278)" (parenthesized_expression "(**(code **)(pcVar42 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar42 + 0x316f4)" * (pointer_expression "*(code **)(pcVar42 + 0x316f4)" * (cast_expression "(code **)(pcVar42 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x316f4)" ( (binary_expression "pcVar42 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,*(int *)(pcVar42 + 0x31304) + -0x278)" ( identifier , (binary_expression "*(int *)(pcVar42 + 0x31304) + -0x278" (pointer_expression "*(int *)(pcVar42 + 0x31304)" * (cast_expression "(int *)(pcVar42 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x31304)" ( (binary_expression "pcVar42 + 0x31304" identifier + number_literal) )))) + number_literal) ))) ;)) (labeled_statement "LAB_0002244c:\n    iVar39 = *(int *)(pcVar42 + 0x31304) + -0x290;" statement_identifier : (expression_statement "iVar39 = *(int *)(pcVar42 + 0x31304) + -0x290;" (assignment_expression "iVar39 = *(int *)(pcVar42 + 0x31304) + -0x290" identifier = (binary_expression "*(int *)(pcVar42 + 0x31304) + -0x290" (pointer_expression "*(int *)(pcVar42 + 0x31304)" * (cast_expression "(int *)(pcVar42 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x31304)" ( (binary_expression "pcVar42 + 0x31304" identifier + number_literal) )))) + number_literal)) ;)) (expression_statement "(**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39);" (call_expression "(**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39)" (parenthesized_expression "(**(code **)(pcVar42 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar42 + 0x316f4)" * (pointer_expression "*(code **)(pcVar42 + 0x316f4)" * (cast_expression "(code **)(pcVar42 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x316f4)" ( (binary_expression "pcVar42 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,iVar39)" ( identifier , identifier ))) ;) }) (else_clause "else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar39 = (**(code **)(pcVar42 + 0x316b4))(puVar29,iVar32);\n    if (iVar39 != 2) goto LAB_00022470;\n    uVar15 = piVar5[4];\n    iVar39 = *(int *)(pcVar42 + 0x31304);\n    if ((uVar15 & 5) != 1) {\n      uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar31 == 0) {\n        uStackY_e8 = 1;\nLAB_00021dd0:\n        cVar14 = *(char *)(iVar32 + 0x18);\n        if (cVar14 == '\b') {\n          iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];\n          iVar26 = *(int *)(pcVar42 + 0x31454);\n          iVar22 = *(int *)(pcVar42 + 0x31458);\n          uStackY_ec = 1;\n          uVar15 = 0;\n          if (uVar31 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar31 = 0;\n          uVar36 = 0;\n          iStackY_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          } while( true );\n        }\n        if (cVar14 == '\x10') {\n          iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = (uVar15 & 1) + 1;\n          uVar27 = uVar15 & 0x21 ^ 0x21;\n          iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;\n          uStackY_f4 = 1;\n          uVar36 = 0;\n          if (uVar31 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);\n          if (uVar36 < 2) {\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }\n          else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }\n          if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      uStackY_e8 = 7;\n      if (uVar31 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }" else (compound_statement "{\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar39 = (**(code **)(pcVar42 + 0x316b4))(puVar29,iVar32);\n    if (iVar39 != 2) goto LAB_00022470;\n    uVar15 = piVar5[4];\n    iVar39 = *(int *)(pcVar42 + 0x31304);\n    if ((uVar15 & 5) != 1) {\n      uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar31 == 0) {\n        uStackY_e8 = 1;\nLAB_00021dd0:\n        cVar14 = *(char *)(iVar32 + 0x18);\n        if (cVar14 == '\b') {\n          iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];\n          iVar26 = *(int *)(pcVar42 + 0x31454);\n          iVar22 = *(int *)(pcVar42 + 0x31458);\n          uStackY_ec = 1;\n          uVar15 = 0;\n          if (uVar31 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar31 = 0;\n          uVar36 = 0;\n          iStackY_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          } while( true );\n        }\n        if (cVar14 == '\x10') {\n          iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = (uVar15 & 1) + 1;\n          uVar27 = uVar15 & 0x21 ^ 0x21;\n          iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;\n          uStackY_f4 = 1;\n          uVar36 = 0;\n          if (uVar31 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);\n          if (uVar36 < 2) {\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }\n          else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }\n          if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      uStackY_e8 = 7;\n      if (uVar31 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }" { (if_statement "if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }" if (parenthesized_expression "((puVar29[0x4b] & 0x80) != 0)" ( (binary_expression "(puVar29[0x4b] & 0x80) != 0" (parenthesized_expression "(puVar29[0x4b] & 0x80)" ( (binary_expression "puVar29[0x4b] & 0x80" (subscript_expression "puVar29[0x4b]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      (**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }" { (expression_statement "(**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2dc);" (call_expression "(**(code **)(pcVar42 + 0x316f4))(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2dc)" (parenthesized_expression "(**(code **)(pcVar42 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar42 + 0x316f4)" * (pointer_expression "*(code **)(pcVar42 + 0x316f4)" * (cast_expression "(code **)(pcVar42 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x316f4)" ( (binary_expression "pcVar42 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2dc)" ( identifier , (binary_expression "*(int *)(pcVar42 + 0x31304) + -0x2dc" (pointer_expression "*(int *)(pcVar42 + 0x31304)" * (cast_expression "(int *)(pcVar42 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x31304)" ( (binary_expression "pcVar42 + 0x31304" identifier + number_literal) )))) + number_literal) ))) ;) (goto_statement "goto LAB_00022424;" goto statement_identifier ;) })) (expression_statement "iVar39 = (**(code **)(pcVar42 + 0x316b4))(puVar29,iVar32);" (assignment_expression "iVar39 = (**(code **)(pcVar42 + 0x316b4))(puVar29,iVar32)" identifier = (call_expression "(**(code **)(pcVar42 + 0x316b4))(puVar29,iVar32)" (parenthesized_expression "(**(code **)(pcVar42 + 0x316b4))" ( (pointer_expression "**(code **)(pcVar42 + 0x316b4)" * (pointer_expression "*(code **)(pcVar42 + 0x316b4)" * (cast_expression "(code **)(pcVar42 + 0x316b4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x316b4)" ( (binary_expression "pcVar42 + 0x316b4" identifier + number_literal) ))))) )) (argument_list "(puVar29,iVar32)" ( identifier , identifier )))) ;) (if_statement "if (iVar39 != 2) goto LAB_00022470;" if (parenthesized_expression "(iVar39 != 2)" ( (binary_expression "iVar39 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00022470;" goto statement_identifier ;)) (expression_statement "uVar15 = piVar5[4];" (assignment_expression "uVar15 = piVar5[4]" identifier = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "iVar39 = *(int *)(pcVar42 + 0x31304);" (assignment_expression "iVar39 = *(int *)(pcVar42 + 0x31304)" identifier = (pointer_expression "*(int *)(pcVar42 + 0x31304)" * (cast_expression "(int *)(pcVar42 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x31304)" ( (binary_expression "pcVar42 + 0x31304" identifier + number_literal) ))))) ;) (if_statement "if ((uVar15 & 5) != 1) {\n      uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar31 == 0) {\n        uStackY_e8 = 1;\nLAB_00021dd0:\n        cVar14 = *(char *)(iVar32 + 0x18);\n        if (cVar14 == '\b') {\n          iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];\n          iVar26 = *(int *)(pcVar42 + 0x31454);\n          iVar22 = *(int *)(pcVar42 + 0x31458);\n          uStackY_ec = 1;\n          uVar15 = 0;\n          if (uVar31 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar31 = 0;\n          uVar36 = 0;\n          iStackY_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          } while( true );\n        }\n        if (cVar14 == '\x10') {\n          iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = (uVar15 & 1) + 1;\n          uVar27 = uVar15 & 0x21 ^ 0x21;\n          iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;\n          uStackY_f4 = 1;\n          uVar36 = 0;\n          if (uVar31 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);\n          if (uVar36 < 2) {\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }\n          else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }\n          if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      uStackY_e8 = 7;\n      if (uVar31 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }" if (parenthesized_expression "((uVar15 & 5) != 1)" ( (binary_expression "(uVar15 & 5) != 1" (parenthesized_expression "(uVar15 & 5)" ( (binary_expression "uVar15 & 5" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar31 == 0) {\n        uStackY_e8 = 1;\nLAB_00021dd0:\n        cVar14 = *(char *)(iVar32 + 0x18);\n        if (cVar14 == '\b') {\n          iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];\n          iVar26 = *(int *)(pcVar42 + 0x31454);\n          iVar22 = *(int *)(pcVar42 + 0x31458);\n          uStackY_ec = 1;\n          uVar15 = 0;\n          if (uVar31 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar31 = 0;\n          uVar36 = 0;\n          iStackY_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          } while( true );\n        }\n        if (cVar14 == '\x10') {\n          iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = (uVar15 & 1) + 1;\n          uVar27 = uVar15 & 0x21 ^ 0x21;\n          iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;\n          uStackY_f4 = 1;\n          uVar36 = 0;\n          if (uVar31 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);\n          if (uVar36 < 2) {\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }\n          else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }\n          if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      uStackY_e8 = 7;\n      if (uVar31 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }" { (expression_statement "uVar31 = (uint)*(byte *)(puVar29 + 0x7f);" (assignment_expression "uVar31 = (uint)*(byte *)(puVar29 + 0x7f)" identifier = (binary_expression "(uint)*(byte *)(puVar29 + 0x7f)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(puVar29 + 0x7f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x7f)" ( (binary_expression "puVar29 + 0x7f" identifier + number_literal) ))))) ;) (if_statement "if (uVar31 == 0) {\n        uStackY_e8 = 1;\nLAB_00021dd0:\n        cVar14 = *(char *)(iVar32 + 0x18);\n        if (cVar14 == '\b') {\n          iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];\n          iVar26 = *(int *)(pcVar42 + 0x31454);\n          iVar22 = *(int *)(pcVar42 + 0x31458);\n          uStackY_ec = 1;\n          uVar15 = 0;\n          if (uVar31 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar31 = 0;\n          uVar36 = 0;\n          iStackY_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          } while( true );\n        }\n        if (cVar14 == '\x10') {\n          iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = (uVar15 & 1) + 1;\n          uVar27 = uVar15 & 0x21 ^ 0x21;\n          iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;\n          uStackY_f4 = 1;\n          uVar36 = 0;\n          if (uVar31 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);\n          if (uVar36 < 2) {\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }\n          else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }\n          if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }" if (parenthesized_expression "(uVar31 == 0)" ( (binary_expression "uVar31 == 0" identifier == number_literal) )) (compound_statement "{\n        uStackY_e8 = 1;\nLAB_00021dd0:\n        cVar14 = *(char *)(iVar32 + 0x18);\n        if (cVar14 == '\b') {\n          iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];\n          iVar26 = *(int *)(pcVar42 + 0x31454);\n          iVar22 = *(int *)(pcVar42 + 0x31458);\n          uStackY_ec = 1;\n          uVar15 = 0;\n          if (uVar31 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar31 = 0;\n          uVar36 = 0;\n          iStackY_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          } while( true );\n        }\n        if (cVar14 == '\x10') {\n          iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = (uVar15 & 1) + 1;\n          uVar27 = uVar15 & 0x21 ^ 0x21;\n          iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;\n          uStackY_f4 = 1;\n          uVar36 = 0;\n          if (uVar31 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);\n          if (uVar36 < 2) {\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }\n          else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }\n          if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }" { (expression_statement "uStackY_e8 = 1;" (assignment_expression "uStackY_e8 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00021dd0:\n        cVar14 = *(char *)(iVar32 + 0x18);" statement_identifier : (expression_statement "cVar14 = *(char *)(iVar32 + 0x18);" (assignment_expression "cVar14 = *(char *)(iVar32 + 0x18)" identifier = (pointer_expression "*(char *)(iVar32 + 0x18)" * (cast_expression "(char *)(iVar32 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar32 + 0x18)" ( (binary_expression "iVar32 + 0x18" identifier + number_literal) ))))) ;)) (if_statement "if (cVar14 == '\b') {\n          iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];\n          iVar26 = *(int *)(pcVar42 + 0x31454);\n          iVar22 = *(int *)(pcVar42 + 0x31458);\n          uStackY_ec = 1;\n          uVar15 = 0;\n          if (uVar31 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar31 = 0;\n          uVar36 = 0;\n          iStackY_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          } while( true );\n        }" if (parenthesized_expression "(cVar14 == '\b')" ( (binary_expression "cVar14 == '\b'" identifier == (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n          iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];\n          iVar26 = *(int *)(pcVar42 + 0x31454);\n          iVar22 = *(int *)(pcVar42 + 0x31458);\n          uStackY_ec = 1;\n          uVar15 = 0;\n          if (uVar31 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar31 = 0;\n          uVar36 = 0;\n          iStackY_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          } while( true );\n        }" { (expression_statement "iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];" (assignment_expression "iVar32 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4]" identifier = (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr_00->jmp_buf_local[0]" (field_expression "png_ptr_00->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ])) ;) (expression_statement "iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];" (assignment_expression "iVar39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5]" identifier = (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr_00->jmp_buf_local[0]" (field_expression "png_ptr_00->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ])) ;) (expression_statement "iVar26 = *(int *)(pcVar42 + 0x31454);" (assignment_expression "iVar26 = *(int *)(pcVar42 + 0x31454)" identifier = (pointer_expression "*(int *)(pcVar42 + 0x31454)" * (cast_expression "(int *)(pcVar42 + 0x31454)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x31454)" ( (binary_expression "pcVar42 + 0x31454" identifier + number_literal) ))))) ;) (expression_statement "iVar22 = *(int *)(pcVar42 + 0x31458);" (assignment_expression "iVar22 = *(int *)(pcVar42 + 0x31458)" identifier = (pointer_expression "*(int *)(pcVar42 + 0x31458)" * (cast_expression "(int *)(pcVar42 + 0x31458)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x31458)" ( (binary_expression "pcVar42 + 0x31458" identifier + number_literal) ))))) ;) (expression_statement "uStackY_ec = 1;" (assignment_expression "uStackY_ec = 1" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (if_statement "if (uVar31 == 1) goto LAB_00022214;" if (parenthesized_expression "(uVar31 == 1)" ( (binary_expression "uVar31 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00022214;" goto statement_identifier ;)) (labeled_statement "LAB_000220b0:\n          uVar31 = 0;" statement_identifier : (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;)) (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (expression_statement "iStackY_f8 = 1;" (assignment_expression "iStackY_f8 = 1" identifier = number_literal) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000220c4:\n          iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];" statement_identifier : (expression_statement "iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];" (assignment_expression "iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2]" identifier = (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr_00->jmp_buf_local[0]" (field_expression "png_ptr_00->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ])) ;)) (if_statement "if (iVar33 == 0) goto LAB_000222bc;" if (parenthesized_expression "(iVar33 == 0)" ( (binary_expression "iVar33 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000222bc;" goto statement_identifier ;)) (do_statement "do {\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          } while( true );" do (compound_statement "{\n            bVar13 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar42 + 0x31450);\n            uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);\n            if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }\n            while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }\n          }" { (expression_statement "bVar13 = *(byte *)(iVar33 + 1);" (assignment_expression "bVar13 = *(byte *)(iVar33 + 1)" identifier = (pointer_expression "*(byte *)(iVar33 + 1)" * (cast_expression "(byte *)(iVar33 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 1)" ( (binary_expression "iVar33 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar33 = *(int *)(pcVar42 + 0x31450);" (assignment_expression "iVar33 = *(int *)(pcVar42 + 0x31450)" identifier = (pointer_expression "*(int *)(pcVar42 + 0x31450)" * (cast_expression "(int *)(pcVar42 + 0x31450)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x31450)" ( (binary_expression "pcVar42 + 0x31450" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2);" (assignment_expression "uVar11 = *(ushort *)(iVar33 + (uint)bVar13 * 2)" identifier = (pointer_expression "*(ushort *)(iVar33 + (uint)bVar13 * 2)" * (cast_expression "(ushort *)(iVar33 + (uint)bVar13 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + (uint)bVar13 * 2)" ( (binary_expression "iVar33 + (uint)bVar13 * 2" identifier + (binary_expression "(uint)bVar13 * 2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (if_statement "if (uVar31 < uVar44) {\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }" if (parenthesized_expression "(uVar31 < uVar44)" ( (binary_expression "uVar31 < uVar44" identifier < identifier) )) (compound_statement "{\n              pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n              do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);\n            }" { (expression_statement "pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);" (assignment_expression "pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4)" identifier = (cast_expression "(byte *)(iVar32 + uVar31 * iVar39 + iVar4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar32 + uVar31 * iVar39 + iVar4)" ( (binary_expression "iVar32 + uVar31 * iVar39 + iVar4" (binary_expression "iVar32 + uVar31 * iVar39" identifier + (binary_expression "uVar31 * iVar39" identifier * identifier)) + identifier) )))) ;) (do_statement "do {\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              } while (uVar31 < uVar44);" do (compound_statement "{\n                pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }\n                uVar31 = uVar31 + iStackY_f8;\n                pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n              }" { (expression_statement "pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];" (assignment_expression "pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3]" identifier = (cast_expression "(byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr_00->jmp_buf_local[0]" (field_expression "png_ptr_00->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]))) ;) (expression_statement "(**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);" (call_expression "(**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0)" (parenthesized_expression "(**(code **)(pcVar42 + 0x3168c))" ( (pointer_expression "**(code **)(pcVar42 + 0x3168c)" * (pointer_expression "*(code **)(pcVar42 + 0x3168c)" * (cast_expression "(code **)(pcVar42 + 0x3168c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x3168c)" ( (binary_expression "pcVar42 + 0x3168c" identifier + number_literal) ))))) )) (argument_list "(puVar29,pbVar28,0)" ( identifier , identifier , number_literal ))) ;) (for_statement "for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                    pbVar21 = pbVar21 + iVar10) {\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }" for ( (assignment_expression "pbVar21 = pbVar8 + (uVar36 - iVar4)" identifier = (binary_expression "pbVar8 + (uVar36 - iVar4)" identifier + (parenthesized_expression "(uVar36 - iVar4)" ( (binary_expression "uVar36 - iVar4" identifier - identifier) )))) ; (binary_expression "pbVar21 < pbVar8" identifier < identifier) ; (assignment_expression "pbVar21 = pbVar21 + iVar10" identifier = (binary_expression "pbVar21 + iVar10" identifier + identifier)) ) (compound_statement "{\n                  uVar15 = (uint)pbVar28[1];\n                  if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }\n                  pbVar28 = pbVar28 + 2;\n                }" { (expression_statement "uVar15 = (uint)pbVar28[1];" (assignment_expression "uVar15 = (uint)pbVar28[1]" identifier = (cast_expression "(uint)pbVar28[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar28[1]" identifier [ number_literal ]))) ;) (if_statement "if (uVar15 == 0) {\n                    *pbVar21 = bVar13;\n                  }\n                  else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (compound_statement "{\n                    *pbVar21 = bVar13;\n                  }" { (expression_statement "*pbVar21 = bVar13;" (assignment_expression "*pbVar21 = bVar13" (pointer_expression "*pbVar21" * identifier) = identifier) ;) }) (else_clause "else {\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }" else (compound_statement "{\n                    bVar12 = *pbVar28;\n                    if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }\n                    *pbVar21 = bVar12;\n                  }" { (expression_statement "bVar12 = *pbVar28;" (assignment_expression "bVar12 = *pbVar28" identifier = (pointer_expression "*pbVar28" * identifier)) ;) (if_statement "if (uVar15 != 0xff) {\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }" if (parenthesized_expression "(uVar15 != 0xff)" ( (binary_expression "uVar15 != 0xff" identifier != number_literal) )) (compound_statement "{\n                      uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;\n                      uVar27 = uVar15 >> 0xf;\n                      bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                    }" { (expression_statement "uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15;" (assignment_expression "uVar15 = (0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15" identifier = (binary_expression "(0xff - uVar15) * (uint)uVar11 +\n                               *(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15" (binary_expression "(0xff - uVar15) * (uint)uVar11" (parenthesized_expression "(0xff - uVar15)" ( (binary_expression "0xff - uVar15" number_literal - identifier) )) * (cast_expression "(uint)uVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) + (binary_expression "*(ushort *)(iVar33 + (uint)bVar12 * 2) * uVar15" (pointer_expression "*(ushort *)(iVar33 + (uint)bVar12 * 2)" * (cast_expression "(ushort *)(iVar33 + (uint)bVar12 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + (uint)bVar12 * 2)" ( (binary_expression "iVar33 + (uint)bVar12 * 2" identifier + (binary_expression "(uint)bVar12 * 2" (cast_expression "(uint)bVar12" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) * identifier))) ;) (expression_statement "uVar27 = uVar15 >> 0xf;" (assignment_expression "uVar27 = uVar15 >> 0xf" identifier = (binary_expression "uVar15 >> 0xf" identifier >> number_literal)) ;) (expression_statement "bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);" (assignment_expression "bVar12 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8)" identifier = (call_expression "(byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8)" ( (binary_expression "((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8" (binary_expression "((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)\n                                      + (uint)*(ushort *)(iVar22 + uVar27 * 2)" (parenthesized_expression "((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc)" ( (binary_expression "(uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc" (binary_expression "(uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27)" (binary_expression "(uVar15 & 0x7fff) * (uint)" (parenthesized_expression "(uVar15 & 0x7fff)" ( (binary_expression "uVar15 & 0x7fff" identifier & number_literal) )) * (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar26 + uVar27)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar26 + uVar27)" ( (binary_expression "iVar26 + uVar27" identifier + identifier) )))) >> number_literal) )) + (binary_expression "(uint)*(ushort *)(iVar22 + uVar27 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar22 + uVar27 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar22 + uVar27 * 2)" ( (binary_expression "iVar22 + uVar27 * 2" identifier + (binary_expression "uVar27 * 2" identifier * number_literal)) ))))) >> number_literal) )))) ;) })) (expression_statement "*pbVar21 = bVar12;" (assignment_expression "*pbVar21 = bVar12" (pointer_expression "*pbVar21" * identifier) = identifier) ;) }))) (expression_statement "pbVar28 = pbVar28 + 2;" (assignment_expression "pbVar28 = pbVar28 + 2" identifier = (binary_expression "pbVar28 + 2" identifier + number_literal)) ;) })) (expression_statement "uVar31 = uVar31 + iStackY_f8;" (assignment_expression "uVar31 = uVar31 + iStackY_f8" identifier = (binary_expression "uVar31 + iStackY_f8" identifier + identifier)) ;) (expression_statement "pbVar8 = pbVar8 + iStackY_f8 * iVar39;" (assignment_expression "pbVar8 = pbVar8 + iStackY_f8 * iVar39" identifier = (binary_expression "pbVar8 + iStackY_f8 * iVar39" identifier + (binary_expression "iStackY_f8 * iVar39" identifier * identifier))) ;) }) while (parenthesized_expression "(uVar31 < uVar44)" ( (binary_expression "uVar31 < uVar44" identifier < identifier) )) ;) })) (while_statement "while( true ) {\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);\n              uVar36 = uVar36 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);\n              uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n              if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }\n              iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n              iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }\n            }" { (do_statement "do {\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              } while (uVar31 + iVar4 >> (uVar27 & 0x1f) == 0);" do (compound_statement "{\n                if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }\n                uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar36 = uStackY_ec + 1;\n                uVar15 = uStackY_ec;\n                uStackY_ec = uVar36;\n                if (uVar31 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);\n                if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }\n              }" { (if_statement "if (uStackY_e8 == uStackY_ec) {\n                  return;\n                }" if (parenthesized_expression "(uStackY_e8 == uStackY_ec)" ( (binary_expression "uStackY_e8 == uStackY_ec" identifier == identifier) )) (compound_statement "{\n                  return;\n                }" { (return_statement "return;" return ;) })) (expression_statement "uVar31 = (uint)*(byte *)(puVar29 + 0x7f);" (assignment_expression "uVar31 = (uint)*(byte *)(puVar29 + 0x7f)" identifier = (binary_expression "(uint)*(byte *)(puVar29 + 0x7f)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(puVar29 + 0x7f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x7f)" ( (binary_expression "puVar29 + 0x7f" identifier + number_literal) ))))) ;) (expression_statement "uVar36 = uStackY_ec + 1;" (assignment_expression "uVar36 = uStackY_ec + 1" identifier = (binary_expression "uStackY_ec + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uStackY_ec;" (assignment_expression "uVar15 = uStackY_ec" identifier = identifier) ;) (expression_statement "uStackY_ec = uVar36;" (assignment_expression "uStackY_ec = uVar36" identifier = identifier) ;) (if_statement "if (uVar31 != 1) goto LAB_000220b0;" if (parenthesized_expression "(uVar31 != 1)" ( (binary_expression "uVar31 != 1" identifier != number_literal) )) (goto_statement "goto LAB_000220b0;" goto statement_identifier ;)) (labeled_statement "LAB_00022214:\n                uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);" statement_identifier : (expression_statement "uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f);" (assignment_expression "uVar36 = (uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f)" identifier = (binary_expression "(uVar15 & 1) << (3U - ((int)uStackY_ec >> 1) & 0x1f)" (parenthesized_expression "(uVar15 & 1)" ( (binary_expression "uVar15 & 1" identifier & number_literal) )) << (parenthesized_expression "(3U - ((int)uStackY_ec >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uStackY_ec >> 1) & 0x1f" (binary_expression "3U - ((int)uStackY_ec >> 1)" number_literal - (parenthesized_expression "((int)uStackY_ec >> 1)" ( (binary_expression "(int)uStackY_ec >> 1" (cast_expression "(int)uStackY_ec" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) )))) ;)) (if_statement "if (uVar15 < 2) {\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }\n                else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }" if (parenthesized_expression "(uVar15 < 2)" ( (binary_expression "uVar15 < 2" identifier < number_literal) )) (compound_statement "{\n                  uVar31 = ~uVar36 & 7;\n                  uVar27 = 3;\n                }" { (expression_statement "uVar31 = ~uVar36 & 7;" (assignment_expression "uVar31 = ~uVar36 & 7" identifier = (binary_expression "~uVar36 & 7" (unary_expression "~uVar36" ~ identifier) & number_literal)) ;) (expression_statement "uVar27 = 3;" (assignment_expression "uVar27 = 3" identifier = number_literal) ;) }) (else_clause "else {\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }" else (compound_statement "{\n                  uVar27 = (int)(8 - uStackY_ec) >> 1;\n                  uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);\n                }" { (expression_statement "uVar27 = (int)(8 - uStackY_ec) >> 1;" (assignment_expression "uVar27 = (int)(8 - uStackY_ec) >> 1" identifier = (binary_expression "(int)(8 - uStackY_ec) >> 1" (cast_expression "(int)(8 - uStackY_ec)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - uStackY_ec)" ( (binary_expression "8 - uStackY_ec" number_literal - identifier) ))) >> number_literal)) ;) (expression_statement "uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7);" (assignment_expression "uVar31 = ((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7)" identifier = (binary_expression "((uVar31 << (uVar27 & 0x1f)) + -1) - (uVar36 & 7)" (parenthesized_expression "((uVar31 << (uVar27 & 0x1f)) + -1)" ( (binary_expression "(uVar31 << (uVar27 & 0x1f)) + -1" (parenthesized_expression "(uVar31 << (uVar27 & 0x1f))" ( (binary_expression "uVar31 << (uVar27 & 0x1f)" identifier << (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) ))) )) + number_literal) )) - (parenthesized_expression "(uVar36 & 7)" ( (binary_expression "uVar36 & 7" identifier & number_literal) )))) ;) }))) }) while (parenthesized_expression "(uVar31 + iVar4 >> (uVar27 & 0x1f) == 0)" ( (binary_expression "uVar31 + iVar4 >> (uVar27 & 0x1f) == 0" (binary_expression "uVar31 + iVar4 >> (uVar27 & 0x1f)" (binary_expression "uVar31 + iVar4" identifier + identifier) >> (parenthesized_expression "(uVar27 & 0x1f)" ( (binary_expression "uVar27 & 0x1f" identifier & number_literal) ))) == number_literal) )) ;) (expression_statement "uVar36 = uVar36 & 7;" (assignment_expression "uVar36 = uVar36 & 7" identifier = (binary_expression "uVar36 & 7" identifier & number_literal)) ;) (expression_statement "iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU);" (assignment_expression "iVar10 = 1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU)" identifier = (binary_expression "1 << ((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU)" number_literal << (parenthesized_expression "((int)(8 - (uVar15 + 1)) >> 1 & 0x1fU)" ( (binary_expression "(int)(8 - (uVar15 + 1)) >> 1 & 0x1fU" (binary_expression "(int)(8 - (uVar15 + 1)) >> 1" (cast_expression "(int)(8 - (uVar15 + 1))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - (uVar15 + 1))" ( (binary_expression "8 - (uVar15 + 1)" number_literal - (parenthesized_expression "(uVar15 + 1)" ( (binary_expression "uVar15 + 1" identifier + number_literal) ))) ))) >> number_literal) & number_literal) )))) ;) (expression_statement "uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;" (assignment_expression "uVar31 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7" identifier = (binary_expression "(~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7" (binary_expression "(~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f)" (parenthesized_expression "(~uVar15 & 1)" ( (binary_expression "~uVar15 & 1" (unary_expression "~uVar15" ~ identifier) & number_literal) )) << (parenthesized_expression "(3U - ((int)uVar15 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uVar15 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar15 >> 1)" number_literal - (parenthesized_expression "((int)uVar15 >> 1)" ( (binary_expression "(int)uVar15 >> 1" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) ))) & number_literal)) ;) (if_statement "if (uVar15 < 3) {\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }" if (parenthesized_expression "(uVar15 < 3)" ( (binary_expression "uVar15 < 3" identifier < number_literal) )) (compound_statement "{\n                iStackY_f8 = 8;\n                goto LAB_000220c4;\n              }" { (expression_statement "iStackY_f8 = 8;" (assignment_expression "iStackY_f8 = 8" identifier = number_literal) ;) (goto_statement "goto LAB_000220c4;" goto statement_identifier ;) })) (expression_statement "iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);" (assignment_expression "iStackY_f8 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU)" identifier = (binary_expression "8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU)" number_literal >> (parenthesized_expression "((int)(uVar15 - 1) >> 1 & 0x1fU)" ( (binary_expression "(int)(uVar15 - 1) >> 1 & 0x1fU" (binary_expression "(int)(uVar15 - 1) >> 1" (cast_expression "(int)(uVar15 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) ))) >> number_literal) & number_literal) )))) ;) (expression_statement "iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];" (assignment_expression "iVar33 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2]" identifier = (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr_00->jmp_buf_local[0]" (field_expression "png_ptr_00->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ])) ;) (if_statement "if (iVar33 != 0) break;" if (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000222bc:\n              if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }" statement_identifier : (if_statement "if (uVar31 < uVar44) {\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }" if (parenthesized_expression "(uVar31 < uVar44)" ( (binary_expression "uVar31 < uVar44" identifier < identifier) )) (compound_statement "{\n                iVar33 = *(int *)(pcVar42 + 0x31450);\n                pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);\n                do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);\n              }" { (expression_statement "iVar33 = *(int *)(pcVar42 + 0x31450);" (assignment_expression "iVar33 = *(int *)(pcVar42 + 0x31450)" identifier = (pointer_expression "*(int *)(pcVar42 + 0x31450)" * (cast_expression "(int *)(pcVar42 + 0x31450)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x31450)" ( (binary_expression "pcVar42 + 0x31450" identifier + number_literal) ))))) ;) (expression_statement "pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4);" (assignment_expression "pbVar8 = (byte *)(iVar32 + uVar31 * iVar39 + iVar4)" identifier = (cast_expression "(byte *)(iVar32 + uVar31 * iVar39 + iVar4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar32 + uVar31 * iVar39 + iVar4)" ( (binary_expression "iVar32 + uVar31 * iVar39 + iVar4" (binary_expression "iVar32 + uVar31 * iVar39" identifier + (binary_expression "uVar31 * iVar39" identifier * identifier)) + identifier) )))) ;) (do_statement "do {\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                } while (uVar31 < uVar44);" do (compound_statement "{\n                  pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                  (**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);\n                  for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }\n                  uVar31 = uVar31 + iStackY_f8;\n                  pbVar8 = pbVar8 + iStackY_f8 * iVar39;\n                }" { (expression_statement "pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];" (assignment_expression "pbVar28 = (byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3]" identifier = (cast_expression "(byte *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr_00->jmp_buf_local[0]" (field_expression "png_ptr_00->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]))) ;) (expression_statement "(**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0);" (call_expression "(**(code **)(pcVar42 + 0x3168c))(puVar29,pbVar28,0)" (parenthesized_expression "(**(code **)(pcVar42 + 0x3168c))" ( (pointer_expression "**(code **)(pcVar42 + 0x3168c)" * (pointer_expression "*(code **)(pcVar42 + 0x3168c)" * (cast_expression "(code **)(pcVar42 + 0x3168c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x3168c)" ( (binary_expression "pcVar42 + 0x3168c" identifier + number_literal) ))))) )) (argument_list "(puVar29,pbVar28,0)" ( identifier , identifier , number_literal ))) ;) (for_statement "for (pbVar21 = pbVar8 + (uVar36 - iVar4); pbVar21 < pbVar8;\n                      pbVar21 = pbVar21 + iVar10) {\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }" for ( (assignment_expression "pbVar21 = pbVar8 + (uVar36 - iVar4)" identifier = (binary_expression "pbVar8 + (uVar36 - iVar4)" identifier + (parenthesized_expression "(uVar36 - iVar4)" ( (binary_expression "uVar36 - iVar4" identifier - identifier) )))) ; (binary_expression "pbVar21 < pbVar8" identifier < identifier) ; (assignment_expression "pbVar21 = pbVar21 + iVar10" identifier = (binary_expression "pbVar21 + iVar10" identifier + identifier)) ) (compound_statement "{\n                    uVar15 = (uint)pbVar28[1];\n                    if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }\n                    pbVar28 = pbVar28 + 2;\n                  }" { (expression_statement "uVar15 = (uint)pbVar28[1];" (assignment_expression "uVar15 = (uint)pbVar28[1]" identifier = (cast_expression "(uint)pbVar28[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar28[1]" identifier [ number_literal ]))) ;) (if_statement "if (uVar15 != 0) {\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n                      bVar13 = *pbVar28;\n                      if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }\n                      *pbVar21 = bVar13;\n                    }" { (expression_statement "bVar13 = *pbVar28;" (assignment_expression "bVar13 = *pbVar28" identifier = (pointer_expression "*pbVar28" * identifier)) ;) (if_statement "if (uVar15 != 0xff) {\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }" if (parenthesized_expression "(uVar15 != 0xff)" ( (binary_expression "uVar15 != 0xff" identifier != number_literal) )) (compound_statement "{\n                        uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;\n                        uVar27 = uVar15 >> 0xf;\n                        bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);\n                      }" { (expression_statement "uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15;" (assignment_expression "uVar15 = (uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15" identifier = (binary_expression "(uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15) +\n                                 *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15" (binary_expression "(uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2) * (0xff - uVar15)" (binary_expression "(uint)*(ushort *)(iVar33 + (uint)*pbVar21 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar33 + (uint)*pbVar21 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + (uint)*pbVar21 * 2)" ( (binary_expression "iVar33 + (uint)*pbVar21 * 2" identifier + (binary_expression "(uint)*pbVar21 * 2" (binary_expression "(uint)*pbVar21" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) * (parenthesized_expression "(0xff - uVar15)" ( (binary_expression "0xff - uVar15" number_literal - identifier) ))) + (binary_expression "*(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar15" (pointer_expression "*(ushort *)(iVar33 + (uint)bVar13 * 2)" * (cast_expression "(ushort *)(iVar33 + (uint)bVar13 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + (uint)bVar13 * 2)" ( (binary_expression "iVar33 + (uint)bVar13 * 2" identifier + (binary_expression "(uint)bVar13 * 2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) * identifier))) ;) (expression_statement "uVar27 = uVar15 >> 0xf;" (assignment_expression "uVar27 = uVar15 >> 0xf" identifier = (binary_expression "uVar15 >> 0xf" identifier >> number_literal)) ;) (expression_statement "bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8);" (assignment_expression "bVar13 = (byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8)" identifier = (call_expression "(byte)(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8)" ( (binary_expression "((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2) >> 8" (binary_expression "((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        ) + (uint)*(ushort *)(iVar22 + uVar27 * 2)" (parenthesized_expression "((uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc\n                                        )" ( (binary_expression "(uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27) >> 0xc" (binary_expression "(uVar15 & 0x7fff) * (uint)*(byte *)(iVar26 + uVar27)" (binary_expression "(uVar15 & 0x7fff) * (uint)" (parenthesized_expression "(uVar15 & 0x7fff)" ( (binary_expression "uVar15 & 0x7fff" identifier & number_literal) )) * (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar26 + uVar27)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar26 + uVar27)" ( (binary_expression "iVar26 + uVar27" identifier + identifier) )))) >> number_literal) )) + (binary_expression "(uint)*(ushort *)(iVar22 + uVar27 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar22 + uVar27 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar22 + uVar27 * 2)" ( (binary_expression "iVar22 + uVar27 * 2" identifier + (binary_expression "uVar27 * 2" identifier * number_literal)) ))))) >> number_literal) )))) ;) })) (expression_statement "*pbVar21 = bVar13;" (assignment_expression "*pbVar21 = bVar13" (pointer_expression "*pbVar21" * identifier) = identifier) ;) })) (expression_statement "pbVar28 = pbVar28 + 2;" (assignment_expression "pbVar28 = pbVar28 + 2" identifier = (binary_expression "pbVar28 + 2" identifier + number_literal)) ;) })) (expression_statement "uVar31 = uVar31 + iStackY_f8;" (assignment_expression "uVar31 = uVar31 + iStackY_f8" identifier = (binary_expression "uVar31 + iStackY_f8" identifier + identifier)) ;) (expression_statement "pbVar8 = pbVar8 + iStackY_f8 * iVar39;" (assignment_expression "pbVar8 = pbVar8 + iStackY_f8 * iVar39" identifier = (binary_expression "pbVar8 + iStackY_f8 * iVar39" identifier + (binary_expression "iStackY_f8 * iVar39" identifier * identifier))) ;) }) while (parenthesized_expression "(uVar31 < uVar44)" ( (binary_expression "uVar31 < uVar44" identifier < identifier) )) ;) }))) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (cVar14 == '\x10') {\n          iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = (uVar15 & 1) + 1;\n          uVar27 = uVar15 & 0x21 ^ 0x21;\n          iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;\n          uStackY_f4 = 1;\n          uVar36 = 0;\n          if (uVar31 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);\n          if (uVar36 < 2) {\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }\n          else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }\n          if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          } while( true );\n        }" if (parenthesized_expression "(cVar14 == '\x10')" ( (binary_expression "cVar14 == '\x10'" identifier == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n          iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];\n          iVar39 = (uVar15 & 1) + 1;\n          uVar27 = uVar15 & 0x21 ^ 0x21;\n          iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;\n          uStackY_f4 = 1;\n          uVar36 = 0;\n          if (uVar31 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);\n          if (uVar36 < 2) {\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }\n          else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }\n          if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          } while( true );\n        }" { (expression_statement "iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];" (assignment_expression "iVar22 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4]" identifier = (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr_00->jmp_buf_local[0]" (field_expression "png_ptr_00->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ])) ;) (expression_statement "iVar39 = (uVar15 & 1) + 1;" (assignment_expression "iVar39 = (uVar15 & 1) + 1" identifier = (binary_expression "(uVar15 & 1) + 1" (parenthesized_expression "(uVar15 & 1)" ( (binary_expression "uVar15 & 1" identifier & number_literal) )) + number_literal)) ;) (expression_statement "uVar27 = uVar15 & 0x21 ^ 0x21;" (assignment_expression "uVar27 = uVar15 & 0x21 ^ 0x21" identifier = (binary_expression "uVar15 & 0x21 ^ 0x21" (binary_expression "uVar15 & 0x21" identifier & number_literal) ^ number_literal)) ;) (expression_statement "iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;" (assignment_expression "iVar32 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2" identifier = (binary_expression "(png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2" (parenthesized_expression "(png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2)" ( (binary_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2" (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr_00->jmp_buf_local[0]" (field_expression "png_ptr_00->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) / number_literal) )) * number_literal)) ;) (expression_statement "uStackY_f4 = 1;" (assignment_expression "uStackY_f4 = 1" identifier = number_literal) ;) (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (if_statement "if (uVar31 != 1) goto LAB_00021ecc;" if (parenthesized_expression "(uVar31 != 1)" ( (binary_expression "uVar31 != 1" identifier != number_literal) )) (goto_statement "goto LAB_00021ecc;" goto statement_identifier ;)) (labeled_statement "LAB_00021e54:\n          uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);" statement_identifier : (expression_statement "uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f);" (assignment_expression "uVar7 = (uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f)" identifier = (binary_expression "(uVar36 & 1) << (3U - ((int)uStackY_f4 >> 1) & 0x1f)" (parenthesized_expression "(uVar36 & 1)" ( (binary_expression "uVar36 & 1" identifier & number_literal) )) << (parenthesized_expression "(3U - ((int)uStackY_f4 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uStackY_f4 >> 1) & 0x1f" (binary_expression "3U - ((int)uStackY_f4 >> 1)" number_literal - (parenthesized_expression "((int)uStackY_f4 >> 1)" ( (binary_expression "(int)uStackY_f4 >> 1" (cast_expression "(int)uStackY_f4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) )))) ;)) (if_statement "if (uVar36 < 2) {\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }\n          else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }" if (parenthesized_expression "(uVar36 < 2)" ( (binary_expression "uVar36 < 2" identifier < number_literal) )) (compound_statement "{\n            uVar31 = ~uVar7 & 7;\n            uVar23 = 3;\n          }" { (expression_statement "uVar31 = ~uVar7 & 7;" (assignment_expression "uVar31 = ~uVar7 & 7" identifier = (binary_expression "~uVar7 & 7" (unary_expression "~uVar7" ~ identifier) & number_literal)) ;) (expression_statement "uVar23 = 3;" (assignment_expression "uVar23 = 3" identifier = number_literal) ;) }) (else_clause "else {\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }" else (compound_statement "{\n            uVar23 = (int)(8 - uStackY_f4) >> 1;\n            uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);\n          }" { (expression_statement "uVar23 = (int)(8 - uStackY_f4) >> 1;" (assignment_expression "uVar23 = (int)(8 - uStackY_f4) >> 1" identifier = (binary_expression "(int)(8 - uStackY_f4) >> 1" (cast_expression "(int)(8 - uStackY_f4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - uStackY_f4)" ( (binary_expression "8 - uStackY_f4" number_literal - identifier) ))) >> number_literal)) ;) (expression_statement "uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7);" (assignment_expression "uVar31 = ((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7)" identifier = (binary_expression "((uVar31 << (uVar23 & 0x1f)) + -1) - (uVar7 & 7)" (parenthesized_expression "((uVar31 << (uVar23 & 0x1f)) + -1)" ( (binary_expression "(uVar31 << (uVar23 & 0x1f)) + -1" (parenthesized_expression "(uVar31 << (uVar23 & 0x1f))" ( (binary_expression "uVar31 << (uVar23 & 0x1f)" identifier << (parenthesized_expression "(uVar23 & 0x1f)" ( (binary_expression "uVar23 & 0x1f" identifier & number_literal) ))) )) + number_literal) )) - (parenthesized_expression "(uVar7 & 7)" ( (binary_expression "uVar7 & 7" identifier & number_literal) )))) ;) }))) (if_statement "if (uVar31 + iVar4 >> (uVar23 & 0x1f) != 0) {\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }" if (parenthesized_expression "(uVar31 + iVar4 >> (uVar23 & 0x1f) != 0)" ( (binary_expression "uVar31 + iVar4 >> (uVar23 & 0x1f) != 0" (binary_expression "uVar31 + iVar4 >> (uVar23 & 0x1f)" (binary_expression "uVar31 + iVar4" identifier + identifier) >> (parenthesized_expression "(uVar23 & 0x1f)" ( (binary_expression "uVar23 & 0x1f" identifier & number_literal) ))) != number_literal) )) (compound_statement "{\n            uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar7 & 7) * iVar39;\n            iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);\n            if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            iStackY_100 = 8;\n            goto LAB_00021edc;\n          }" { (expression_statement "uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7;" (assignment_expression "uVar31 = (~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7" identifier = (binary_expression "(~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f) & 7" (binary_expression "(~uVar36 & 1) << (3U - ((int)uVar36 >> 1) & 0x1f)" (parenthesized_expression "(~uVar36 & 1)" ( (binary_expression "~uVar36 & 1" (unary_expression "~uVar36" ~ identifier) & number_literal) )) << (parenthesized_expression "(3U - ((int)uVar36 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uVar36 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar36 >> 1)" number_literal - (parenthesized_expression "((int)uVar36 >> 1)" ( (binary_expression "(int)uVar36 >> 1" (cast_expression "(int)uVar36" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) ))) & number_literal)) ;) (expression_statement "iVar10 = (uVar7 & 7) * iVar39;" (assignment_expression "iVar10 = (uVar7 & 7) * iVar39" identifier = (binary_expression "(uVar7 & 7) * iVar39" (parenthesized_expression "(uVar7 & 7)" ( (binary_expression "uVar7 & 7" identifier & number_literal) )) * identifier)) ;) (expression_statement "iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU);" (assignment_expression "iVar26 = iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU)" identifier = (binary_expression "iVar39 << ((int)(8 - uStackY_f4) >> 1 & 0x1fU)" identifier << (parenthesized_expression "((int)(8 - uStackY_f4) >> 1 & 0x1fU)" ( (binary_expression "(int)(8 - uStackY_f4) >> 1 & 0x1fU" (binary_expression "(int)(8 - uStackY_f4) >> 1" (cast_expression "(int)(8 - uStackY_f4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - uStackY_f4)" ( (binary_expression "8 - uStackY_f4" number_literal - identifier) ))) >> number_literal) & number_literal) )))) ;) (if_statement "if (2 < uVar36) {\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }" if (parenthesized_expression "(2 < uVar36)" ( (binary_expression "2 < uVar36" number_literal < identifier) )) (compound_statement "{\n              iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }" { (expression_statement "iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU);" (assignment_expression "iStackY_100 = 8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU)" identifier = (binary_expression "8 >> ((int)(uVar36 - 1) >> 1 & 0x1fU)" number_literal >> (parenthesized_expression "((int)(uVar36 - 1) >> 1 & 0x1fU)" ( (binary_expression "(int)(uVar36 - 1) >> 1 & 0x1fU" (binary_expression "(int)(uVar36 - 1) >> 1" (cast_expression "(int)(uVar36 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar36 - 1)" ( (binary_expression "uVar36 - 1" identifier - number_literal) ))) >> number_literal) & number_literal) )))) ;) (goto_statement "goto LAB_00021edc;" goto statement_identifier ;) })) (expression_statement "iStackY_100 = 8;" (assignment_expression "iStackY_100 = 8" identifier = number_literal) ;) (goto_statement "goto LAB_00021edc;" goto statement_identifier ;) })) (do_statement "do {\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          } while( true );" do (compound_statement "{\n            if (uStackY_e8 == uStackY_f4) {\n              return;\n            }\n            while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }\n          }" { (if_statement "if (uStackY_e8 == uStackY_f4) {\n              return;\n            }" if (parenthesized_expression "(uStackY_e8 == uStackY_f4)" ( (binary_expression "uStackY_e8 == uStackY_f4" identifier == identifier) )) (compound_statement "{\n              return;\n            }" { (return_statement "return;" return ;) })) (while_statement "while( true ) {\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar31 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar7 = uStackY_f4 + 1;\n              uVar36 = uStackY_f4;\n              uStackY_f4 = uVar7;\n              if (uVar31 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar31 = 0;\n              iVar10 = 0;\n              iStackY_100 = 1;\n              iVar26 = iVar39;\nLAB_00021edc:\n              if (uVar44 <= uVar31) break;\n              puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n              uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;\n              pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);\n              if (uStackY_e8 == uStackY_f4) {\n                return;\n              }\n            }" { (expression_statement "uVar31 = (uint)*(byte *)(puVar29 + 0x7f);" (assignment_expression "uVar31 = (uint)*(byte *)(puVar29 + 0x7f)" identifier = (binary_expression "(uint)*(byte *)(puVar29 + 0x7f)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(puVar29 + 0x7f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x7f)" ( (binary_expression "puVar29 + 0x7f" identifier + number_literal) ))))) ;) (expression_statement "uVar7 = uStackY_f4 + 1;" (assignment_expression "uVar7 = uStackY_f4 + 1" identifier = (binary_expression "uStackY_f4 + 1" identifier + number_literal)) ;) (expression_statement "uVar36 = uStackY_f4;" (assignment_expression "uVar36 = uStackY_f4" identifier = identifier) ;) (expression_statement "uStackY_f4 = uVar7;" (assignment_expression "uStackY_f4 = uVar7" identifier = identifier) ;) (if_statement "if (uVar31 == 1) goto LAB_00021e54;" if (parenthesized_expression "(uVar31 == 1)" ( (binary_expression "uVar31 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00021e54;" goto statement_identifier ;)) (labeled_statement "LAB_00021ecc:\n              uVar31 = 0;" statement_identifier : (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;)) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "iStackY_100 = 1;" (assignment_expression "iStackY_100 = 1" identifier = number_literal) ;) (expression_statement "iVar26 = iVar39;" (assignment_expression "iVar26 = iVar39" identifier = identifier) ;) (labeled_statement "LAB_00021edc:\n              if (uVar44 <= uVar31) break;" statement_identifier : (if_statement "if (uVar44 <= uVar31) break;" if (parenthesized_expression "(uVar44 <= uVar31)" ( (binary_expression "uVar44 <= uVar31" identifier <= identifier) )) (break_statement "break;" break ;))) (expression_statement "puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];" (assignment_expression "puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3]" identifier = (cast_expression "(ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3]" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr_00->jmp_buf_local[0]" (field_expression "png_ptr_00->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]))) ;) (expression_statement "uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2;" (assignment_expression "uVar36 = iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2" identifier = (binary_expression "iVar22 + iVar32 * uVar31 + iVar4 * iVar39 * 2" (binary_expression "iVar22 + iVar32 * uVar31" identifier + (binary_expression "iVar32 * uVar31" identifier * identifier)) + (binary_expression "iVar4 * iVar39 * 2" (binary_expression "iVar4 * iVar39" identifier * identifier) * number_literal))) ;) (expression_statement "pcVar43 = *(code **)(pcVar42 + 0x3168c);" (assignment_expression "pcVar43 = *(code **)(pcVar42 + 0x3168c)" identifier = (pointer_expression "*(code **)(pcVar42 + 0x3168c)" * (cast_expression "(code **)(pcVar42 + 0x3168c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x3168c)" ( (binary_expression "pcVar42 + 0x3168c" identifier + number_literal) ))))) ;) (do_statement "do {\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              } while (uVar31 < uVar44);" do (compound_statement "{\n                (*pcVar43)(puVar29,puVar20,0);\n                puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];\n                puVar24 = puVar20;\n                for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }\n                uVar31 = uVar31 + iStackY_100;\n                uVar36 = uVar36 + iVar32 * iStackY_100;\n                pcVar43 = *(code **)(pcVar42 + 0x3168c);\n              }" { (expression_statement "(*pcVar43)(puVar29,puVar20,0);" (call_expression "(*pcVar43)(puVar29,puVar20,0)" (parenthesized_expression "(*pcVar43)" ( (pointer_expression "*pcVar43" * identifier) )) (argument_list "(puVar29,puVar20,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];" (assignment_expression "puVar20 = (ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3]" identifier = (cast_expression "(ushort *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3]" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs" (subscript_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf[0]" (field_expression "png_ptr_00->jmp_buf_local[0].__jmpbuf" (subscript_expression "png_ptr_00->jmp_buf_local[0]" (field_expression "png_ptr_00->jmp_buf_local" identifier -> field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) [ number_literal ]))) ;) (expression_statement "puVar24 = puVar20;" (assignment_expression "puVar24 = puVar20" identifier = identifier) ;) (for_statement "for (uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36; uVar7 < uVar36;\n                    uVar7 = uVar7 + iVar26 * 2) {\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }" for ( (assignment_expression "uVar7 = iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36" identifier = (binary_expression "iVar10 * 2 + iVar4 * iVar39 * -2 + uVar36" (binary_expression "iVar10 * 2 + iVar4 * iVar39 * -2" (binary_expression "iVar10 * 2" identifier * number_literal) + (binary_expression "iVar4 * iVar39 * -2" (binary_expression "iVar4 * iVar39" identifier * identifier) * number_literal)) + identifier)) ; (binary_expression "uVar7 < uVar36" identifier < identifier) ; (assignment_expression "uVar7 = uVar7 + iVar26 * 2" identifier = (binary_expression "uVar7 + iVar26 * 2" identifier + (binary_expression "iVar26 * 2" identifier * number_literal))) ) (compound_statement "{\n                  uVar2 = puVar24[1];\n                  uVar23 = (uint)uVar2;\n                  uVar11 = *puVar24;\n                  if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;\n                  if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }\n                  puVar24 = puVar24 + 2;\n                }" { (expression_statement "uVar2 = puVar24[1];" (assignment_expression "uVar2 = puVar24[1]" identifier = (subscript_expression "puVar24[1]" identifier [ number_literal ])) ;) (expression_statement "uVar23 = (uint)uVar2;" (assignment_expression "uVar23 = (uint)uVar2" identifier = (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar11 = *puVar24;" (assignment_expression "uVar11 = *puVar24" identifier = (pointer_expression "*puVar24" * identifier)) ;) (if_statement "if (uVar23 == 0) {\n                    uVar11 = 0;\n                  }\n                  else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (compound_statement "{\n                    uVar11 = 0;\n                  }" { (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) (else_clause "else if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }" else (if_statement "if (uVar23 != 0xffff) {\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }" if (parenthesized_expression "(uVar23 != 0xffff)" ( (binary_expression "uVar23 != 0xffff" identifier != number_literal) )) (compound_statement "{\n                    uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);\n                  }" { (expression_statement "uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10);" (assignment_expression "uVar11 = (ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10)" identifier = (call_expression "(ushort)((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10)" ( (binary_expression "(uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1) >> 0x10" (call_expression "(uint)((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1)" ( (binary_expression "(int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20) << 1" (cast_expression "(int)((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20)" ( (binary_expression "(ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001 >> 0x20" (binary_expression "(ulonglong)(uVar23 * uVar11 + 0x7fff) *\n                                                   0x80008001" (call_expression "(ulonglong)(uVar23 * uVar11 + 0x7fff)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar23 * uVar11 + 0x7fff)" ( (binary_expression "uVar23 * uVar11 + 0x7fff" (binary_expression "uVar23 * uVar11" identifier * identifier) + number_literal) ))) * number_literal) >> number_literal) ))) << number_literal) ))) >> number_literal) )))) ;) })))) (expression_statement "*(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11;" (assignment_expression "*(ushort *)((uint)(uVar27 == 0) * 2 + uVar7) = uVar11" (pointer_expression "*(ushort *)((uint)(uVar27 == 0) * 2 + uVar7)" * (cast_expression "(ushort *)((uint)(uVar27 == 0) * 2 + uVar7)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(uVar27 == 0) * 2 + uVar7)" ( (binary_expression "(uint)(uVar27 == 0) * 2 + uVar7" (binary_expression "(uint)(uVar27 == 0) * 2" (call_expression "(uint)(uVar27 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar27 == 0)" ( (binary_expression "uVar27 == 0" identifier == number_literal) ))) * number_literal) + identifier) )))) = identifier) ;) (if_statement "if ((uVar15 & 1) != 0) {\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }" if (parenthesized_expression "((uVar15 & 1) != 0)" ( (binary_expression "(uVar15 & 1) != 0" (parenthesized_expression "(uVar15 & 1)" ( (binary_expression "uVar15 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    *(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;\n                  }" { (expression_statement "*(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2;" (assignment_expression "*(ushort *)((uint)(uVar27 != 0) * 2 + uVar7) = uVar2" (pointer_expression "*(ushort *)((uint)(uVar27 != 0) * 2 + uVar7)" * (cast_expression "(ushort *)((uint)(uVar27 != 0) * 2 + uVar7)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(uVar27 != 0) * 2 + uVar7)" ( (binary_expression "(uint)(uVar27 != 0) * 2 + uVar7" (binary_expression "(uint)(uVar27 != 0) * 2" (call_expression "(uint)(uVar27 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar27 != 0)" ( (binary_expression "uVar27 != 0" identifier != number_literal) ))) * number_literal) + identifier) )))) = identifier) ;) })) (expression_statement "puVar24 = puVar24 + 2;" (assignment_expression "puVar24 = puVar24 + 2" identifier = (binary_expression "puVar24 + 2" identifier + number_literal)) ;) })) (expression_statement "uVar31 = uVar31 + iStackY_100;" (assignment_expression "uVar31 = uVar31 + iStackY_100" identifier = (binary_expression "uVar31 + iStackY_100" identifier + identifier)) ;) (expression_statement "uVar36 = uVar36 + iVar32 * iStackY_100;" (assignment_expression "uVar36 = uVar36 + iVar32 * iStackY_100" identifier = (binary_expression "uVar36 + iVar32 * iStackY_100" identifier + (binary_expression "iVar32 * iStackY_100" identifier * identifier))) ;) (expression_statement "pcVar43 = *(code **)(pcVar42 + 0x3168c);" (assignment_expression "pcVar43 = *(code **)(pcVar42 + 0x3168c)" identifier = (pointer_expression "*(code **)(pcVar42 + 0x3168c)" * (cast_expression "(code **)(pcVar42 + 0x3168c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x3168c)" ( (binary_expression "pcVar42 + 0x3168c" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(uVar31 < uVar44)" ( (binary_expression "uVar31 < uVar44" identifier < identifier) )) ;) (if_statement "if (uStackY_e8 == uStackY_f4) {\n                return;\n              }" if (parenthesized_expression "(uStackY_e8 == uStackY_f4)" ( (binary_expression "uStackY_e8 == uStackY_f4" identifier == identifier) )) (compound_statement "{\n                return;\n              }" { (return_statement "return;" return ;) })) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (goto_statement "goto LAB_00022438;" goto statement_identifier ;) })) (expression_statement "uStackY_e8 = 7;" (assignment_expression "uStackY_e8 = 7" identifier = number_literal) ;) (if_statement "if (uVar31 == 1) goto LAB_00021dd0;" if (parenthesized_expression "(uVar31 == 1)" ( (binary_expression "uVar31 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00021dd0;" goto statement_identifier ;)) (goto_statement "goto LAB_0002244c;" goto statement_identifier ;) })) }))) (expression_statement "(**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39 + -0x2b0);" (call_expression "(**(code **)(pcVar42 + 0x316f4))(puVar29,iVar39 + -0x2b0)" (parenthesized_expression "(**(code **)(pcVar42 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar42 + 0x316f4)" * (pointer_expression "*(code **)(pcVar42 + 0x316f4)" * (cast_expression "(code **)(pcVar42 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x316f4)" ( (binary_expression "pcVar42 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,iVar39 + -0x2b0)" ( identifier , (binary_expression "iVar39 + -0x2b0" identifier + number_literal) ))) ;) (labeled_statement "LAB_00022470:\n  pcVar43 = *(code **)(pcVar42 + 0x316f4);" statement_identifier : (expression_statement "pcVar43 = *(code **)(pcVar42 + 0x316f4);" (assignment_expression "pcVar43 = *(code **)(pcVar42 + 0x316f4)" identifier = (pointer_expression "*(code **)(pcVar42 + 0x316f4)" * (cast_expression "(code **)(pcVar42 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x316f4)" ( (binary_expression "pcVar42 + 0x316f4" identifier + number_literal) ))))) ;)) (expression_statement "(*pcVar43)(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2c8);" (call_expression "(*pcVar43)(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2c8)" (parenthesized_expression "(*pcVar43)" ( (pointer_expression "*pcVar43" * identifier) )) (argument_list "(puVar29,*(int *)(pcVar42 + 0x31304) + -0x2c8)" ( identifier , (binary_expression "*(int *)(pcVar42 + 0x31304) + -0x2c8" (pointer_expression "*(int *)(pcVar42 + 0x31304)" * (cast_expression "(int *)(pcVar42 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x31304)" ( (binary_expression "pcVar42 + 0x31304" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "puVar16 = (undefined4 *)*puVar29;" (assignment_expression "puVar16 = (undefined4 *)*puVar29" identifier = (cast_expression "(undefined4 *)*puVar29" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar29" * identifier))) ;) (expression_statement "arg = *(undefined4 **)*puVar16;" (assignment_expression "arg = *(undefined4 **)*puVar16" identifier = (pointer_expression "*(undefined4 **)*puVar16" * (cast_expression "(undefined4 **)*puVar16" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*puVar16" * identifier)))) ;) (expression_statement "cVar14 = *(char *)(arg + 0x7f);" (assignment_expression "cVar14 = *(char *)(arg + 0x7f)" identifier = (pointer_expression "*(char *)(arg + 0x7f)" * (cast_expression "(char *)(arg + 0x7f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(arg + 0x7f)" ( (binary_expression "arg + 0x7f" identifier + number_literal) ))))) ;) (if_statement "if (cVar14 == '\0') {\n    uStackY_154 = 1;\n  }\n  else {\n    uStackY_154 = 7;\n    if (cVar14 != '\x01') {\n      pcVar42 = *(code **)(pcVar43 + 0x30f88);\n      (*pcVar42)(arg,*(int *)(pcVar43 + 0x30b98) + -0x290);\n      paVar35 = (png_imagep)*arg;\n      ppVar34 = paVar35->opaque->png_ptr;\n      ppVar38 = paVar35->opaque->info_ptr;\n      png_image_skip_unused_chunks(ppVar34);\n      if (arg[10] == 0) {\n        iVar4 = (**(code **)(pcVar42 + 0x30c58))(ppVar34);\n      }\n      else {\n        iVar4 = 0;\n      }\n      (**(code **)(pcVar42 + 0x30d48))(ppVar34,ppVar38);\n      if ((uint)arg[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))();\n        return;\n      }\n      iVar32 = *(int *)(pcVar42 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260);\n        if (ppVar38->color_type != '\x03') {\n          iVar32 = *(int *)(pcVar42 + 0x3084c);\n          if (ppVar38->color_type != '\0') goto LAB_00022980;\n        }\n        iVar32 = *(int *)(pcVar42 + 0x3084c);\n        if (ppVar38->bit_depth == '\b') {\n          iVar39 = arg[2];\n          iVar32 = arg[1];\n          if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }\n          arg[6] = iVar32;\n          arg[7] = iVar39;\n          if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }\n          while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }\n          return;\n        }\n      } while( true );\n    }\n  }" if (parenthesized_expression "(cVar14 == '\0')" ( (binary_expression "cVar14 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    uStackY_154 = 1;\n  }" { (expression_statement "uStackY_154 = 1;" (assignment_expression "uStackY_154 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    uStackY_154 = 7;\n    if (cVar14 != '\x01') {\n      pcVar42 = *(code **)(pcVar43 + 0x30f88);\n      (*pcVar42)(arg,*(int *)(pcVar43 + 0x30b98) + -0x290);\n      paVar35 = (png_imagep)*arg;\n      ppVar34 = paVar35->opaque->png_ptr;\n      ppVar38 = paVar35->opaque->info_ptr;\n      png_image_skip_unused_chunks(ppVar34);\n      if (arg[10] == 0) {\n        iVar4 = (**(code **)(pcVar42 + 0x30c58))(ppVar34);\n      }\n      else {\n        iVar4 = 0;\n      }\n      (**(code **)(pcVar42 + 0x30d48))(ppVar34,ppVar38);\n      if ((uint)arg[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))();\n        return;\n      }\n      iVar32 = *(int *)(pcVar42 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260);\n        if (ppVar38->color_type != '\x03') {\n          iVar32 = *(int *)(pcVar42 + 0x3084c);\n          if (ppVar38->color_type != '\0') goto LAB_00022980;\n        }\n        iVar32 = *(int *)(pcVar42 + 0x3084c);\n        if (ppVar38->bit_depth == '\b') {\n          iVar39 = arg[2];\n          iVar32 = arg[1];\n          if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }\n          arg[6] = iVar32;\n          arg[7] = iVar39;\n          if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }\n          while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }\n          return;\n        }\n      } while( true );\n    }\n  }" else (compound_statement "{\n    uStackY_154 = 7;\n    if (cVar14 != '\x01') {\n      pcVar42 = *(code **)(pcVar43 + 0x30f88);\n      (*pcVar42)(arg,*(int *)(pcVar43 + 0x30b98) + -0x290);\n      paVar35 = (png_imagep)*arg;\n      ppVar34 = paVar35->opaque->png_ptr;\n      ppVar38 = paVar35->opaque->info_ptr;\n      png_image_skip_unused_chunks(ppVar34);\n      if (arg[10] == 0) {\n        iVar4 = (**(code **)(pcVar42 + 0x30c58))(ppVar34);\n      }\n      else {\n        iVar4 = 0;\n      }\n      (**(code **)(pcVar42 + 0x30d48))(ppVar34,ppVar38);\n      if ((uint)arg[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))();\n        return;\n      }\n      iVar32 = *(int *)(pcVar42 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260);\n        if (ppVar38->color_type != '\x03') {\n          iVar32 = *(int *)(pcVar42 + 0x3084c);\n          if (ppVar38->color_type != '\0') goto LAB_00022980;\n        }\n        iVar32 = *(int *)(pcVar42 + 0x3084c);\n        if (ppVar38->bit_depth == '\b') {\n          iVar39 = arg[2];\n          iVar32 = arg[1];\n          if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }\n          arg[6] = iVar32;\n          arg[7] = iVar39;\n          if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }\n          while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }\n          return;\n        }\n      } while( true );\n    }\n  }" { (expression_statement "uStackY_154 = 7;" (assignment_expression "uStackY_154 = 7" identifier = number_literal) ;) (if_statement "if (cVar14 != '\x01') {\n      pcVar42 = *(code **)(pcVar43 + 0x30f88);\n      (*pcVar42)(arg,*(int *)(pcVar43 + 0x30b98) + -0x290);\n      paVar35 = (png_imagep)*arg;\n      ppVar34 = paVar35->opaque->png_ptr;\n      ppVar38 = paVar35->opaque->info_ptr;\n      png_image_skip_unused_chunks(ppVar34);\n      if (arg[10] == 0) {\n        iVar4 = (**(code **)(pcVar42 + 0x30c58))(ppVar34);\n      }\n      else {\n        iVar4 = 0;\n      }\n      (**(code **)(pcVar42 + 0x30d48))(ppVar34,ppVar38);\n      if ((uint)arg[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))();\n        return;\n      }\n      iVar32 = *(int *)(pcVar42 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260);\n        if (ppVar38->color_type != '\x03') {\n          iVar32 = *(int *)(pcVar42 + 0x3084c);\n          if (ppVar38->color_type != '\0') goto LAB_00022980;\n        }\n        iVar32 = *(int *)(pcVar42 + 0x3084c);\n        if (ppVar38->bit_depth == '\b') {\n          iVar39 = arg[2];\n          iVar32 = arg[1];\n          if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }\n          arg[6] = iVar32;\n          arg[7] = iVar39;\n          if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }\n          while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }\n          return;\n        }\n      } while( true );\n    }" if (parenthesized_expression "(cVar14 != '\x01')" ( (binary_expression "cVar14 != '\x01'" identifier != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar42 = *(code **)(pcVar43 + 0x30f88);\n      (*pcVar42)(arg,*(int *)(pcVar43 + 0x30b98) + -0x290);\n      paVar35 = (png_imagep)*arg;\n      ppVar34 = paVar35->opaque->png_ptr;\n      ppVar38 = paVar35->opaque->info_ptr;\n      png_image_skip_unused_chunks(ppVar34);\n      if (arg[10] == 0) {\n        iVar4 = (**(code **)(pcVar42 + 0x30c58))(ppVar34);\n      }\n      else {\n        iVar4 = 0;\n      }\n      (**(code **)(pcVar42 + 0x30d48))(ppVar34,ppVar38);\n      if ((uint)arg[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))();\n        return;\n      }\n      iVar32 = *(int *)(pcVar42 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260);\n        if (ppVar38->color_type != '\x03') {\n          iVar32 = *(int *)(pcVar42 + 0x3084c);\n          if (ppVar38->color_type != '\0') goto LAB_00022980;\n        }\n        iVar32 = *(int *)(pcVar42 + 0x3084c);\n        if (ppVar38->bit_depth == '\b') {\n          iVar39 = arg[2];\n          iVar32 = arg[1];\n          if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }\n          arg[6] = iVar32;\n          arg[7] = iVar39;\n          if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }\n          while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }\n          return;\n        }\n      } while( true );\n    }" { (expression_statement "pcVar42 = *(code **)(pcVar43 + 0x30f88);" (assignment_expression "pcVar42 = *(code **)(pcVar43 + 0x30f88)" identifier = (pointer_expression "*(code **)(pcVar43 + 0x30f88)" * (cast_expression "(code **)(pcVar43 + 0x30f88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar43 + 0x30f88)" ( (binary_expression "pcVar43 + 0x30f88" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar42)(arg,*(int *)(pcVar43 + 0x30b98) + -0x290);" (call_expression "(*pcVar42)(arg,*(int *)(pcVar43 + 0x30b98) + -0x290)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(arg,*(int *)(pcVar43 + 0x30b98) + -0x290)" ( identifier , (binary_expression "*(int *)(pcVar43 + 0x30b98) + -0x290" (pointer_expression "*(int *)(pcVar43 + 0x30b98)" * (cast_expression "(int *)(pcVar43 + 0x30b98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar43 + 0x30b98)" ( (binary_expression "pcVar43 + 0x30b98" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "paVar35 = (png_imagep)*arg;" (assignment_expression "paVar35 = (png_imagep)*arg" identifier = (binary_expression "(png_imagep)*arg" (parenthesized_expression "(png_imagep)" ( identifier )) * identifier)) ;) (expression_statement "ppVar34 = paVar35->opaque->png_ptr;" (assignment_expression "ppVar34 = paVar35->opaque->png_ptr" identifier = (field_expression "paVar35->opaque->png_ptr" (field_expression "paVar35->opaque" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "ppVar38 = paVar35->opaque->info_ptr;" (assignment_expression "ppVar38 = paVar35->opaque->info_ptr" identifier = (field_expression "paVar35->opaque->info_ptr" (field_expression "paVar35->opaque" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "png_image_skip_unused_chunks(ppVar34);" (call_expression "png_image_skip_unused_chunks(ppVar34)" identifier (argument_list "(ppVar34)" ( identifier ))) ;) (if_statement "if (arg[10] == 0) {\n        iVar4 = (**(code **)(pcVar42 + 0x30c58))(ppVar34);\n      }\n      else {\n        iVar4 = 0;\n      }" if (parenthesized_expression "(arg[10] == 0)" ( (binary_expression "arg[10] == 0" (subscript_expression "arg[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        iVar4 = (**(code **)(pcVar42 + 0x30c58))(ppVar34);\n      }" { (expression_statement "iVar4 = (**(code **)(pcVar42 + 0x30c58))(ppVar34);" (assignment_expression "iVar4 = (**(code **)(pcVar42 + 0x30c58))(ppVar34)" identifier = (call_expression "(**(code **)(pcVar42 + 0x30c58))(ppVar34)" (parenthesized_expression "(**(code **)(pcVar42 + 0x30c58))" ( (pointer_expression "**(code **)(pcVar42 + 0x30c58)" * (pointer_expression "*(code **)(pcVar42 + 0x30c58)" * (cast_expression "(code **)(pcVar42 + 0x30c58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x30c58)" ( (binary_expression "pcVar42 + 0x30c58" identifier + number_literal) ))))) )) (argument_list "(ppVar34)" ( identifier )))) ;) }) (else_clause "else {\n        iVar4 = 0;\n      }" else (compound_statement "{\n        iVar4 = 0;\n      }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) }))) (expression_statement "(**(code **)(pcVar42 + 0x30d48))(ppVar34,ppVar38);" (call_expression "(**(code **)(pcVar42 + 0x30d48))(ppVar34,ppVar38)" (parenthesized_expression "(**(code **)(pcVar42 + 0x30d48))" ( (pointer_expression "**(code **)(pcVar42 + 0x30d48)" * (pointer_expression "*(code **)(pcVar42 + 0x30d48)" * (cast_expression "(code **)(pcVar42 + 0x30d48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x30d48)" ( (binary_expression "pcVar42 + 0x30d48" identifier + number_literal) ))))) )) (argument_list "(ppVar34,ppVar38)" ( identifier , identifier ))) ;) (if_statement "if ((uint)arg[10] < 5) {\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))();\n        return;\n      }" if (parenthesized_expression "((uint)arg[10] < 5)" ( (binary_expression "(uint)arg[10] < 5" (cast_expression "(uint)arg[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "arg[10]" identifier [ number_literal ])) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))();\n        return;\n      }" { comment comment (expression_statement "(*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))();" (call_expression "(*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))()" (parenthesized_expression "(*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820))" ( (pointer_expression "*(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820)" * (parenthesized_expression "(pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820)" ( (binary_expression "pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4) + 0x38820" (binary_expression "pcVar42 + *(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4)" identifier + (pointer_expression "*(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4)" * (cast_expression "(int *)(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4)" ( (binary_expression "*(int *)(pcVar42 + 0x3084c) + 0x164 + arg[10] * 4" (binary_expression "*(int *)(pcVar42 + 0x3084c) + 0x164" (pointer_expression "*(int *)(pcVar42 + 0x3084c)" * (cast_expression "(int *)(pcVar42 + 0x3084c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x3084c)" ( (binary_expression "pcVar42 + 0x3084c" identifier + number_literal) )))) + number_literal) + (binary_expression "arg[10] * 4" (subscript_expression "arg[10]" identifier [ number_literal ]) * number_literal)) ))))) + number_literal) ))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "iVar32 = *(int *)(pcVar42 + 0x3084c);" (assignment_expression "iVar32 = *(int *)(pcVar42 + 0x3084c)" identifier = (pointer_expression "*(int *)(pcVar42 + 0x3084c)" * (cast_expression "(int *)(pcVar42 + 0x3084c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x3084c)" ( (binary_expression "pcVar42 + 0x3084c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00022980:\n      do {\n        (**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260);\n        if (ppVar38->color_type != '\x03') {\n          iVar32 = *(int *)(pcVar42 + 0x3084c);\n          if (ppVar38->color_type != '\0') goto LAB_00022980;\n        }\n        iVar32 = *(int *)(pcVar42 + 0x3084c);\n        if (ppVar38->bit_depth == '\b') {\n          iVar39 = arg[2];\n          iVar32 = arg[1];\n          if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }\n          arg[6] = iVar32;\n          arg[7] = iVar39;\n          if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }\n          while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }\n          return;\n        }\n      } while( true );" statement_identifier : (do_statement "do {\n        (**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260);\n        if (ppVar38->color_type != '\x03') {\n          iVar32 = *(int *)(pcVar42 + 0x3084c);\n          if (ppVar38->color_type != '\0') goto LAB_00022980;\n        }\n        iVar32 = *(int *)(pcVar42 + 0x3084c);\n        if (ppVar38->bit_depth == '\b') {\n          iVar39 = arg[2];\n          iVar32 = arg[1];\n          if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }\n          arg[6] = iVar32;\n          arg[7] = iVar39;\n          if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }\n          while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }\n          return;\n        }\n      } while( true );" do (compound_statement "{\n        (**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260);\n        if (ppVar38->color_type != '\x03') {\n          iVar32 = *(int *)(pcVar42 + 0x3084c);\n          if (ppVar38->color_type != '\0') goto LAB_00022980;\n        }\n        iVar32 = *(int *)(pcVar42 + 0x3084c);\n        if (ppVar38->bit_depth == '\b') {\n          iVar39 = arg[2];\n          iVar32 = arg[1];\n          if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }\n          arg[6] = iVar32;\n          arg[7] = iVar39;\n          if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }\n          while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }\n          return;\n        }\n      }" { (expression_statement "(**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260);" (call_expression "(**(code **)(pcVar42 + 0x30c3c))(ppVar34,iVar32 + -0x260)" (parenthesized_expression "(**(code **)(pcVar42 + 0x30c3c))" ( (pointer_expression "**(code **)(pcVar42 + 0x30c3c)" * (pointer_expression "*(code **)(pcVar42 + 0x30c3c)" * (cast_expression "(code **)(pcVar42 + 0x30c3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x30c3c)" ( (binary_expression "pcVar42 + 0x30c3c" identifier + number_literal) ))))) )) (argument_list "(ppVar34,iVar32 + -0x260)" ( identifier , (binary_expression "iVar32 + -0x260" identifier + number_literal) ))) ;) (if_statement "if (ppVar38->color_type != '\x03') {\n          iVar32 = *(int *)(pcVar42 + 0x3084c);\n          if (ppVar38->color_type != '\0') goto LAB_00022980;\n        }" if (parenthesized_expression "(ppVar38->color_type != '\x03')" ( (binary_expression "ppVar38->color_type != '\x03'" (field_expression "ppVar38->color_type" identifier -> field_identifier) != (char_literal "'\x03'" ' escape_sequence ')) )) (compound_statement "{\n          iVar32 = *(int *)(pcVar42 + 0x3084c);\n          if (ppVar38->color_type != '\0') goto LAB_00022980;\n        }" { (expression_statement "iVar32 = *(int *)(pcVar42 + 0x3084c);" (assignment_expression "iVar32 = *(int *)(pcVar42 + 0x3084c)" identifier = (pointer_expression "*(int *)(pcVar42 + 0x3084c)" * (cast_expression "(int *)(pcVar42 + 0x3084c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x3084c)" ( (binary_expression "pcVar42 + 0x3084c" identifier + number_literal) ))))) ;) (if_statement "if (ppVar38->color_type != '\0') goto LAB_00022980;" if (parenthesized_expression "(ppVar38->color_type != '\0')" ( (binary_expression "ppVar38->color_type != '\0'" (field_expression "ppVar38->color_type" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00022980;" goto statement_identifier ;)) })) (expression_statement "iVar32 = *(int *)(pcVar42 + 0x3084c);" (assignment_expression "iVar32 = *(int *)(pcVar42 + 0x3084c)" identifier = (pointer_expression "*(int *)(pcVar42 + 0x3084c)" * (cast_expression "(int *)(pcVar42 + 0x3084c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x3084c)" ( (binary_expression "pcVar42 + 0x3084c" identifier + number_literal) ))))) ;) (if_statement "if (ppVar38->bit_depth == '\b') {\n          iVar39 = arg[2];\n          iVar32 = arg[1];\n          if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }\n          arg[6] = iVar32;\n          arg[7] = iVar39;\n          if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }\n          while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }\n          return;\n        }" if (parenthesized_expression "(ppVar38->bit_depth == '\b')" ( (binary_expression "ppVar38->bit_depth == '\b'" (field_expression "ppVar38->bit_depth" identifier -> field_identifier) == (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n          iVar39 = arg[2];\n          iVar32 = arg[1];\n          if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }\n          arg[6] = iVar32;\n          arg[7] = iVar39;\n          if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }\n          while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }\n          return;\n        }" { (expression_statement "iVar39 = arg[2];" (assignment_expression "iVar39 = arg[2]" identifier = (subscript_expression "arg[2]" identifier [ number_literal ])) ;) (expression_statement "iVar32 = arg[1];" (assignment_expression "iVar32 = arg[1]" identifier = (subscript_expression "arg[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar39 < 0) {\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }" if (parenthesized_expression "(iVar39 < 0)" ( (binary_expression "iVar39 < 0" identifier < number_literal) )) (compound_statement "{\n            iVar32 = iVar32 - iVar39 * (paVar35->height - 1);\n          }" { (expression_statement "iVar32 = iVar32 - iVar39 * (paVar35->height - 1);" (assignment_expression "iVar32 = iVar32 - iVar39 * (paVar35->height - 1)" identifier = (binary_expression "iVar32 - iVar39 * (paVar35->height - 1)" identifier - (binary_expression "iVar39 * (paVar35->height - 1)" identifier * (parenthesized_expression "(paVar35->height - 1)" ( (binary_expression "paVar35->height - 1" (field_expression "paVar35->height" identifier -> field_identifier) - number_literal) ))))) ;) })) (expression_statement "arg[6] = iVar32;" (assignment_expression "arg[6] = iVar32" (subscript_expression "arg[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "arg[7] = iVar39;" (assignment_expression "arg[7] = iVar39" (subscript_expression "arg[7]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar4 == 0) {\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);\n            uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);\n            arg[5] = uVar19;\n            png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);\n            pcVar42 = *(code **)(pcVar42 + 0x30b54);\n            arg[5] = 0;\n            (*pcVar42)(ppVar34,uVar19);\n            return;\n          }" { (expression_statement "uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38);" (assignment_expression "uVar19 = (**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38)" identifier = (call_expression "(**(code **)(pcVar42 + 0x30d3c))(ppVar34,ppVar38)" (parenthesized_expression "(**(code **)(pcVar42 + 0x30d3c))" ( (pointer_expression "**(code **)(pcVar42 + 0x30d3c)" * (pointer_expression "*(code **)(pcVar42 + 0x30d3c)" * (cast_expression "(code **)(pcVar42 + 0x30d3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x30d3c)" ( (binary_expression "pcVar42 + 0x30d3c" identifier + number_literal) ))))) )) (argument_list "(ppVar34,ppVar38)" ( identifier , identifier )))) ;) (expression_statement "uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19);" (assignment_expression "uVar19 = (**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19)" identifier = (call_expression "(**(code **)(pcVar42 + 0x30b38))(ppVar34,uVar19)" (parenthesized_expression "(**(code **)(pcVar42 + 0x30b38))" ( (pointer_expression "**(code **)(pcVar42 + 0x30b38)" * (pointer_expression "*(code **)(pcVar42 + 0x30b38)" * (cast_expression "(code **)(pcVar42 + 0x30b38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x30b38)" ( (binary_expression "pcVar42 + 0x30b38" identifier + number_literal) ))))) )) (argument_list "(ppVar34,uVar19)" ( identifier , identifier )))) ;) (expression_statement "arg[5] = uVar19;" (assignment_expression "arg[5] = uVar19" (subscript_expression "arg[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg);" (call_expression "png_safe_execute(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg)" identifier (argument_list "(paVar35,(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0),\n                             arg)" ( identifier , (cast_expression "(_func_int_png_voidp *)(*(int *)(pcVar42 + 0x308a0) + 0x2aa0)" ( (type_descriptor "_func_int_png_voidp *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar42 + 0x308a0) + 0x2aa0)" ( (binary_expression "*(int *)(pcVar42 + 0x308a0) + 0x2aa0" (pointer_expression "*(int *)(pcVar42 + 0x308a0)" * (cast_expression "(int *)(pcVar42 + 0x308a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar42 + 0x308a0)" ( (binary_expression "pcVar42 + 0x308a0" identifier + number_literal) )))) + number_literal) ))) , identifier ))) ;) (expression_statement "pcVar42 = *(code **)(pcVar42 + 0x30b54);" (assignment_expression "pcVar42 = *(code **)(pcVar42 + 0x30b54)" identifier = (pointer_expression "*(code **)(pcVar42 + 0x30b54)" * (cast_expression "(code **)(pcVar42 + 0x30b54)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x30b54)" ( (binary_expression "pcVar42 + 0x30b54" identifier + number_literal) ))))) ;) (expression_statement "arg[5] = 0;" (assignment_expression "arg[5] = 0" (subscript_expression "arg[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "(*pcVar42)(ppVar34,uVar19);" (call_expression "(*pcVar42)(ppVar34,uVar19)" (parenthesized_expression "(*pcVar42)" ( (pointer_expression "*pcVar42" * identifier) )) (argument_list "(ppVar34,uVar19)" ( identifier , identifier ))) ;) (return_statement "return;" return ;) })) (while_statement "while (iVar4 = iVar4 + -1, -1 < iVar4) {\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }" while (parenthesized_expression "(iVar4 = iVar4 + -1, -1 < iVar4)" ( (comma_expression "iVar4 = iVar4 + -1, -1 < iVar4" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) , (binary_expression "-1 < iVar4" number_literal < identifier)) )) (compound_statement "{\n            iVar32 = arg[6];\n            for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }\n          }" { (expression_statement "iVar32 = arg[6];" (assignment_expression "iVar32 = arg[6]" identifier = (subscript_expression "arg[6]" identifier [ number_literal ])) ;) (for_statement "for (pVar6 = paVar35->height; pVar6 != 0; pVar6 = pVar6 - 1) {\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }" for ( (assignment_expression "pVar6 = paVar35->height" identifier = (field_expression "paVar35->height" identifier -> field_identifier)) ; (binary_expression "pVar6 != 0" identifier != number_literal) ; (assignment_expression "pVar6 = pVar6 - 1" identifier = (binary_expression "pVar6 - 1" identifier - number_literal)) ) (compound_statement "{\n              (**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);\n              iVar32 = iVar32 + iVar39;\n            }" { (expression_statement "(**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0);" (call_expression "(**(code **)(pcVar42 + 0x30bd4))(ppVar34,iVar32,0)" (parenthesized_expression "(**(code **)(pcVar42 + 0x30bd4))" ( (pointer_expression "**(code **)(pcVar42 + 0x30bd4)" * (pointer_expression "*(code **)(pcVar42 + 0x30bd4)" * (cast_expression "(code **)(pcVar42 + 0x30bd4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar42 + 0x30bd4)" ( (binary_expression "pcVar42 + 0x30bd4" identifier + number_literal) ))))) )) (argument_list "(ppVar34,iVar32,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "iVar32 = iVar32 + iVar39;" (assignment_expression "iVar32 = iVar32 + iVar39" identifier = (binary_expression "iVar32 + iVar39" identifier + identifier)) ;) })) })) (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })) }))) (expression_statement "uVar44 = puVar16[3];" (assignment_expression "uVar44 = puVar16[3]" identifier = (subscript_expression "puVar16[3]" identifier [ number_literal ])) ;) (expression_statement "iVar32 = puVar16[2];" (assignment_expression "iVar32 = puVar16[2]" identifier = (subscript_expression "puVar16[2]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = puVar29[7];" (assignment_expression "iVar4 = puVar29[7]" identifier = (subscript_expression "puVar29[7]" identifier [ number_literal ])) ;) (if_statement "if ((puVar16[4] & 2) == 0) {\n    iVar39 = 1;\n    iStackY_15c = iVar32;\n  }\n  else {\n    iVar39 = 3;\n    iStackY_15c = iVar32 * 3;\n  }" if (parenthesized_expression "((puVar16[4] & 2) == 0)" ( (binary_expression "(puVar16[4] & 2) == 0" (parenthesized_expression "(puVar16[4] & 2)" ( (binary_expression "puVar16[4] & 2" (subscript_expression "puVar16[4]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar39 = 1;\n    iStackY_15c = iVar32;\n  }" { (expression_statement "iVar39 = 1;" (assignment_expression "iVar39 = 1" identifier = number_literal) ;) (expression_statement "iStackY_15c = iVar32;" (assignment_expression "iStackY_15c = iVar32" identifier = identifier) ;) }) (else_clause "else {\n    iVar39 = 3;\n    iStackY_15c = iVar32 * 3;\n  }" else (compound_statement "{\n    iVar39 = 3;\n    iStackY_15c = iVar32 * 3;\n  }" { (expression_statement "iVar39 = 3;" (assignment_expression "iVar39 = 3" identifier = number_literal) ;) (expression_statement "iStackY_15c = iVar32 * 3;" (assignment_expression "iStackY_15c = iVar32 * 3" identifier = (binary_expression "iVar32 * 3" identifier * number_literal)) ;) }))) (expression_statement "iVar26 = *(int *)(pcVar43 + 0x30ce4);" (assignment_expression "iVar26 = *(int *)(pcVar43 + 0x30ce4)" identifier = (pointer_expression "*(int *)(pcVar43 + 0x30ce4)" * (cast_expression "(int *)(pcVar43 + 0x30ce4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar43 + 0x30ce4)" ( (binary_expression "pcVar43 + 0x30ce4" identifier + number_literal) ))))) ;) (expression_statement "iVar22 = *(int *)(pcVar43 + 0x30ce8);" (assignment_expression "iVar22 = *(int *)(pcVar43 + 0x30ce8)" identifier = (pointer_expression "*(int *)(pcVar43 + 0x30ce8)" * (cast_expression "(int *)(pcVar43 + 0x30ce8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar43 + 0x30ce8)" ( (binary_expression "pcVar43 + 0x30ce8" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (do_statement "do {\n    uVar31 = uVar15 + 1;\n    if (cVar14 == '\x01') {\n      uVar36 = (uVar15 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f);\n      if (uVar15 < 2) {\n        uVar27 = ~uVar36 & 7;\n        uVar7 = 3;\n      }\n      else {\n        uVar7 = (int)(8 - uVar31) >> 1;\n        uVar27 = ((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7);\n      }\n      if (uVar27 + iVar32 >> (uVar7 & 0x1f) != 0) {\n        iStackY_164 = (uVar36 & 7) * iVar39;\n        iVar10 = iVar39 << ((int)(8 - uVar31) >> 1 & 0x1fU);\n        uVar36 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n        if (uVar15 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar36 = 0;\n      iStackY_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar39;\nLAB_000225b8:\n      if (uVar36 < uVar44) {\n        iVar30 = uVar36 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);\n          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);\n          if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }\nLAB_000226d4:\n          uVar36 = uVar36 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar36 < uVar44);\n      }\n    }\n    if (uStackY_154 == uVar31) {\n      return;\n    }\n    cVar14 = *(char *)(arg + 0x7f);\n    uVar15 = uVar31;\n  } while( true );" do (compound_statement "{\n    uVar31 = uVar15 + 1;\n    if (cVar14 == '\x01') {\n      uVar36 = (uVar15 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f);\n      if (uVar15 < 2) {\n        uVar27 = ~uVar36 & 7;\n        uVar7 = 3;\n      }\n      else {\n        uVar7 = (int)(8 - uVar31) >> 1;\n        uVar27 = ((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7);\n      }\n      if (uVar27 + iVar32 >> (uVar7 & 0x1f) != 0) {\n        iStackY_164 = (uVar36 & 7) * iVar39;\n        iVar10 = iVar39 << ((int)(8 - uVar31) >> 1 & 0x1fU);\n        uVar36 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n        if (uVar15 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar36 = 0;\n      iStackY_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar39;\nLAB_000225b8:\n      if (uVar36 < uVar44) {\n        iVar30 = uVar36 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);\n          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);\n          if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }\nLAB_000226d4:\n          uVar36 = uVar36 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar36 < uVar44);\n      }\n    }\n    if (uStackY_154 == uVar31) {\n      return;\n    }\n    cVar14 = *(char *)(arg + 0x7f);\n    uVar15 = uVar31;\n  }" { (expression_statement "uVar31 = uVar15 + 1;" (assignment_expression "uVar31 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (if_statement "if (cVar14 == '\x01') {\n      uVar36 = (uVar15 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f);\n      if (uVar15 < 2) {\n        uVar27 = ~uVar36 & 7;\n        uVar7 = 3;\n      }\n      else {\n        uVar7 = (int)(8 - uVar31) >> 1;\n        uVar27 = ((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7);\n      }\n      if (uVar27 + iVar32 >> (uVar7 & 0x1f) != 0) {\n        iStackY_164 = (uVar36 & 7) * iVar39;\n        iVar10 = iVar39 << ((int)(8 - uVar31) >> 1 & 0x1fU);\n        uVar36 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n        if (uVar15 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar36 = 0;\n      iStackY_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar39;\nLAB_000225b8:\n      if (uVar36 < uVar44) {\n        iVar30 = uVar36 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);\n          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);\n          if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }\nLAB_000226d4:\n          uVar36 = uVar36 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar36 < uVar44);\n      }\n    }" if (parenthesized_expression "(cVar14 == '\x01')" ( (binary_expression "cVar14 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      uVar36 = (uVar15 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f);\n      if (uVar15 < 2) {\n        uVar27 = ~uVar36 & 7;\n        uVar7 = 3;\n      }\n      else {\n        uVar7 = (int)(8 - uVar31) >> 1;\n        uVar27 = ((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7);\n      }\n      if (uVar27 + iVar32 >> (uVar7 & 0x1f) != 0) {\n        iStackY_164 = (uVar36 & 7) * iVar39;\n        iVar10 = iVar39 << ((int)(8 - uVar31) >> 1 & 0x1fU);\n        uVar36 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n        if (uVar15 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }" { (expression_statement "uVar36 = (uVar15 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f);" (assignment_expression "uVar36 = (uVar15 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f)" identifier = (binary_expression "(uVar15 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f)" (parenthesized_expression "(uVar15 & 1)" ( (binary_expression "uVar15 & 1" identifier & number_literal) )) << (parenthesized_expression "(3U - ((int)uVar31 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uVar31 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar31 >> 1)" number_literal - (parenthesized_expression "((int)uVar31 >> 1)" ( (binary_expression "(int)uVar31 >> 1" (cast_expression "(int)uVar31" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) )))) ;) (if_statement "if (uVar15 < 2) {\n        uVar27 = ~uVar36 & 7;\n        uVar7 = 3;\n      }\n      else {\n        uVar7 = (int)(8 - uVar31) >> 1;\n        uVar27 = ((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7);\n      }" if (parenthesized_expression "(uVar15 < 2)" ( (binary_expression "uVar15 < 2" identifier < number_literal) )) (compound_statement "{\n        uVar27 = ~uVar36 & 7;\n        uVar7 = 3;\n      }" { (expression_statement "uVar27 = ~uVar36 & 7;" (assignment_expression "uVar27 = ~uVar36 & 7" identifier = (binary_expression "~uVar36 & 7" (unary_expression "~uVar36" ~ identifier) & number_literal)) ;) (expression_statement "uVar7 = 3;" (assignment_expression "uVar7 = 3" identifier = number_literal) ;) }) (else_clause "else {\n        uVar7 = (int)(8 - uVar31) >> 1;\n        uVar27 = ((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7);\n      }" else (compound_statement "{\n        uVar7 = (int)(8 - uVar31) >> 1;\n        uVar27 = ((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7);\n      }" { (expression_statement "uVar7 = (int)(8 - uVar31) >> 1;" (assignment_expression "uVar7 = (int)(8 - uVar31) >> 1" identifier = (binary_expression "(int)(8 - uVar31) >> 1" (cast_expression "(int)(8 - uVar31)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - uVar31)" ( (binary_expression "8 - uVar31" number_literal - identifier) ))) >> number_literal)) ;) (expression_statement "uVar27 = ((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7);" (assignment_expression "uVar27 = ((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7)" identifier = (binary_expression "((1 << (uVar7 & 0x1f)) + -1) - (uVar36 & 7)" (parenthesized_expression "((1 << (uVar7 & 0x1f)) + -1)" ( (binary_expression "(1 << (uVar7 & 0x1f)) + -1" (parenthesized_expression "(1 << (uVar7 & 0x1f))" ( (binary_expression "1 << (uVar7 & 0x1f)" number_literal << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) )) + number_literal) )) - (parenthesized_expression "(uVar36 & 7)" ( (binary_expression "uVar36 & 7" identifier & number_literal) )))) ;) }))) (if_statement "if (uVar27 + iVar32 >> (uVar7 & 0x1f) != 0) {\n        iStackY_164 = (uVar36 & 7) * iVar39;\n        iVar10 = iVar39 << ((int)(8 - uVar31) >> 1 & 0x1fU);\n        uVar36 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n        if (uVar15 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }" if (parenthesized_expression "(uVar27 + iVar32 >> (uVar7 & 0x1f) != 0)" ( (binary_expression "uVar27 + iVar32 >> (uVar7 & 0x1f) != 0" (binary_expression "uVar27 + iVar32 >> (uVar7 & 0x1f)" (binary_expression "uVar27 + iVar32" identifier + identifier) >> (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) != number_literal) )) (compound_statement "{\n        iStackY_164 = (uVar36 & 7) * iVar39;\n        iVar10 = iVar39 << ((int)(8 - uVar31) >> 1 & 0x1fU);\n        uVar36 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;\n        if (uVar15 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }" { (expression_statement "iStackY_164 = (uVar36 & 7) * iVar39;" (assignment_expression "iStackY_164 = (uVar36 & 7) * iVar39" identifier = (binary_expression "(uVar36 & 7) * iVar39" (parenthesized_expression "(uVar36 & 7)" ( (binary_expression "uVar36 & 7" identifier & number_literal) )) * identifier)) ;) (expression_statement "iVar10 = iVar39 << ((int)(8 - uVar31) >> 1 & 0x1fU);" (assignment_expression "iVar10 = iVar39 << ((int)(8 - uVar31) >> 1 & 0x1fU)" identifier = (binary_expression "iVar39 << ((int)(8 - uVar31) >> 1 & 0x1fU)" identifier << (parenthesized_expression "((int)(8 - uVar31) >> 1 & 0x1fU)" ( (binary_expression "(int)(8 - uVar31) >> 1 & 0x1fU" (binary_expression "(int)(8 - uVar31) >> 1" (cast_expression "(int)(8 - uVar31)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - uVar31)" ( (binary_expression "8 - uVar31" number_literal - identifier) ))) >> number_literal) & number_literal) )))) ;) (expression_statement "uVar36 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7;" (assignment_expression "uVar36 = (~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7" identifier = (binary_expression "(~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f) & 7" (binary_expression "(~uVar15 & 1) << (3U - ((int)uVar15 >> 1) & 0x1f)" (parenthesized_expression "(~uVar15 & 1)" ( (binary_expression "~uVar15 & 1" (unary_expression "~uVar15" ~ identifier) & number_literal) )) << (parenthesized_expression "(3U - ((int)uVar15 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uVar15 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar15 >> 1)" number_literal - (parenthesized_expression "((int)uVar15 >> 1)" ( (binary_expression "(int)uVar15 >> 1" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) ))) & number_literal)) ;) (if_statement "if (uVar15 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n        }" if (parenthesized_expression "(uVar15 < 3)" ( (binary_expression "uVar15 < 3" identifier < number_literal) )) (compound_statement "{\n          iVar33 = 8;\n        }" { (expression_statement "iVar33 = 8;" (assignment_expression "iVar33 = 8" identifier = number_literal) ;) }) (else_clause "else {\n          iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n        }" else (compound_statement "{\n          iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);\n        }" { (expression_statement "iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU);" (assignment_expression "iVar33 = 8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU)" identifier = (binary_expression "8 >> ((int)(uVar15 - 1) >> 1 & 0x1fU)" number_literal >> (parenthesized_expression "((int)(uVar15 - 1) >> 1 & 0x1fU)" ( (binary_expression "(int)(uVar15 - 1) >> 1 & 0x1fU" (binary_expression "(int)(uVar15 - 1) >> 1" (cast_expression "(int)(uVar15 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar15 - 1)" ( (binary_expression "uVar15 - 1" identifier - number_literal) ))) >> number_literal) & number_literal) )))) ;) }))) (goto_statement "goto LAB_000225b8;" goto statement_identifier ;) })) }) (else_clause "else {\n      uVar36 = 0;\n      iStackY_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar39;\nLAB_000225b8:\n      if (uVar36 < uVar44) {\n        iVar30 = uVar36 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);\n          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);\n          if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }\nLAB_000226d4:\n          uVar36 = uVar36 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar36 < uVar44);\n      }\n    }" else (compound_statement "{\n      uVar36 = 0;\n      iStackY_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar39;\nLAB_000225b8:\n      if (uVar36 < uVar44) {\n        iVar30 = uVar36 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);\n          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);\n          if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }\nLAB_000226d4:\n          uVar36 = uVar36 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar36 < uVar44);\n      }\n    }" { (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (expression_statement "iStackY_164 = 0;" (assignment_expression "iStackY_164 = 0" identifier = number_literal) ;) (expression_statement "iVar33 = 1;" (assignment_expression "iVar33 = 1" identifier = number_literal) ;) (expression_statement "iVar10 = iVar39;" (assignment_expression "iVar10 = iVar39" identifier = identifier) ;) (labeled_statement "LAB_000225b8:\n      if (uVar36 < uVar44) {\n        iVar30 = uVar36 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);\n          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);\n          if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }\nLAB_000226d4:\n          uVar36 = uVar36 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar36 < uVar44);\n      }" statement_identifier : (if_statement "if (uVar36 < uVar44) {\n        iVar30 = uVar36 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);\n          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);\n          if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }\nLAB_000226d4:\n          uVar36 = uVar36 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar36 < uVar44);\n      }" if (parenthesized_expression "(uVar36 < uVar44)" ( (binary_expression "uVar36 < uVar44" identifier < identifier) )) (compound_statement "{\n        iVar30 = uVar36 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);\n          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);\n          if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }\nLAB_000226d4:\n          uVar36 = uVar36 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar36 < uVar44);\n      }" { (expression_statement "iVar30 = uVar36 * iVar4;" (assignment_expression "iVar30 = uVar36 * iVar4" identifier = (binary_expression "uVar36 * iVar4" identifier * identifier)) ;) (do_statement "do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);\n          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);\n          if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }\nLAB_000226d4:\n          uVar36 = uVar36 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar36 < uVar44);" do (compound_statement "{\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);\n          pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);\n          if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }\nLAB_000226d4:\n          uVar36 = uVar36 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        }" { (expression_statement "iVar37 = puVar29[5];" (assignment_expression "iVar37 = puVar29[5]" identifier = (subscript_expression "puVar29[5]" identifier [ number_literal ])) ;) (expression_statement "(**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0);" (call_expression "(**(code **)(pcVar43 + 0x30f20))(arg,iVar37,0)" (parenthesized_expression "(**(code **)(pcVar43 + 0x30f20))" ( (pointer_expression "**(code **)(pcVar43 + 0x30f20)" * (pointer_expression "*(code **)(pcVar43 + 0x30f20)" * (cast_expression "(code **)(pcVar43 + 0x30f20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar43 + 0x30f20)" ( (binary_expression "pcVar43 + 0x30f20" identifier + number_literal) ))))) )) (argument_list "(arg,iVar37,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c);" (assignment_expression "pbVar28 = (byte *)(puVar29[6] + iVar30 + iStackY_15c)" identifier = (cast_expression "(byte *)(puVar29[6] + iVar30 + iStackY_15c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29[6] + iVar30 + iStackY_15c)" ( (binary_expression "puVar29[6] + iVar30 + iStackY_15c" (binary_expression "puVar29[6] + iVar30" (subscript_expression "puVar29[6]" identifier [ number_literal ]) + identifier) + identifier) )))) ;) (expression_statement "pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164);" (assignment_expression "pbVar8 = (byte *)(puVar29[6] + iVar30 + iStackY_164)" identifier = (cast_expression "(byte *)(puVar29[6] + iVar30 + iStackY_164)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29[6] + iVar30 + iStackY_164)" ( (binary_expression "puVar29[6] + iVar30 + iStackY_164" (binary_expression "puVar29[6] + iVar30" (subscript_expression "puVar29[6]" identifier [ number_literal ]) + identifier) + identifier) )))) ;) (if_statement "if (pbVar8 < pbVar28) {\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }" if (parenthesized_expression "(pbVar8 < pbVar28)" ( (binary_expression "pbVar8 < pbVar28" identifier < identifier) )) (compound_statement "{\n            iVar40 = *(int *)(pcVar43 + 0x30cec);\n            pbVar21 = (byte *)(iVar37 + iVar39);\n            do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);\n          }" { (expression_statement "iVar40 = *(int *)(pcVar43 + 0x30cec);" (assignment_expression "iVar40 = *(int *)(pcVar43 + 0x30cec)" identifier = (pointer_expression "*(int *)(pcVar43 + 0x30cec)" * (cast_expression "(int *)(pcVar43 + 0x30cec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar43 + 0x30cec)" ( (binary_expression "pcVar43 + 0x30cec" identifier + number_literal) ))))) ;) (expression_statement "pbVar21 = (byte *)(iVar37 + iVar39);" (assignment_expression "pbVar21 = (byte *)(iVar37 + iVar39)" identifier = (cast_expression "(byte *)(iVar37 + iVar39)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar37 + iVar39)" ( (binary_expression "iVar37 + iVar39" identifier + identifier) )))) ;) (do_statement "do {\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            } while (pbVar8 < pbVar28);" do (compound_statement "{\n              while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar21 = pbVar21 + iVar39 + 1;\n            }" { (while_statement "while( true ) {\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                uVar15 = (uint)*pbVar21;\n                pbVar17 = pbVar21 + -iVar39;\n                if (uVar15 == 0) break;\n                pbVar25 = pbVar8;\n                do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar21 = pbVar21 + iVar39 + 1;\n                if (pbVar28 <= pbVar8) goto LAB_000226d4;\n              }" { (expression_statement "uVar15 = (uint)*pbVar21;" (assignment_expression "uVar15 = (uint)*pbVar21" identifier = (binary_expression "(uint)*pbVar21" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar17 = pbVar21 + -iVar39;" (assignment_expression "pbVar17 = pbVar21 + -iVar39" identifier = (binary_expression "pbVar21 + -iVar39" identifier + (unary_expression "-iVar39" - identifier))) ;) (if_statement "if (uVar15 == 0) break;" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar25 = pbVar8;" (assignment_expression "pbVar25 = pbVar8" identifier = identifier) ;) (do_statement "do {\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                } while (pbVar17 != pbVar21);" do (compound_statement "{\n                  bVar13 = *pbVar17;\n                  if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }\n                  pbVar17 = pbVar17 + 1;\n                  *pbVar25 = bVar13;\n                  pbVar25 = pbVar25 + 1;\n                }" { (expression_statement "bVar13 = *pbVar17;" (assignment_expression "bVar13 = *pbVar17" identifier = (pointer_expression "*pbVar17" * identifier)) ;) (if_statement "if (uVar15 != 0xff) {\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }" if (parenthesized_expression "(uVar15 != 0xff)" ( (binary_expression "uVar15 != 0xff" identifier != number_literal) )) (compound_statement "{\n                    uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;\n                    uVar7 = uVar27 >> 0xf;\n                    bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);\n                  }" { (expression_statement "uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff;" (assignment_expression "uVar27 = (uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff" identifier = (binary_expression "(uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15) +\n                             (uint)bVar13 * 0xffff" (binary_expression "(uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2) * (0xff - uVar15)" (binary_expression "(uint)*(ushort *)(iVar26 + (uint)*pbVar25 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar26 + (uint)*pbVar25 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar26 + (uint)*pbVar25 * 2)" ( (binary_expression "iVar26 + (uint)*pbVar25 * 2" identifier + (binary_expression "(uint)*pbVar25 * 2" (binary_expression "(uint)*pbVar25" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) * (parenthesized_expression "(0xff - uVar15)" ( (binary_expression "0xff - uVar15" number_literal - identifier) ))) + (binary_expression "(uint)bVar13 * 0xffff" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal))) ;) (expression_statement "uVar7 = uVar27 >> 0xf;" (assignment_expression "uVar7 = uVar27 >> 0xf" identifier = (binary_expression "uVar27 >> 0xf" identifier >> number_literal)) ;) (expression_statement "bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8);" (assignment_expression "bVar13 = (byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8)" identifier = (call_expression "(byte)(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8)" ( (binary_expression "((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2) >> 8" (binary_expression "((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc) +\n                                    (uint)*(ushort *)(iVar40 + uVar7 * 2)" (parenthesized_expression "((uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc)" ( (binary_expression "(uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7) >> 0xc" (binary_expression "(uVar27 & 0x7fff) * (uint)*(byte *)(iVar22 + uVar7)" (binary_expression "(uVar27 & 0x7fff) * (uint)" (parenthesized_expression "(uVar27 & 0x7fff)" ( (binary_expression "uVar27 & 0x7fff" identifier & number_literal) )) * (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar22 + uVar7)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar22 + uVar7)" ( (binary_expression "iVar22 + uVar7" identifier + identifier) )))) >> number_literal) )) + (binary_expression "(uint)*(ushort *)(iVar40 + uVar7 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar40 + uVar7 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar40 + uVar7 * 2)" ( (binary_expression "iVar40 + uVar7 * 2" identifier + (binary_expression "uVar7 * 2" identifier * number_literal)) ))))) >> number_literal) )))) ;) })) (expression_statement "pbVar17 = pbVar17 + 1;" (assignment_expression "pbVar17 = pbVar17 + 1" identifier = (binary_expression "pbVar17 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar25 = bVar13;" (assignment_expression "*pbVar25 = bVar13" (pointer_expression "*pbVar25" * identifier) = identifier) ;) (expression_statement "pbVar25 = pbVar25 + 1;" (assignment_expression "pbVar25 = pbVar25 + 1" identifier = (binary_expression "pbVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar17 != pbVar21)" ( (binary_expression "pbVar17 != pbVar21" identifier != identifier) )) ;) (expression_statement "pbVar8 = pbVar8 + iVar10;" (assignment_expression "pbVar8 = pbVar8 + iVar10" identifier = (binary_expression "pbVar8 + iVar10" identifier + identifier)) ;) (expression_statement "pbVar21 = pbVar21 + iVar39 + 1;" (assignment_expression "pbVar21 = pbVar21 + iVar39 + 1" identifier = (binary_expression "pbVar21 + iVar39 + 1" (binary_expression "pbVar21 + iVar39" identifier + identifier) + number_literal)) ;) (if_statement "if (pbVar28 <= pbVar8) goto LAB_000226d4;" if (parenthesized_expression "(pbVar28 <= pbVar8)" ( (binary_expression "pbVar28 <= pbVar8" identifier <= identifier) )) (goto_statement "goto LAB_000226d4;" goto statement_identifier ;)) })) (expression_statement "pbVar8 = pbVar8 + iVar10;" (assignment_expression "pbVar8 = pbVar8 + iVar10" identifier = (binary_expression "pbVar8 + iVar10" identifier + identifier)) ;) (expression_statement "pbVar21 = pbVar21 + iVar39 + 1;" (assignment_expression "pbVar21 = pbVar21 + iVar39 + 1" identifier = (binary_expression "pbVar21 + iVar39 + 1" (binary_expression "pbVar21 + iVar39" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "(pbVar8 < pbVar28)" ( (binary_expression "pbVar8 < pbVar28" identifier < identifier) )) ;) })) (labeled_statement "LAB_000226d4:\n          uVar36 = uVar36 + iVar33;" statement_identifier : (expression_statement "uVar36 = uVar36 + iVar33;" (assignment_expression "uVar36 = uVar36 + iVar33" identifier = (binary_expression "uVar36 + iVar33" identifier + identifier)) ;)) (expression_statement "iVar30 = iVar30 + iVar33 * iVar4;" (assignment_expression "iVar30 = iVar30 + iVar33 * iVar4" identifier = (binary_expression "iVar30 + iVar33 * iVar4" identifier + (binary_expression "iVar33 * iVar4" identifier * identifier))) ;) }) while (parenthesized_expression "(uVar36 < uVar44)" ( (binary_expression "uVar36 < uVar44" identifier < identifier) )) ;) }))) }))) (if_statement "if (uStackY_154 == uVar31) {\n      return;\n    }" if (parenthesized_expression "(uStackY_154 == uVar31)" ( (binary_expression "uStackY_154 == uVar31" identifier == identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (expression_statement "cVar14 = *(char *)(arg + 0x7f);" (assignment_expression "cVar14 = *(char *)(arg + 0x7f)" identifier = (pointer_expression "*(char *)(arg + 0x7f)" * (cast_expression "(char *)(arg + 0x7f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(arg + 0x7f)" ( (binary_expression "arg + 0x7f" identifier + number_literal) ))))) ;) (expression_statement "uVar15 = uVar31;" (assignment_expression "uVar15 = uVar31" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "int png_read_row(undefined4 *param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  int iVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int iVar10;\n  ushort uVar12;\n  byte bVar13;\n  byte bVar14;\n  char cVar15;\n  undefined4 uVar11;\n  uint uVar16;\n  undefined4 *puVar17;\n  byte *pbVar18;\n  undefined *puVar19;\n  undefined4 uVar20;\n  ushort *puVar21;\n  byte *pbVar22;\n  ushort *puVar23;\n  byte *pbVar24;\n  int iVar25;\n  uint uVar26;\n  byte *pbVar27;\n  undefined4 *unaff_s0;\n  undefined4 *puVar28;\n  undefined4 *puVar29;\n  int iVar30;\n  uint uVar31;\n  int iVar32;\n  int iVar33;\n  int unaff_s2;\n  int iVar34;\n  int *piVar35;\n  uint uVar36;\n  int iVar37;\n  int iVar38;\n  undefined *puVar39;\n  code *pcVar40;\n  code *pcVar41;\n  uint uVar42;\n  int local_164;\n  int local_15c;\n  uint local_154;\n  int local_100;\n  int local_f8;\n  uint local_f4;\n  uint local_ec;\n  uint local_e8;\n  uint local_80;\n  ushort local_7c;\n  ushort local_7a;\n  ushort local_78;\n  int local_74;\n  undefined4 *local_70;\n  undefined *local_6c;\n  int local_68;\n  int local_64;\n  int local_28;\n  uint local_24;\n  byte local_20;\n  char local_1f;\n  undefined2 local_1e;\n  int local_1c;\n  \n  puVar3 = PTR___stack_chk_guard_000534bc;\n  local_1c = *(int *)PTR___stack_chk_guard_000534bc;\n  if (param_1 != (undefined4 *)0x0) {\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }\nLAB_000212f4:\n  iVar4 = *(int *)puVar3;\n  if (local_1c == iVar4) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\n  param_1 = unaff_s0;\n  param_3 = unaff_s2;\nLAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);\nLAB_000215e0:\n  puVar19 = PTR_s_nt_0005301c + -0x9d4;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19);\nLAB_000215f4:\n  puVar29 = param_1;\n  puVar39 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8);\n  piVar5 = *(int **)(puVar39 + 0x31eb8);\n  piVar35 = (int *)*puVar29;\n  local_74 = *piVar5;\n  local_6c = puVar3;\n  uVar31 = piVar35[4];\n  uVar16 = uVar31 & 4;\n  puVar28 = *(undefined4 **)*piVar35;\n  iVar4 = ((undefined4 *)*piVar35)[1];\n  local_70 = param_1;\n  local_68 = param_3;\n  local_64 = param_2;\n  (**(code **)(puVar39 + 0x31d60))(puVar28);\n  uVar6 = FUN_0001e440(puVar28);\n  uVar42 = uVar6 & 0xfffffff7 ^ uVar31;\n  if ((uVar42 & 2) == 0) {\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }\n  (*pcVar40)(puVar28,0,0xffffffff);\njoined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }\n  if ((uVar42 & 0x40) != 0) {\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }\n  if (uVar36 != 0) goto LAB_00021afc;\n  do {\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );\n  while( true ) {\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }\nLAB_000219e8:\n  if (local_74 == *piVar5) {\n    return iVar4;\n  }\nLAB_00021ce8:\n  (**(code **)(puVar39 + 0x31e80))();\nLAB_00021cf4:\n  (**(code **)(puVar39 + 0x31e08))();\nLAB_00021d04:\n  pcVar40 = *(code **)(puVar39 + 0x31e08);\n  (*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318);\n  piVar5 = (int *)*puVar28;\n  iVar4 = piVar5[2];\n  puVar29 = *(undefined4 **)*piVar5;\n  iVar34 = ((undefined4 *)*piVar5)[1];\n  uVar42 = piVar5[3];\n  if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }\n  (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0);\nLAB_00022470:\n  pcVar41 = *(code **)(pcVar40 + 0x316f4);\n  (*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8);\n  puVar17 = (undefined4 *)*puVar29;\n  puVar28 = *(undefined4 **)*puVar17;\n  cVar15 = *(char *)(puVar28 + 0x7f);\n  if (cVar15 == '\0') {\n    local_154 = 1;\n  }\n  else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }\n  uVar42 = puVar17[3];\n  iVar34 = puVar17[2];\n  iVar4 = puVar29[7];\n  if ((puVar17[4] & 2) == 0) {\n    iVar9 = 1;\n    local_15c = iVar34;\n  }\n  else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }\n  iVar25 = *(int *)(pcVar41 + 0x30ce4);\n  iVar32 = *(int *)(pcVar41 + 0x30ce8);\n  uVar6 = 0;\n  do {\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  } while( true );\n}\n\n" (function_definition "int png_read_row(undefined4 *param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  int iVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int iVar10;\n  ushort uVar12;\n  byte bVar13;\n  byte bVar14;\n  char cVar15;\n  undefined4 uVar11;\n  uint uVar16;\n  undefined4 *puVar17;\n  byte *pbVar18;\n  undefined *puVar19;\n  undefined4 uVar20;\n  ushort *puVar21;\n  byte *pbVar22;\n  ushort *puVar23;\n  byte *pbVar24;\n  int iVar25;\n  uint uVar26;\n  byte *pbVar27;\n  undefined4 *unaff_s0;\n  undefined4 *puVar28;\n  undefined4 *puVar29;\n  int iVar30;\n  uint uVar31;\n  int iVar32;\n  int iVar33;\n  int unaff_s2;\n  int iVar34;\n  int *piVar35;\n  uint uVar36;\n  int iVar37;\n  int iVar38;\n  undefined *puVar39;\n  code *pcVar40;\n  code *pcVar41;\n  uint uVar42;\n  int local_164;\n  int local_15c;\n  uint local_154;\n  int local_100;\n  int local_f8;\n  uint local_f4;\n  uint local_ec;\n  uint local_e8;\n  uint local_80;\n  ushort local_7c;\n  ushort local_7a;\n  ushort local_78;\n  int local_74;\n  undefined4 *local_70;\n  undefined *local_6c;\n  int local_68;\n  int local_64;\n  int local_28;\n  uint local_24;\n  byte local_20;\n  char local_1f;\n  undefined2 local_1e;\n  int local_1c;\n  \n  puVar3 = PTR___stack_chk_guard_000534bc;\n  local_1c = *(int *)PTR___stack_chk_guard_000534bc;\n  if (param_1 != (undefined4 *)0x0) {\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }\nLAB_000212f4:\n  iVar4 = *(int *)puVar3;\n  if (local_1c == iVar4) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\n  param_1 = unaff_s0;\n  param_3 = unaff_s2;\nLAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);\nLAB_000215e0:\n  puVar19 = PTR_s_nt_0005301c + -0x9d4;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19);\nLAB_000215f4:\n  puVar29 = param_1;\n  puVar39 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8);\n  piVar5 = *(int **)(puVar39 + 0x31eb8);\n  piVar35 = (int *)*puVar29;\n  local_74 = *piVar5;\n  local_6c = puVar3;\n  uVar31 = piVar35[4];\n  uVar16 = uVar31 & 4;\n  puVar28 = *(undefined4 **)*piVar35;\n  iVar4 = ((undefined4 *)*piVar35)[1];\n  local_70 = param_1;\n  local_68 = param_3;\n  local_64 = param_2;\n  (**(code **)(puVar39 + 0x31d60))(puVar28);\n  uVar6 = FUN_0001e440(puVar28);\n  uVar42 = uVar6 & 0xfffffff7 ^ uVar31;\n  if ((uVar42 & 2) == 0) {\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }\n  (*pcVar40)(puVar28,0,0xffffffff);\njoined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }\n  if ((uVar42 & 0x40) != 0) {\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }\n  if (uVar36 != 0) goto LAB_00021afc;\n  do {\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );\n  while( true ) {\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }\nLAB_000219e8:\n  if (local_74 == *piVar5) {\n    return iVar4;\n  }\nLAB_00021ce8:\n  (**(code **)(puVar39 + 0x31e80))();\nLAB_00021cf4:\n  (**(code **)(puVar39 + 0x31e08))();\nLAB_00021d04:\n  pcVar40 = *(code **)(puVar39 + 0x31e08);\n  (*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318);\n  piVar5 = (int *)*puVar28;\n  iVar4 = piVar5[2];\n  puVar29 = *(undefined4 **)*piVar5;\n  iVar34 = ((undefined4 *)*piVar5)[1];\n  uVar42 = piVar5[3];\n  if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }\n  (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0);\nLAB_00022470:\n  pcVar41 = *(code **)(pcVar40 + 0x316f4);\n  (*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8);\n  puVar17 = (undefined4 *)*puVar29;\n  puVar28 = *(undefined4 **)*puVar17;\n  cVar15 = *(char *)(puVar28 + 0x7f);\n  if (cVar15 == '\0') {\n    local_154 = 1;\n  }\n  else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }\n  uVar42 = puVar17[3];\n  iVar34 = puVar17[2];\n  iVar4 = puVar29[7];\n  if ((puVar17[4] & 2) == 0) {\n    iVar9 = 1;\n    local_15c = iVar34;\n  }\n  else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }\n  iVar25 = *(int *)(pcVar41 + 0x30ce4);\n  iVar32 = *(int *)(pcVar41 + 0x30ce8);\n  uVar6 = 0;\n  do {\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  } while( true );\n}" primitive_type (function_declarator "png_read_row(undefined4 *param_1,int param_2,int param_3)" identifier (parameter_list "(undefined4 *param_1,int param_2,int param_3)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  int iVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int iVar10;\n  ushort uVar12;\n  byte bVar13;\n  byte bVar14;\n  char cVar15;\n  undefined4 uVar11;\n  uint uVar16;\n  undefined4 *puVar17;\n  byte *pbVar18;\n  undefined *puVar19;\n  undefined4 uVar20;\n  ushort *puVar21;\n  byte *pbVar22;\n  ushort *puVar23;\n  byte *pbVar24;\n  int iVar25;\n  uint uVar26;\n  byte *pbVar27;\n  undefined4 *unaff_s0;\n  undefined4 *puVar28;\n  undefined4 *puVar29;\n  int iVar30;\n  uint uVar31;\n  int iVar32;\n  int iVar33;\n  int unaff_s2;\n  int iVar34;\n  int *piVar35;\n  uint uVar36;\n  int iVar37;\n  int iVar38;\n  undefined *puVar39;\n  code *pcVar40;\n  code *pcVar41;\n  uint uVar42;\n  int local_164;\n  int local_15c;\n  uint local_154;\n  int local_100;\n  int local_f8;\n  uint local_f4;\n  uint local_ec;\n  uint local_e8;\n  uint local_80;\n  ushort local_7c;\n  ushort local_7a;\n  ushort local_78;\n  int local_74;\n  undefined4 *local_70;\n  undefined *local_6c;\n  int local_68;\n  int local_64;\n  int local_28;\n  uint local_24;\n  byte local_20;\n  char local_1f;\n  undefined2 local_1e;\n  int local_1c;\n  \n  puVar3 = PTR___stack_chk_guard_000534bc;\n  local_1c = *(int *)PTR___stack_chk_guard_000534bc;\n  if (param_1 != (undefined4 *)0x0) {\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }\nLAB_000212f4:\n  iVar4 = *(int *)puVar3;\n  if (local_1c == iVar4) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\n  param_1 = unaff_s0;\n  param_3 = unaff_s2;\nLAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);\nLAB_000215e0:\n  puVar19 = PTR_s_nt_0005301c + -0x9d4;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19);\nLAB_000215f4:\n  puVar29 = param_1;\n  puVar39 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8);\n  piVar5 = *(int **)(puVar39 + 0x31eb8);\n  piVar35 = (int *)*puVar29;\n  local_74 = *piVar5;\n  local_6c = puVar3;\n  uVar31 = piVar35[4];\n  uVar16 = uVar31 & 4;\n  puVar28 = *(undefined4 **)*piVar35;\n  iVar4 = ((undefined4 *)*piVar35)[1];\n  local_70 = param_1;\n  local_68 = param_3;\n  local_64 = param_2;\n  (**(code **)(puVar39 + 0x31d60))(puVar28);\n  uVar6 = FUN_0001e440(puVar28);\n  uVar42 = uVar6 & 0xfffffff7 ^ uVar31;\n  if ((uVar42 & 2) == 0) {\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }\n  (*pcVar40)(puVar28,0,0xffffffff);\njoined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }\n  if ((uVar42 & 0x40) != 0) {\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }\n  if (uVar36 != 0) goto LAB_00021afc;\n  do {\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );\n  while( true ) {\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }\nLAB_000219e8:\n  if (local_74 == *piVar5) {\n    return iVar4;\n  }\nLAB_00021ce8:\n  (**(code **)(puVar39 + 0x31e80))();\nLAB_00021cf4:\n  (**(code **)(puVar39 + 0x31e08))();\nLAB_00021d04:\n  pcVar40 = *(code **)(puVar39 + 0x31e08);\n  (*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318);\n  piVar5 = (int *)*puVar28;\n  iVar4 = piVar5[2];\n  puVar29 = *(undefined4 **)*piVar5;\n  iVar34 = ((undefined4 *)*piVar5)[1];\n  uVar42 = piVar5[3];\n  if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }\n  (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0);\nLAB_00022470:\n  pcVar41 = *(code **)(pcVar40 + 0x316f4);\n  (*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8);\n  puVar17 = (undefined4 *)*puVar29;\n  puVar28 = *(undefined4 **)*puVar17;\n  cVar15 = *(char *)(puVar28 + 0x7f);\n  if (cVar15 == '\0') {\n    local_154 = 1;\n  }\n  else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }\n  uVar42 = puVar17[3];\n  iVar34 = puVar17[2];\n  iVar4 = puVar29[7];\n  if ((puVar17[4] & 2) == 0) {\n    iVar9 = 1;\n    local_15c = iVar34;\n  }\n  else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }\n  iVar25 = *(int *)(pcVar41 + 0x30ce4);\n  iVar32 = *(int *)(pcVar41 + 0x30ce8);\n  uVar6 = 0;\n  do {\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  } while( true );\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "ushort uVar2;" type_identifier identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "uint uVar7;" type_identifier identifier ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "ushort uVar12;" type_identifier identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "char cVar15;" primitive_type identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "undefined4 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "undefined *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined4 uVar20;" type_identifier identifier ;) (declaration "ushort *puVar21;" type_identifier (pointer_declarator "*puVar21" * identifier) ;) (declaration "byte *pbVar22;" type_identifier (pointer_declarator "*pbVar22" * identifier) ;) (declaration "ushort *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "byte *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (declaration "int iVar25;" primitive_type identifier ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "byte *pbVar27;" type_identifier (pointer_declarator "*pbVar27" * identifier) ;) (declaration "undefined4 *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "undefined4 *puVar28;" type_identifier (pointer_declarator "*puVar28" * identifier) ;) (declaration "undefined4 *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "uint uVar31;" type_identifier identifier ;) (declaration "int iVar32;" primitive_type identifier ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "int unaff_s2;" primitive_type identifier ;) (declaration "int iVar34;" primitive_type identifier ;) (declaration "int *piVar35;" primitive_type (pointer_declarator "*piVar35" * identifier) ;) (declaration "uint uVar36;" type_identifier identifier ;) (declaration "int iVar37;" primitive_type identifier ;) (declaration "int iVar38;" primitive_type identifier ;) (declaration "undefined *puVar39;" type_identifier (pointer_declarator "*puVar39" * identifier) ;) (declaration "code *pcVar40;" type_identifier (pointer_declarator "*pcVar40" * identifier) ;) (declaration "code *pcVar41;" type_identifier (pointer_declarator "*pcVar41" * identifier) ;) (declaration "uint uVar42;" type_identifier identifier ;) (declaration "int local_164;" primitive_type identifier ;) (declaration "int local_15c;" primitive_type identifier ;) (declaration "uint local_154;" type_identifier identifier ;) (declaration "int local_100;" primitive_type identifier ;) (declaration "int local_f8;" primitive_type identifier ;) (declaration "uint local_f4;" type_identifier identifier ;) (declaration "uint local_ec;" type_identifier identifier ;) (declaration "uint local_e8;" type_identifier identifier ;) (declaration "uint local_80;" type_identifier identifier ;) (declaration "ushort local_7c;" type_identifier identifier ;) (declaration "ushort local_7a;" type_identifier identifier ;) (declaration "ushort local_78;" type_identifier identifier ;) (declaration "int local_74;" primitive_type identifier ;) (declaration "undefined4 *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "undefined *local_6c;" type_identifier (pointer_declarator "*local_6c" * identifier) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "int local_28;" primitive_type identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "byte local_20;" type_identifier identifier ;) (declaration "char local_1f;" primitive_type identifier ;) (declaration "undefined2 local_1e;" type_identifier identifier ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_000534bc;" (assignment_expression "puVar3 = PTR___stack_chk_guard_000534bc" identifier = identifier) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_000534bc;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_000534bc" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000534bc" * (cast_expression "(int *)PTR___stack_chk_guard_000534bc" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (param_1 != (undefined4 *)0x0) {\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }" if (parenthesized_expression "(param_1 != (undefined4 *)0x0)" ( (binary_expression "param_1 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }" { (if_statement "if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;" if (parenthesized_expression "((param_1[0x4a] & 0x40) == 0)" ( (binary_expression "(param_1[0x4a] & 0x40) == 0" (parenthesized_expression "(param_1[0x4a] & 0x40)" ( (binary_expression "param_1[0x4a] & 0x40" (subscript_expression "param_1[0x4a]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00021340;" goto statement_identifier ;)) (labeled_statement "LAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);" statement_identifier : (expression_statement "bVar14 = *(byte *)((int)param_1 + 0x202);" (assignment_expression "bVar14 = *(byte *)((int)param_1 + 0x202)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x202)" * (cast_expression "(byte *)((int)param_1 + 0x202)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x202)" ( (binary_expression "(int)param_1 + 0x202" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;)) (expression_statement "local_28 = param_1[0x71];" (assignment_expression "local_28 = param_1[0x71]" identifier = (subscript_expression "param_1[0x71]" identifier [ number_literal ])) ;) (expression_statement "local_20 = *(byte *)((int)param_1 + 0x1ff);" (assignment_expression "local_20 = *(byte *)((int)param_1 + 0x1ff)" identifier = (pointer_expression "*(byte *)((int)param_1 + 0x1ff)" * (cast_expression "(byte *)((int)param_1 + 0x1ff)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x1ff)" ( (binary_expression "(int)param_1 + 0x1ff" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;" (assignment_expression "local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8" identifier = (binary_expression "(ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8" (call_expression "(ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8)" ( (binary_expression "(*(ushort *)((int)param_1 + 0x202) & 0xff) << 8" (parenthesized_expression "(*(ushort *)((int)param_1 + 0x202) & 0xff)" ( (binary_expression "*(ushort *)((int)param_1 + 0x202) & 0xff" (pointer_expression "*(ushort *)((int)param_1 + 0x202)" * (cast_expression "(ushort *)((int)param_1 + 0x202)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x202)" ( (binary_expression "(int)param_1 + 0x202" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) << number_literal) ))) | (binary_expression "*(ushort *)((int)param_1 + 0x202) >> 8" (pointer_expression "*(ushort *)((int)param_1 + 0x202)" * (cast_expression "(ushort *)((int)param_1 + 0x202)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x202)" ( (binary_expression "(int)param_1 + 0x202" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) >> number_literal))) ;) (expression_statement "local_1f = *(char *)(param_1 + 0x80);" (assignment_expression "local_1f = *(char *)(param_1 + 0x80)" identifier = (pointer_expression "*(char *)(param_1 + 0x80)" * (cast_expression "(char *)(param_1 + 0x80)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }" if (parenthesized_expression "(bVar14 < 8)" ( (binary_expression "bVar14 < 8" identifier < number_literal) )) (compound_statement "{\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }" { (expression_statement "local_24 = (uint)bVar14 * local_28 + 7 >> 3;" (assignment_expression "local_24 = (uint)bVar14 * local_28 + 7 >> 3" identifier = (binary_expression "(uint)bVar14 * local_28 + 7 >> 3" (binary_expression "(uint)bVar14 * local_28 + 7" (binary_expression "(uint)bVar14 * local_28" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * identifier) + number_literal) >> number_literal)) ;) }) (else_clause "else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }" else (compound_statement "{\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }" { (expression_statement "local_24 = (uint)(bVar14 >> 3) * local_28;" (assignment_expression "local_24 = (uint)(bVar14 >> 3) * local_28" identifier = (binary_expression "(uint)(bVar14 >> 3) * local_28" (call_expression "(uint)(bVar14 >> 3)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar14 >> 3)" ( (binary_expression "bVar14 >> 3" identifier >> number_literal) ))) * identifier)) ;) }))) (expression_statement "unaff_s0 = param_1;" (assignment_expression "unaff_s0 = param_1" identifier = identifier) ;) (expression_statement "unaff_s2 = param_3;" (assignment_expression "unaff_s2 = param_3" identifier = identifier) ;) (if_statement "if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }" if (parenthesized_expression "((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0))" ( (binary_expression "(*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)" (parenthesized_expression "(*(char *)(param_1 + 0x7f) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x7f) != '\0'" (pointer_expression "*(char *)(param_1 + 0x7f)" * (cast_expression "(char *)(param_1 + 0x7f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7f)" ( (binary_expression "param_1 + 0x7f" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "((param_1[0x4b] & 2) != 0)" ( (binary_expression "(param_1[0x4b] & 2) != 0" (parenthesized_expression "(param_1[0x4b] & 2)" ( (binary_expression "param_1[0x4b] & 2" (subscript_expression "param_1[0x4b]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }" { (if_statement "if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }" if (parenthesized_expression "(*(byte *)((int)param_1 + 0x1fd) < 6)" ( (binary_expression "*(byte *)((int)param_1 + 0x1fd) < 6" (pointer_expression "*(byte *)((int)param_1 + 0x1fd)" * (cast_expression "(byte *)((int)param_1 + 0x1fd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x1fd)" ( (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) (compound_statement "{\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }" { (expression_statement "iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();" (assignment_expression "iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c))" * (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c))" ( (binary_expression "&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)" * (cast_expression "(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)" ( (binary_expression "PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c" (binary_expression "PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4" identifier + (binary_expression "(uint)*(byte *)((int)param_1 + 0x1fd) * 4" (binary_expression "(uint)*(byte *)((int)param_1 + 0x1fd)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)((int)param_1 + 0x1fd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x1fd)" ( (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar4;" return identifier ;) })) (if_statement "if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }" if (parenthesized_expression "((param_1[0x72] & 1) == 0)" ( (binary_expression "(param_1[0x72] & 1) == 0" (parenthesized_expression "(param_1[0x72] & 1)" ( (binary_expression "param_1[0x72] & 1" (subscript_expression "param_1[0x72]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }" { (expression_statement "FUN_00030a70(param_1);" (call_expression "FUN_00030a70(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (goto_statement "goto LAB_000212f4;" goto statement_identifier ;) })) })) (if_statement "if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;" if (parenthesized_expression "((param_1[0x49] & 4) == 0)" ( (binary_expression "(param_1[0x49] & 4) == 0" (parenthesized_expression "(param_1[0x49] & 4)" ( (binary_expression "param_1[0x49] & 4" (subscript_expression "param_1[0x49]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000215cc;" goto statement_identifier ;)) (expression_statement "*(undefined1 *)param_1[0x75] = 0xff;" (assignment_expression "*(undefined1 *)param_1[0x75] = 0xff" (pointer_expression "*(undefined1 *)param_1[0x75]" * (cast_expression "(undefined1 *)param_1[0x75]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x75]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "FUN_00030678(param_1,param_1[0x75],local_24 + 1);" (call_expression "FUN_00030678(param_1,param_1[0x75],local_24 + 1)" identifier (argument_list "(param_1,param_1[0x75],local_24 + 1)" ( identifier , (subscript_expression "param_1[0x75]" identifier [ number_literal ]) , (binary_expression "local_24 + 1" identifier + number_literal) ))) ;) (expression_statement "pbVar8 = (byte *)param_1[0x75];" (assignment_expression "pbVar8 = (byte *)param_1[0x75]" identifier = (cast_expression "(byte *)param_1[0x75]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x75]" identifier [ number_literal ]))) ;) (if_statement "if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }" if (parenthesized_expression "(*pbVar8 != 0)" ( (binary_expression "*pbVar8 != 0" (pointer_expression "*pbVar8" * identifier) != number_literal) )) (compound_statement "{\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }" { (if_statement "if (4 < *pbVar8) goto LAB_000215e0;" if (parenthesized_expression "(4 < *pbVar8)" ( (binary_expression "4 < *pbVar8" number_literal < (pointer_expression "*pbVar8" * identifier)) )) (goto_statement "goto LAB_000215e0;" goto statement_identifier ;)) (expression_statement "FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);" (call_expression "FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1)" identifier (argument_list "(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1)" ( identifier , (pointer_expression "&local_28" & identifier) , (binary_expression "pbVar8 + 1" identifier + number_literal) , (binary_expression "param_1[0x74] + 1" (subscript_expression "param_1[0x74]" identifier [ number_literal ]) + number_literal) ))) ;) (expression_statement "pbVar8 = (byte *)param_1[0x75];" (assignment_expression "pbVar8 = (byte *)param_1[0x75]" identifier = (cast_expression "(byte *)param_1[0x75]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x75]" identifier [ number_literal ]))) ;) })) (expression_statement "(*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);" (call_expression "(*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1)" (parenthesized_expression "(*(code *)PTR_memcpy_000534c4)" ( (pointer_expression "*(code *)PTR_memcpy_000534c4" * (cast_expression "(code *)PTR_memcpy_000534c4" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1[0x74],pbVar8,local_24 + 1)" ( (subscript_expression "param_1[0x74]" identifier [ number_literal ]) , identifier , (binary_expression "local_24 + 1" identifier + number_literal) ))) ;) (if_statement "if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }" if (parenthesized_expression "((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))" ( (binary_expression "(((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0)" (parenthesized_expression "(((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@'))" ( (binary_expression "((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')" (parenthesized_expression "((param_1[0xc0] & 4) == 0)" ( (binary_expression "(param_1[0xc0] & 4) == 0" (parenthesized_expression "(param_1[0xc0] & 4)" ( (binary_expression "param_1[0xc0] & 4" (subscript_expression "param_1[0xc0]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) || (parenthesized_expression "(*(char *)(param_1 + 0xc1) != '@')" ( (binary_expression "*(char *)(param_1 + 0xc1) != '@'" (pointer_expression "*(char *)(param_1 + 0xc1)" * (cast_expression "(char *)(param_1 + 0xc1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc1)" ( (binary_expression "param_1 + 0xc1" identifier + number_literal) )))) != (char_literal "'@'" ' character ')) ))) )) || (parenthesized_expression "((local_20 & 2) == 0)" ( (binary_expression "(local_20 & 2) == 0" (parenthesized_expression "(local_20 & 2)" ( (binary_expression "local_20 & 2" identifier & number_literal) )) == number_literal) ))) )) (compound_statement "{\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }" { (labeled_statement "LAB_00021248:\n      iVar4 = param_1[0x4b];" statement_identifier : (expression_statement "iVar4 = param_1[0x4b];" (assignment_expression "iVar4 = param_1[0x4b]" identifier = (subscript_expression "param_1[0x4b]" identifier [ number_literal ])) ;)) }) (else_clause "else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }" else (compound_statement "{\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }" { (expression_statement "puVar21 = (ushort *)(param_1[0x75] + 1);" (assignment_expression "puVar21 = (ushort *)(param_1[0x75] + 1)" identifier = (cast_expression "(ushort *)(param_1[0x75] + 1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[0x75] + 1)" ( (binary_expression "param_1[0x75] + 1" (subscript_expression "param_1[0x75]" identifier [ number_literal ]) + number_literal) )))) ;) (if_statement "if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }" if (parenthesized_expression "(local_1f != '\b')" ( (binary_expression "local_1f != '\b'" identifier != (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }" { (if_statement "if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }" if (parenthesized_expression "(local_1f == '\x10')" ( (binary_expression "local_1f == '\x10'" identifier == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }" { (if_statement "if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }" if (parenthesized_expression "(local_20 == 2)" ( (binary_expression "local_20 == 2" identifier == number_literal) )) (compound_statement "{\n            iVar4 = 6;\n          }" { (expression_statement "iVar4 = 6;" (assignment_expression "iVar4 = 6" identifier = number_literal) ;) }) (else_clause "else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }" else (compound_statement "{\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }" { (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" identifier = number_literal) ;) (if_statement "if (local_20 != 6) goto LAB_00021248;" if (parenthesized_expression "(local_20 != 6)" ( (binary_expression "local_20 != 6" identifier != number_literal) )) (goto_statement "goto LAB_00021248;" goto statement_identifier ;)) }))) (expression_statement "iVar34 = 0;" (assignment_expression "iVar34 = 0" identifier = number_literal) ;) (if_statement "if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }" if (parenthesized_expression "(local_28 != 0)" ( (binary_expression "local_28 != 0" identifier != number_literal) )) (compound_statement "{\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }" { (do_statement "do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);" do (compound_statement "{\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            }" { (expression_statement "iVar34 = iVar34 + 1;" (assignment_expression "iVar34 = iVar34 + 1" identifier = (binary_expression "iVar34 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;" (assignment_expression "uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff" identifier = (binary_expression "(uint)puVar21[1] + (uint)*puVar21 & 0xffff" (binary_expression "(uint)puVar21[1] + (uint)*puVar21" (cast_expression "(uint)puVar21[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar21[1]" identifier [ number_literal ])) + (binary_expression "(uint)*puVar21" (parenthesized_expression "(uint)" ( identifier )) * identifier)) & number_literal)) ;) (expression_statement "uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;" (assignment_expression "uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff" identifier = (binary_expression "(uint)puVar21[1] + (uint)puVar21[2] & 0xffff" (binary_expression "(uint)puVar21[1] + (uint)puVar21[2]" (cast_expression "(uint)puVar21[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar21[1]" identifier [ number_literal ])) + (cast_expression "(uint)puVar21[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar21[2]" identifier [ number_literal ]))) & number_literal)) ;) (expression_statement "*(char *)((int)puVar21 + 1) = (char)uVar6;" (assignment_expression "*(char *)((int)puVar21 + 1) = (char)uVar6" (pointer_expression "*(char *)((int)puVar21 + 1)" * (cast_expression "(char *)((int)puVar21 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + 1)" ( (binary_expression "(int)puVar21 + 1" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)((int)puVar21 + 5) = (char)uVar42;" (assignment_expression "*(char *)((int)puVar21 + 5) = (char)uVar42" (pointer_expression "*(char *)((int)puVar21 + 5)" * (cast_expression "(char *)((int)puVar21 + 5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + 5)" ( (binary_expression "(int)puVar21 + 5" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(char)uVar42" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "*(char *)puVar21 = (char)(uVar6 >> 8);" (assignment_expression "*(char *)puVar21 = (char)(uVar6 >> 8)" (pointer_expression "*(char *)puVar21" * (cast_expression "(char *)puVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(char)(uVar6 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar6 >> 8)" ( (binary_expression "uVar6 >> 8" identifier >> number_literal) )))) ;) (expression_statement "*(char *)(puVar21 + 2) = (char)(uVar42 >> 8);" (assignment_expression "*(char *)(puVar21 + 2) = (char)(uVar42 >> 8)" (pointer_expression "*(char *)(puVar21 + 2)" * (cast_expression "(char *)(puVar21 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 2)" ( (binary_expression "puVar21 + 2" identifier + number_literal) )))) = (cast_expression "(char)(uVar42 >> 8)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(uVar42 >> 8)" ( (binary_expression "uVar42 >> 8" identifier >> number_literal) )))) ;) (expression_statement "puVar21 = (ushort *)((int)puVar21 + iVar4);" (assignment_expression "puVar21 = (ushort *)((int)puVar21 + iVar4)" identifier = (cast_expression "(ushort *)((int)puVar21 + iVar4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar4)" ( (binary_expression "(int)puVar21 + iVar4" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(local_28 != iVar34)" ( (binary_expression "local_28 != iVar34" identifier != identifier) )) ;) (expression_statement "iVar4 = param_1[0x4b];" (assignment_expression "iVar4 = param_1[0x4b]" identifier = (subscript_expression "param_1[0x4b]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0002124c;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_00021248;" goto statement_identifier ;) })) (if_statement "if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }" if (parenthesized_expression "(local_20 == 2)" ( (binary_expression "local_20 == 2" identifier == number_literal) )) (compound_statement "{\n        iVar4 = 3;\n      }" { (expression_statement "iVar4 = 3;" (assignment_expression "iVar4 = 3" identifier = number_literal) ;) }) (else_clause "else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }" else (compound_statement "{\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }" { (expression_statement "iVar4 = 4;" (assignment_expression "iVar4 = 4" identifier = number_literal) ;) (if_statement "if (local_20 != 6) goto LAB_00021248;" if (parenthesized_expression "(local_20 != 6)" ( (binary_expression "local_20 != 6" identifier != number_literal) )) (goto_statement "goto LAB_00021248;" goto statement_identifier ;)) }))) (expression_statement "iVar34 = 0;" (assignment_expression "iVar34 = 0" identifier = number_literal) ;) (if_statement "if (local_28 == 0) goto LAB_00021248;" if (parenthesized_expression "(local_28 == 0)" ( (binary_expression "local_28 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021248;" goto statement_identifier ;)) (do_statement "do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);" do (compound_statement "{\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      }" { (expression_statement "uVar12 = *puVar21;" (assignment_expression "uVar12 = *puVar21" identifier = (pointer_expression "*puVar21" * identifier)) ;) (expression_statement "iVar34 = iVar34 + 1;" (assignment_expression "iVar34 = iVar34 + 1" identifier = (binary_expression "iVar34 + 1" identifier + number_literal)) ;) (expression_statement "*(char *)puVar21 = (char)uVar12 + *(char *)puVar21;" (assignment_expression "*(char *)puVar21 = (char)uVar12 + *(char *)puVar21" (pointer_expression "*(char *)puVar21" * (cast_expression "(char *)puVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = (binary_expression "(char)uVar12 + *(char *)puVar21" (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier) + (pointer_expression "*(char *)puVar21" * (cast_expression "(char *)puVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)))) ;) (expression_statement "*(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);" (assignment_expression "*(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1)" (pointer_expression "*(char *)(puVar21 + 1)" * (cast_expression "(char *)(puVar21 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 1)" ( (binary_expression "puVar21 + 1" identifier + number_literal) )))) = (binary_expression "(char)uVar12 + *(char *)(puVar21 + 1)" (cast_expression "(char)uVar12" ( (type_descriptor "char" primitive_type) ) identifier) + (pointer_expression "*(char *)(puVar21 + 1)" * (cast_expression "(char *)(puVar21 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar21 + 1)" ( (binary_expression "puVar21 + 1" identifier + number_literal) )))))) ;) (expression_statement "puVar21 = (ushort *)((int)puVar21 + iVar4);" (assignment_expression "puVar21 = (ushort *)((int)puVar21 + iVar4)" identifier = (cast_expression "(ushort *)((int)puVar21 + iVar4)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar21 + iVar4)" ( (binary_expression "(int)puVar21 + iVar4" (cast_expression "(int)puVar21" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) }) while (parenthesized_expression "(local_28 != iVar34)" ( (binary_expression "local_28 != iVar34" identifier != identifier) )) ;) (expression_statement "iVar4 = param_1[0x4b];" (assignment_expression "iVar4 = param_1[0x4b]" identifier = (subscript_expression "param_1[0x4b]" identifier [ number_literal ])) ;) }))) (labeled_statement "LAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }" statement_identifier : (if_statement "if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_000277a0(param_1,&local_28);\n    }" { (expression_statement "FUN_000277a0(param_1,&local_28);" (call_expression "FUN_000277a0(param_1,&local_28)" identifier (argument_list "(param_1,&local_28)" ( identifier , (pointer_expression "&local_28" & identifier) ))) ;) }))) (if_statement "if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }" if (parenthesized_expression "(*(byte *)((int)param_1 + 0x207) != 0)" ( (binary_expression "*(byte *)((int)param_1 + 0x207) != 0" (pointer_expression "*(byte *)((int)param_1 + 0x207)" * (cast_expression "(byte *)((int)param_1 + 0x207)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x207)" ( (binary_expression "(int)param_1 + 0x207" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }" { (if_statement "if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;" if (parenthesized_expression "(*(byte *)((int)param_1 + 0x207) == (byte)local_1e)" ( (binary_expression "*(byte *)((int)param_1 + 0x207) == (byte)local_1e" (pointer_expression "*(byte *)((int)param_1 + 0x207)" * (cast_expression "(byte *)((int)param_1 + 0x207)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x207)" ( (binary_expression "(int)param_1 + 0x207" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (cast_expression "(byte)local_1e" ( (type_descriptor "byte" type_identifier) ) identifier)) )) (goto_statement "goto LAB_00021274;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_s_nt_0005301c + -0x3c0)" ( identifier , (binary_expression "PTR_s_nt_0005301c + -0x3c0" identifier + number_literal) ))) ;) (labeled_statement "LAB_00021340:\n      FUN_00030bc4();" statement_identifier : (expression_statement "FUN_00030bc4();" (call_expression "FUN_00030bc4()" identifier (argument_list "()" ( ))) ;)) (goto_statement "goto LAB_00021100;" goto statement_identifier ;) })) (expression_statement "*(byte *)((int)param_1 + 0x207) = (byte)local_1e;" (assignment_expression "*(byte *)((int)param_1 + 0x207) = (byte)local_1e" (pointer_expression "*(byte *)((int)param_1 + 0x207)" * (cast_expression "(byte *)((int)param_1 + 0x207)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x207)" ( (binary_expression "(int)param_1 + 0x207" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = (cast_expression "(byte)local_1e" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "puVar19 = PTR_s_nt_0005301c;" (assignment_expression "puVar19 = PTR_s_nt_0005301c" identifier = identifier) ;) (if_statement "if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;" if (parenthesized_expression "(*(byte *)((int)param_1 + 0x206) < (byte)local_1e)" ( (binary_expression "*(byte *)((int)param_1 + 0x206) < (byte)local_1e" (pointer_expression "*(byte *)((int)param_1 + 0x206)" * (cast_expression "(byte *)((int)param_1 + 0x206)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x206)" ( (binary_expression "(int)param_1 + 0x206" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < (cast_expression "(byte)local_1e" ( (type_descriptor "byte" type_identifier) ) identifier)) )) (goto_statement "goto LAB_000215f4;" goto statement_identifier ;)) (labeled_statement "LAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }" statement_identifier : (if_statement "if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }" if (parenthesized_expression "((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0))" ( (binary_expression "(*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)" (parenthesized_expression "(*(char *)(param_1 + 0x7f) == '\0')" ( (binary_expression "*(char *)(param_1 + 0x7f) == '\0'" (pointer_expression "*(char *)(param_1 + 0x7f)" * (cast_expression "(char *)(param_1 + 0x7f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x7f)" ( (binary_expression "param_1 + 0x7f" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "((param_1[0x4b] & 2) == 0)" ( (binary_expression "(param_1[0x4b] & 2) == 0" (parenthesized_expression "(param_1[0x4b] & 2)" ( (binary_expression "param_1[0x4b] & 2" (subscript_expression "param_1[0x4b]" identifier [ number_literal ]) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }" { (if_statement "if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }" { (expression_statement "FUN_0002fb24(param_1,param_2,0xffffffff);" (call_expression "FUN_0002fb24(param_1,param_2,0xffffffff)" identifier (argument_list "(param_1,param_2,0xffffffff)" ( identifier , identifier , number_literal ))) ;) })) (if_statement "if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }" { (expression_statement "FUN_0002fb24(param_1,param_3,0xffffffff);" (call_expression "FUN_0002fb24(param_1,param_3,0xffffffff)" identifier (argument_list "(param_1,param_3,0xffffffff)" ( identifier , identifier , number_literal ))) ;) })) }) (else_clause "else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }" else (compound_statement "{\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }" { (if_statement "if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }" if (parenthesized_expression "(*(byte *)((int)param_1 + 0x1fd) < 6)" ( (binary_expression "*(byte *)((int)param_1 + 0x1fd) < 6" (pointer_expression "*(byte *)((int)param_1 + 0x1fd)" * (cast_expression "(byte *)((int)param_1 + 0x1fd)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x1fd)" ( (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) < number_literal) )) (compound_statement "{\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }" { (expression_statement "FUN_0003010c(&local_28,param_1[0x75] + 1);" (call_expression "FUN_0003010c(&local_28,param_1[0x75] + 1)" identifier (argument_list "(&local_28,param_1[0x75] + 1)" ( (pointer_expression "&local_28" & identifier) , (binary_expression "param_1[0x75] + 1" (subscript_expression "param_1[0x75]" identifier [ number_literal ]) + number_literal) ))) ;) })) (if_statement "if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0002fb24(param_1,param_3,1);\n      }" { (expression_statement "FUN_0002fb24(param_1,param_3,1);" (call_expression "FUN_0002fb24(param_1,param_3,1)" identifier (argument_list "(param_1,param_3,1)" ( identifier , identifier , number_literal ))) ;) })) (if_statement "if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n        FUN_0002fb24(param_1,param_2,0);\n      }" { (expression_statement "FUN_0002fb24(param_1,param_2,0);" (call_expression "FUN_0002fb24(param_1,param_2,0)" identifier (argument_list "(param_1,param_2,0)" ( identifier , identifier , number_literal ))) ;) })) })))) (expression_statement "FUN_00030a70(param_1);" (call_expression "FUN_00030a70(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }" if (parenthesized_expression "((code *)param_1[0x9c] != (code *)0x0)" ( (binary_expression "(code *)param_1[0x9c] != (code *)0x0" (cast_expression "(code *)param_1[0x9c]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x9c]" identifier [ number_literal ])) != (cast_expression "(code *)0x0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }" { (expression_statement "(*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));" (call_expression "(*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd))" (parenthesized_expression "(*(code *)param_1[0x9c])" ( (pointer_expression "*(code *)param_1[0x9c]" * (cast_expression "(code *)param_1[0x9c]" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[0x9c]" identifier [ number_literal ]))) )) (argument_list "(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd))" ( identifier , (subscript_expression "param_1[0x72]" identifier [ number_literal ]) , (pointer_expression "*(undefined1 *)((int)param_1 + 0x1fd)" * (cast_expression "(undefined1 *)((int)param_1 + 0x1fd)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x1fd)" ( (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) })) })) (labeled_statement "LAB_000212f4:\n  iVar4 = *(int *)puVar3;" statement_identifier : (expression_statement "iVar4 = *(int *)puVar3;" (assignment_expression "iVar4 = *(int *)puVar3" identifier = (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (if_statement "if (local_1c == iVar4) {\n    return iVar4;\n  }" if (parenthesized_expression "(local_1c == iVar4)" ( (binary_expression "local_1c == iVar4" identifier == identifier) )) (compound_statement "{\n    return iVar4;\n  }" { (return_statement "return iVar4;" return identifier ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_00053484)();" (call_expression "(*(code *)PTR___stack_chk_fail_00053484)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00053484)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_00053484" * (cast_expression "(code *)PTR___stack_chk_fail_00053484" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "param_1 = unaff_s0;" (assignment_expression "param_1 = unaff_s0" identifier = identifier) ;) (expression_statement "param_3 = unaff_s2;" (assignment_expression "param_3 = unaff_s2" identifier = identifier) ;) (labeled_statement "LAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);" statement_identifier : (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,PTR_s_nt_0005301c + -0x3fc)" ( identifier , (binary_expression "PTR_s_nt_0005301c + -0x3fc" identifier + number_literal) ))) ;)) (labeled_statement "LAB_000215e0:\n  puVar19 = PTR_s_nt_0005301c + -0x9d4;" statement_identifier : (expression_statement "puVar19 = PTR_s_nt_0005301c + -0x9d4;" (assignment_expression "puVar19 = PTR_s_nt_0005301c + -0x9d4" identifier = (binary_expression "PTR_s_nt_0005301c + -0x9d4" identifier + number_literal)) ;)) (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,puVar19);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,puVar19)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,puVar19)" ( identifier , identifier ))) ;) (labeled_statement "LAB_000215f4:\n  puVar29 = param_1;" statement_identifier : (expression_statement "puVar29 = param_1;" (assignment_expression "puVar29 = param_1" identifier = identifier) ;)) (expression_statement "puVar39 = PTR_png_error_0005340c;" (assignment_expression "puVar39 = PTR_png_error_0005340c" identifier = identifier) ;) (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" ( (pointer_expression "*(code *)PTR_png_error_0005340c" * (cast_expression "(code *)PTR_png_error_0005340c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,puVar19 + -0x3d8)" ( identifier , (binary_expression "puVar19 + -0x3d8" identifier + number_literal) ))) ;) (expression_statement "piVar5 = *(int **)(puVar39 + 0x31eb8);" (assignment_expression "piVar5 = *(int **)(puVar39 + 0x31eb8)" identifier = (pointer_expression "*(int **)(puVar39 + 0x31eb8)" * (cast_expression "(int **)(puVar39 + 0x31eb8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31eb8)" ( (binary_expression "puVar39 + 0x31eb8" identifier + number_literal) ))))) ;) (expression_statement "piVar35 = (int *)*puVar29;" (assignment_expression "piVar35 = (int *)*puVar29" identifier = (cast_expression "(int *)*puVar29" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar29" * identifier))) ;) (expression_statement "local_74 = *piVar5;" (assignment_expression "local_74 = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "local_6c = puVar3;" (assignment_expression "local_6c = puVar3" identifier = identifier) ;) (expression_statement "uVar31 = piVar35[4];" (assignment_expression "uVar31 = piVar35[4]" identifier = (subscript_expression "piVar35[4]" identifier [ number_literal ])) ;) (expression_statement "uVar16 = uVar31 & 4;" (assignment_expression "uVar16 = uVar31 & 4" identifier = (binary_expression "uVar31 & 4" identifier & number_literal)) ;) (expression_statement "puVar28 = *(undefined4 **)*piVar35;" (assignment_expression "puVar28 = *(undefined4 **)*piVar35" identifier = (pointer_expression "*(undefined4 **)*piVar35" * (cast_expression "(undefined4 **)*piVar35" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar35" * identifier)))) ;) (expression_statement "iVar4 = ((undefined4 *)*piVar35)[1];" (assignment_expression "iVar4 = ((undefined4 *)*piVar35)[1]" identifier = (subscript_expression "((undefined4 *)*piVar35)[1]" (parenthesized_expression "((undefined4 *)*piVar35)" ( (cast_expression "(undefined4 *)*piVar35" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar35" * identifier)) )) [ number_literal ])) ;) (expression_statement "local_70 = param_1;" (assignment_expression "local_70 = param_1" identifier = identifier) ;) (expression_statement "local_68 = param_3;" (assignment_expression "local_68 = param_3" identifier = identifier) ;) (expression_statement "local_64 = param_2;" (assignment_expression "local_64 = param_2" identifier = identifier) ;) (expression_statement "(**(code **)(puVar39 + 0x31d60))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31d60))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d60))" ( (pointer_expression "**(code **)(puVar39 + 0x31d60)" * (pointer_expression "*(code **)(puVar39 + 0x31d60)" * (cast_expression "(code **)(puVar39 + 0x31d60)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d60)" ( (binary_expression "puVar39 + 0x31d60" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) (expression_statement "uVar6 = FUN_0001e440(puVar28);" (assignment_expression "uVar6 = FUN_0001e440(puVar28)" identifier = (call_expression "FUN_0001e440(puVar28)" identifier (argument_list "(puVar28)" ( identifier )))) ;) (expression_statement "uVar42 = uVar6 & 0xfffffff7 ^ uVar31;" (assignment_expression "uVar42 = uVar6 & 0xfffffff7 ^ uVar31" identifier = (binary_expression "uVar6 & 0xfffffff7 ^ uVar31" (binary_expression "uVar6 & 0xfffffff7" identifier & number_literal) ^ identifier)) ;) (if_statement "if ((uVar42 & 2) == 0) {\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }" if (parenthesized_expression "((uVar42 & 2) == 0)" ( (binary_expression "(uVar42 & 2) == 0" (parenthesized_expression "(uVar42 & 2)" ( (binary_expression "uVar42 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }" { (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (if_statement "if ((uVar6 & 4) != 0) goto LAB_000217f4;" if (parenthesized_expression "((uVar6 & 4) != 0)" ( (binary_expression "(uVar6 & 4) != 0" (parenthesized_expression "(uVar6 & 4)" ( (binary_expression "uVar6 & 4" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000217f4;" goto statement_identifier ;)) (labeled_statement "LAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);" statement_identifier : (expression_statement "pcVar40 = *(code **)(puVar39 + 0x31d88);" (assignment_expression "pcVar40 = *(code **)(puVar39 + 0x31d88)" identifier = (pointer_expression "*(code **)(puVar39 + 0x31d88)" * (cast_expression "(code **)(puVar39 + 0x31d88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d88)" ( (binary_expression "puVar39 + 0x31d88" identifier + number_literal) ))))) ;)) }) (else_clause "else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }" else (compound_statement "{\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }" { (if_statement "if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }" if (parenthesized_expression "((uVar31 & 2) == 0)" ( (binary_expression "(uVar31 & 2) == 0" (parenthesized_expression "(uVar31 & 2)" ( (binary_expression "uVar31 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }" { (expression_statement "(**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);" (call_expression "(**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff)" (parenthesized_expression "(**(code **)(puVar39 + 0x31dac))" ( (pointer_expression "**(code **)(puVar39 + 0x31dac)" * (pointer_expression "*(code **)(puVar39 + 0x31dac)" * (cast_expression "(code **)(puVar39 + 0x31dac)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31dac)" ( (binary_expression "puVar39 + 0x31dac" identifier + number_literal) ))))) )) (argument_list "(puVar28,1,0xffffffff,0xffffffff)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "uVar36 = uVar6 & 1;" (assignment_expression "uVar36 = uVar6 & 1" identifier = (binary_expression "uVar6 & 1" identifier & number_literal)) ;) }) (else_clause "else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }" else (compound_statement "{\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }" { (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(puVar39 + 0x31d00))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31d00))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d00))" ( (pointer_expression "**(code **)(puVar39 + 0x31d00)" * (pointer_expression "*(code **)(puVar39 + 0x31d00)" * (cast_expression "(code **)(puVar39 + 0x31d00)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d00)" ( (binary_expression "puVar39 + 0x31d00" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) }))) (expression_statement "uVar42 = uVar42 & 0xfffffffd;" (assignment_expression "uVar42 = uVar42 & 0xfffffffd" identifier = (binary_expression "uVar42 & 0xfffffffd" identifier & number_literal)) ;) (if_statement "if ((uVar6 & 4) == 0) goto LAB_000216e8;" if (parenthesized_expression "((uVar6 & 4) == 0)" ( (binary_expression "(uVar6 & 4) == 0" (parenthesized_expression "(uVar6 & 4)" ( (binary_expression "uVar6 & 4" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_000216e8;" goto statement_identifier ;)) (labeled_statement "LAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);" statement_identifier : (expression_statement "pcVar40 = *(code **)(puVar39 + 0x31d88);" (assignment_expression "pcVar40 = *(code **)(puVar39 + 0x31d88)" identifier = (pointer_expression "*(code **)(puVar39 + 0x31d88)" * (cast_expression "(code **)(puVar39 + 0x31d88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d88)" ( (binary_expression "puVar39 + 0x31d88" identifier + number_literal) ))))) ;)) (if_statement "if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }" if (parenthesized_expression "((piVar35[5] & 4U) == 0)" ( (binary_expression "(piVar35[5] & 4U) == 0" (parenthesized_expression "(piVar35[5] & 4U)" ( (binary_expression "piVar35[5] & 4U" (subscript_expression "piVar35[5]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }" { (expression_statement "(*pcVar40)(puVar28,0,100000);" (call_expression "(*pcVar40)(puVar28,0,100000)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(puVar28,0,100000)" ( identifier , number_literal , number_literal ))) ;) (goto_statement "goto joined_r0x0002181c;" goto statement_identifier ;) })) }))) (expression_statement "(*pcVar40)(puVar28,0,0xffffffff);" (call_expression "(*pcVar40)(puVar28,0,0xffffffff)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(puVar28,0,0xffffffff)" ( identifier , number_literal , number_literal ))) ;) (labeled_statement "joined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }" statement_identifier : (if_statement "if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    uVar26 = 0;\n    iVar34 = -1;\n  }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (expression_statement "iVar34 = -1;" (assignment_expression "iVar34 = -1" identifier = number_literal) ;) }) (else_clause "else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }" else (compound_statement "{\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }" { (expression_statement "uVar26 = uVar6 & 1;" (assignment_expression "uVar26 = uVar6 & 1" identifier = (binary_expression "uVar6 & 1" identifier & number_literal)) ;) (expression_statement "iVar34 = 100000;" (assignment_expression "iVar34 = 100000" identifier = number_literal) ;) })))) (if_statement "if ((uVar42 & 0x40) != 0) {\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }" if (parenthesized_expression "((uVar42 & 0x40) != 0)" ( (binary_expression "(uVar42 & 0x40) != 0" (parenthesized_expression "(uVar42 & 0x40)" ( (binary_expression "uVar42 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }" { (expression_statement "uVar26 = 2;" (assignment_expression "uVar26 = 2" identifier = number_literal) ;) (expression_statement "uVar42 = uVar42 & 0xffffffbf;" (assignment_expression "uVar42 = uVar42 & 0xffffffbf" identifier = (binary_expression "uVar42 & 0xffffffbf" identifier & number_literal)) ;) })) (if_statement "if (uVar36 != 0) goto LAB_00021afc;" if (parenthesized_expression "(uVar36 != 0)" ( (binary_expression "uVar36 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021afc;" goto statement_identifier ;)) (do_statement "do {\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );" do (compound_statement "{\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  }" { (expression_statement "uVar7 = uVar42 & 4;" (assignment_expression "uVar7 = uVar42 & 4" identifier = (binary_expression "uVar42 & 4" identifier & number_literal)) ;) (labeled_statement "LAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }" statement_identifier : (if_statement "if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }" if (parenthesized_expression "(uVar7 != 0)" ( (binary_expression "uVar7 != 0" identifier != number_literal) )) (compound_statement "{\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }" { (if_statement "if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }" { (expression_statement "(**(code **)(puVar39 + 0x31cc8))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31cc8))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31cc8))" ( (pointer_expression "**(code **)(puVar39 + 0x31cc8)" * (pointer_expression "*(code **)(puVar39 + 0x31cc8)" * (cast_expression "(code **)(puVar39 + 0x31cc8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31cc8)" ( (binary_expression "puVar39 + 0x31cc8" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) }) (else_clause "else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }" else (compound_statement "{\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }" { (expression_statement "(**(code **)(puVar39 + 0x31cf8))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31cf8))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31cf8))" ( (pointer_expression "**(code **)(puVar39 + 0x31cf8)" * (pointer_expression "*(code **)(puVar39 + 0x31cf8)" * (cast_expression "(code **)(puVar39 + 0x31cf8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31cf8)" ( (binary_expression "puVar39 + 0x31cf8" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) }))) (expression_statement "uVar42 = uVar42 & 0xfffffffb;" (assignment_expression "uVar42 = uVar42 & 0xfffffffb" identifier = (binary_expression "uVar42 & 0xfffffffb" identifier & number_literal)) ;) }))) (if_statement "if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }" if (parenthesized_expression "((uVar42 & 1) == 0)" ( (binary_expression "(uVar42 & 1) == 0" (parenthesized_expression "(uVar42 & 1)" ( (binary_expression "uVar42 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar6 = 0;\n    }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }" else (compound_statement "{\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }" { (expression_statement "uVar20 = 0xffff;" (assignment_expression "uVar20 = 0xffff" identifier = number_literal) ;) (if_statement "if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" if (parenthesized_expression "((uVar6 & 1) == 0)" ( (binary_expression "(uVar6 & 1) == 0" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }" { (expression_statement "bVar1 = (uVar31 & 0x20) != 0;" (assignment_expression "bVar1 = (uVar31 & 0x20) != 0" identifier = (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" ( (binary_expression "uVar31 & 0x20" identifier & number_literal) )) != number_literal)) ;) (if_statement "if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          uVar20 = 0xff;\n        }" { (expression_statement "uVar20 = 0xff;" (assignment_expression "uVar20 = 0xff" identifier = number_literal) ;) })) (if_statement "if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          uVar42 = uVar42 & 0xffffffdf;\n        }" { (expression_statement "uVar42 = uVar42 & 0xffffffdf;" (assignment_expression "uVar42 = uVar42 & 0xffffffdf" identifier = (binary_expression "uVar42 & 0xffffffdf" identifier & number_literal)) ;) })) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);" (call_expression "(**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d8c))" ( (pointer_expression "**(code **)(puVar39 + 0x31d8c)" * (pointer_expression "*(code **)(puVar39 + 0x31d8c)" * (cast_expression "(code **)(puVar39 + 0x31d8c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d8c)" ( (binary_expression "puVar39 + 0x31d8c" identifier + number_literal) ))))) )) (argument_list "(puVar28,uVar20,!bVar1)" ( identifier , identifier , (unary_expression "!bVar1" ! identifier) ))) ;) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" identifier = (binary_expression "uVar42 & 0xfffffffe" identifier & number_literal)) ;) }) (else_clause "else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" else (if_statement "if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" if (parenthesized_expression "(uVar36 == 0)" ( (binary_expression "uVar36 == 0" identifier == number_literal) )) (compound_statement "{\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }" { (if_statement "if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }" if (parenthesized_expression "((uVar31 & 4) == 0)" ( (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" ( (binary_expression "uVar31 & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }" { (expression_statement "pbVar8 = (byte *)puVar29[4];" (assignment_expression "pbVar8 = (byte *)puVar29[4]" identifier = (cast_expression "(byte *)puVar29[4]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar29[4]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }" if (parenthesized_expression "(pbVar8 == (byte *)0x0)" ( (binary_expression "pbVar8 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }" { (expression_statement "uVar26 = 2;" (assignment_expression "uVar26 = 2" identifier = number_literal) ;) (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" identifier = number_literal) ;) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" identifier = (binary_expression "uVar42 & 0xfffffffe" identifier & number_literal)) ;) }) (else_clause "else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }" else (compound_statement "{\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }" { (expression_statement "local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;" (assignment_expression "local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff" identifier = (binary_expression "CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff" (call_expression "CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8)" identifier (argument_list "((short)(local_80 >> 0x10),(ushort)*pbVar8)" ( (cast_expression "(short)(local_80 >> 0x10)" ( (type_descriptor "short" (sized_type_specifier "short" short)) ) (parenthesized_expression "(local_80 >> 0x10)" ( (binary_expression "local_80 >> 0x10" identifier >> number_literal) ))) , (binary_expression "(ushort)*pbVar8" (parenthesized_expression "(ushort)" ( identifier )) * identifier) ))) & number_literal)) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "local_7c = (ushort)pbVar8[1];" (assignment_expression "local_7c = (ushort)pbVar8[1]" identifier = (cast_expression "(ushort)pbVar8[1]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "pbVar8[1]" identifier [ number_literal ]))) ;) (expression_statement "local_7a = (ushort)pbVar8[2];" (assignment_expression "local_7a = (ushort)pbVar8[2]" identifier = (cast_expression "(ushort)pbVar8[2]" ( (type_descriptor "ushort" type_identifier) ) (subscript_expression "pbVar8[2]" identifier [ number_literal ]))) ;) (expression_statement "local_78 = local_7c;" (assignment_expression "local_78 = local_7c" identifier = identifier) ;) (expression_statement "(**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);" (call_expression "(**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0)" (parenthesized_expression "(**(code **)(puVar39 + 0x31e58))" ( (pointer_expression "**(code **)(puVar39 + 0x31e58)" * (pointer_expression "*(code **)(puVar39 + 0x31e58)" * (cast_expression "(code **)(puVar39 + 0x31e58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e58)" ( (binary_expression "puVar39 + 0x31e58" identifier + number_literal) ))))) )) (argument_list "(puVar28,&local_80,1,0,0)" ( identifier , (pointer_expression "&local_80" & identifier) , number_literal , number_literal , number_literal ))) ;) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" identifier = (binary_expression "uVar42 & 0xfffffffe" identifier & number_literal)) ;) }))) }) (else_clause "else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }" else (compound_statement "{\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(puVar39 + 0x31d34))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31d34))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d34))" ( (pointer_expression "**(code **)(puVar39 + 0x31d34)" * (pointer_expression "*(code **)(puVar39 + 0x31d34)" * (cast_expression "(code **)(puVar39 + 0x31d34)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d34)" ( (binary_expression "puVar39 + 0x31d34" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" identifier = (binary_expression "uVar42 & 0xfffffffe" identifier & number_literal)) ;) }))) }) (else_clause "else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" else (compound_statement "{\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" { (expression_statement "uVar36 = 2;" (assignment_expression "uVar36 = 2" identifier = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" identifier = (binary_expression "uVar42 & 0xfffffffe" identifier & number_literal)) ;) }))))) }))) (expression_statement "(**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);" (call_expression "(**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d88))" ( (pointer_expression "**(code **)(puVar39 + 0x31d88)" * (pointer_expression "*(code **)(puVar39 + 0x31d88)" * (cast_expression "(code **)(puVar39 + 0x31d88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d88)" ( (binary_expression "puVar39 + 0x31d88" identifier + number_literal) ))))) )) (argument_list "(puVar28,uVar26,iVar34)" ( identifier , identifier , identifier ))) ;) (if_statement "if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }" if (parenthesized_expression "((uVar42 & 0x10) != 0)" ( (binary_expression "(uVar42 & 0x10) != 0" (parenthesized_expression "(uVar42 & 0x10)" ( (binary_expression "uVar42 & 0x10" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }" { (if_statement "if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }" if (parenthesized_expression "((uVar31 & 2) == 0)" ( (binary_expression "(uVar31 & 2) == 0" (parenthesized_expression "(uVar31 & 2)" ( (binary_expression "uVar31 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }" { (expression_statement "uVar31 = uVar31 & 0xffffffef;" (assignment_expression "uVar31 = uVar31 & 0xffffffef" identifier = (binary_expression "uVar31 & 0xffffffef" identifier & number_literal)) ;) (expression_statement "uVar42 = uVar42 & 0xffffffef;" (assignment_expression "uVar42 = uVar42 & 0xffffffef" identifier = (binary_expression "uVar42 & 0xffffffef" identifier & number_literal)) ;) }) (else_clause "else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }" else (compound_statement "{\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }" { (expression_statement "(**(code **)(puVar39 + 0x31cec))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31cec))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31cec))" ( (pointer_expression "**(code **)(puVar39 + 0x31cec)" * (pointer_expression "*(code **)(puVar39 + 0x31cec)" * (cast_expression "(code **)(puVar39 + 0x31cec)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31cec)" ( (binary_expression "puVar39 + 0x31cec" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) (expression_statement "uVar42 = uVar42 & 0xffffffef;" (assignment_expression "uVar42 = uVar42 & 0xffffffef" identifier = (binary_expression "uVar42 & 0xffffffef" identifier & number_literal)) ;) }))) })) (if_statement "if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }" if (parenthesized_expression "((uVar42 & 0x20) != 0)" ( (binary_expression "(uVar42 & 0x20) != 0" (parenthesized_expression "(uVar42 & 0x20)" ( (binary_expression "uVar42 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }" { (if_statement "if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" if (parenthesized_expression "((uVar31 & 1) == 0)" ( (binary_expression "(uVar31 & 1) == 0" (parenthesized_expression "(uVar31 & 1)" ( (binary_expression "uVar31 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }" { (expression_statement "uVar31 = uVar31 & 0xffffffdf;" (assignment_expression "uVar31 = uVar31 & 0xffffffdf" identifier = (binary_expression "uVar31 & 0xffffffdf" identifier & number_literal)) ;) (expression_statement "uVar42 = uVar42 & 0xffffffdf;" (assignment_expression "uVar42 = uVar42 & 0xffffffdf" identifier = (binary_expression "uVar42 & 0xffffffdf" identifier & number_literal)) ;) }) (else_clause "else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" else (if_statement "if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" if (parenthesized_expression "(uVar36 == 2)" ( (binary_expression "uVar36 == 2" identifier == number_literal) )) (compound_statement "{\n        uVar42 = uVar42 & 0xffffffdf;\n      }" { (expression_statement "uVar42 = uVar42 & 0xffffffdf;" (assignment_expression "uVar42 = uVar42 & 0xffffffdf" identifier = (binary_expression "uVar42 & 0xffffffdf" identifier & number_literal)) ;) }) (else_clause "else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" else (compound_statement "{\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" { (expression_statement "(**(code **)(puVar39 + 0x31f04))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31f04))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31f04))" ( (pointer_expression "**(code **)(puVar39 + 0x31f04)" * (pointer_expression "*(code **)(puVar39 + 0x31f04)" * (cast_expression "(code **)(puVar39 + 0x31f04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31f04)" ( (binary_expression "puVar39 + 0x31f04" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier ))) ;) (expression_statement "uVar42 = uVar42 & 0xffffffdf;" (assignment_expression "uVar42 = uVar42 & 0xffffffdf" identifier = (binary_expression "uVar42 & 0xffffffdf" identifier & number_literal)) ;) }))))) })) (if_statement "if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }" if (parenthesized_expression "(uVar42 != 0)" ( (binary_expression "uVar42 != 0" identifier != number_literal) )) (compound_statement "{\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }" { (expression_statement "(**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);" (call_expression "(**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390)" (parenthesized_expression "(**(code **)(puVar39 + 0x31e08))" ( (pointer_expression "**(code **)(puVar39 + 0x31e08)" * (pointer_expression "*(code **)(puVar39 + 0x31e08)" * (cast_expression "(code **)(puVar39 + 0x31e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e08)" ( (binary_expression "puVar39 + 0x31e08" identifier + number_literal) ))))) )) (argument_list "(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390)" ( identifier , (binary_expression "*(int *)(puVar39 + 0x31a18) + -0x390" (pointer_expression "*(int *)(puVar39 + 0x31a18)" * (cast_expression "(int *)(puVar39 + 0x31a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar39 + 0x31a18)" ( (binary_expression "puVar39 + 0x31a18" identifier + number_literal) )))) + number_literal) ))) ;) (goto_statement "goto LAB_00021ce8;" goto statement_identifier ;) })) (expression_statement "FUN_0001e55c();" (call_expression "FUN_0001e55c()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }" if (parenthesized_expression "((uVar6 == 0) && (uVar36 != 2))" ( (binary_expression "(uVar6 == 0) && (uVar36 != 2)" (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar36 != 2)" ( (binary_expression "uVar36 != 2" identifier != number_literal) ))) )) (compound_statement "{\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }" { (expression_statement "iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);" (assignment_expression "iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28)" identifier = (call_expression "(**(code **)(puVar39 + 0x31e24))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31e24))" ( (pointer_expression "**(code **)(puVar39 + 0x31e24)" * (pointer_expression "*(code **)(puVar39 + 0x31e24)" * (cast_expression "(code **)(puVar39 + 0x31e24)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e24)" ( (binary_expression "puVar39 + 0x31e24" identifier + number_literal) ))))) )) (argument_list "(puVar28)" ( identifier )))) ;) }) (else_clause "else {\n      iVar34 = 0;\n    }" else (compound_statement "{\n      iVar34 = 0;\n    }" { (expression_statement "iVar34 = 0;" (assignment_expression "iVar34 = 0" identifier = number_literal) ;) }))) (expression_statement "(**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);" (call_expression "(**(code **)(puVar39 + 0x31f14))(puVar28,iVar4)" (parenthesized_expression "(**(code **)(puVar39 + 0x31f14))" ( (pointer_expression "**(code **)(puVar39 + 0x31f14)" * (pointer_expression "*(code **)(puVar39 + 0x31f14)" * (cast_expression "(code **)(puVar39 + 0x31f14)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31f14)" ( (binary_expression "puVar39 + 0x31f14" identifier + number_literal) ))))) )) (argument_list "(puVar28,iVar4)" ( identifier , identifier ))) ;) (expression_statement "uVar42 = *(byte *)(iVar4 + 0x19) & 2;" (assignment_expression "uVar42 = *(byte *)(iVar4 + 0x19) & 2" identifier = (binary_expression "*(byte *)(iVar4 + 0x19) & 2" (pointer_expression "*(byte *)(iVar4 + 0x19)" * (cast_expression "(byte *)(iVar4 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x19)" ( (binary_expression "iVar4 + 0x19" identifier + number_literal) )))) & number_literal)) ;) (if_statement "if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }" if (parenthesized_expression "((*(byte *)(iVar4 + 0x19) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar4 + 0x19) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x19) & 4)" ( (binary_expression "*(byte *)(iVar4 + 0x19) & 4" (pointer_expression "*(byte *)(iVar4 + 0x19)" * (cast_expression "(byte *)(iVar4 + 0x19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x19)" ( (binary_expression "iVar4 + 0x19" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }" { (if_statement "if (uVar6 != 0) goto LAB_00021cf4;" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021cf4;" goto statement_identifier ;)) }) (else_clause "else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }" else (if_statement "if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }" { (if_statement "if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }" if (parenthesized_expression "(uVar36 == 2)" ( (binary_expression "uVar36 == 2" identifier == number_literal) )) (compound_statement "{\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }" { (if_statement "if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }" if (parenthesized_expression "((uVar31 & 1) != 0)" ( (binary_expression "(uVar31 & 1) != 0" (parenthesized_expression "(uVar31 & 1)" ( (binary_expression "uVar31 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          uVar42 = uVar42 | 1;\n        }" { (expression_statement "uVar42 = uVar42 | 1;" (assignment_expression "uVar42 = uVar42 | 1" identifier = (binary_expression "uVar42 | 1" identifier | number_literal)) ;) })) }) (else_clause "else {\n        uVar42 = uVar42 | 1;\n      }" else (compound_statement "{\n        uVar42 = uVar42 | 1;\n      }" { (expression_statement "uVar42 = uVar42 | 1;" (assignment_expression "uVar42 = uVar42 | 1" identifier = (binary_expression "uVar42 | 1" identifier | number_literal)) ;) }))) })))) (if_statement "if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }" if (parenthesized_expression "((uVar31 & 0x40) != 0)" ( (binary_expression "(uVar31 & 0x40) != 0" (parenthesized_expression "(uVar31 & 0x40)" ( (binary_expression "uVar31 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar42 = uVar42 | 0x40;\n    }" { (expression_statement "uVar42 = uVar42 | 0x40;" (assignment_expression "uVar42 = uVar42 | 0x40" identifier = (binary_expression "uVar42 | 0x40" identifier | number_literal)) ;) })) (if_statement "if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }" if (parenthesized_expression "(*(char *)(iVar4 + 0x18) == '\x10')" ( (binary_expression "*(char *)(iVar4 + 0x18) == '\x10'" (pointer_expression "*(char *)(iVar4 + 0x18)" * (cast_expression "(char *)(iVar4 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n      uVar42 = uVar42 | 4;\n    }" { (expression_statement "uVar42 = uVar42 | 4;" (assignment_expression "uVar42 = uVar42 | 4" identifier = (binary_expression "uVar42 | 4" identifier | number_literal)) ;) })) (expression_statement "uVar7 = puVar28[0x4b];" (assignment_expression "uVar7 = puVar28[0x4b]" identifier = (subscript_expression "puVar28[0x4b]" identifier [ number_literal ])) ;) (if_statement "if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }" if (parenthesized_expression "((uVar7 & 1) != 0)" ( (binary_expression "(uVar7 & 1) != 0" (parenthesized_expression "(uVar7 & 1)" ( (binary_expression "uVar7 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar42 = uVar42 | 0x10;\n    }" { (expression_statement "uVar42 = uVar42 | 0x10;" (assignment_expression "uVar42 = uVar42 | 0x10" identifier = (binary_expression "uVar42 | 0x10" identifier | number_literal)) ;) })) (if_statement "if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }" if (parenthesized_expression "(uVar36 != 2)" ( (binary_expression "uVar36 != 2" identifier != number_literal) )) (compound_statement "{\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }" { (if_statement "if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;" if (parenthesized_expression "((uVar7 & 0x20000) == 0)" ( (binary_expression "(uVar7 & 0x20000) == 0" (parenthesized_expression "(uVar7 & 0x20000)" ( (binary_expression "uVar7 & 0x20000" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00021ac8;" goto statement_identifier ;)) (labeled_statement "LAB_00021954:\n      uVar42 = uVar42 | 0x20;" statement_identifier : (expression_statement "uVar42 = uVar42 | 0x20;" (assignment_expression "uVar42 = uVar42 | 0x20" identifier = (binary_expression "uVar42 | 0x20" identifier | number_literal)) ;)) (labeled_statement "LAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;" statement_identifier : (if_statement "if (uVar31 != uVar42) goto LAB_00021d04;" if (parenthesized_expression "(uVar31 != uVar42)" ( (binary_expression "uVar31 != uVar42" identifier != identifier) )) (goto_statement "goto LAB_00021d04;" goto statement_identifier ;))) (expression_statement "iVar9 = puVar29[1];" (assignment_expression "iVar9 = puVar29[1]" identifier = (subscript_expression "puVar29[1]" identifier [ number_literal ])) ;) (expression_statement "iVar32 = puVar29[2];" (assignment_expression "iVar32 = puVar29[2]" identifier = (subscript_expression "puVar29[2]" identifier [ number_literal ])) ;) (if_statement "if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }" if (parenthesized_expression "(uVar16 != 0)" ( (binary_expression "uVar16 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar32 = iVar32 << 1;\n      }" { (expression_statement "iVar32 = iVar32 << 1;" (assignment_expression "iVar32 = iVar32 << 1" identifier = (binary_expression "iVar32 << 1" identifier << number_literal)) ;) })) (if_statement "if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }" if (parenthesized_expression "(iVar32 < 0)" ( (binary_expression "iVar32 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }" { (expression_statement "iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);" (assignment_expression "iVar9 = iVar9 - iVar32 * (piVar35[3] + -1)" identifier = (binary_expression "iVar9 - iVar32 * (piVar35[3] + -1)" identifier - (binary_expression "iVar32 * (piVar35[3] + -1)" identifier * (parenthesized_expression "(piVar35[3] + -1)" ( (binary_expression "piVar35[3] + -1" (subscript_expression "piVar35[3]" identifier [ number_literal ]) + number_literal) ))))) ;) })) (expression_statement "puVar29[6] = iVar9;" (assignment_expression "puVar29[6] = iVar9" (subscript_expression "puVar29[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar29[7] = iVar32;" (assignment_expression "puVar29[7] = iVar32" (subscript_expression "puVar29[7]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }" { (if_statement "if (uVar36 != 2) break;" if (parenthesized_expression "(uVar36 != 2)" ( (binary_expression "uVar36 != 2" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);" (assignment_expression "uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4)" identifier = (call_expression "(**(code **)(puVar39 + 0x31f08))(puVar28,iVar4)" (parenthesized_expression "(**(code **)(puVar39 + 0x31f08))" ( (pointer_expression "**(code **)(puVar39 + 0x31f08)" * (pointer_expression "*(code **)(puVar39 + 0x31f08)" * (cast_expression "(code **)(puVar39 + 0x31f08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31f08)" ( (binary_expression "puVar39 + 0x31f08" identifier + number_literal) ))))) )) (argument_list "(puVar28,iVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);" (assignment_expression "uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20)" identifier = (call_expression "(**(code **)(puVar39 + 0x31d04))(puVar28,uVar20)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d04))" ( (pointer_expression "**(code **)(puVar39 + 0x31d04)" * (pointer_expression "*(code **)(puVar39 + 0x31d04)" * (cast_expression "(code **)(puVar39 + 0x31d04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d04)" ( (binary_expression "puVar39 + 0x31d04" identifier + number_literal) ))))) )) (argument_list "(puVar28,uVar20)" ( identifier , identifier )))) ;) (expression_statement "puVar29[5] = uVar20;" (assignment_expression "puVar29[5] = uVar20" (subscript_expression "puVar29[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;" (assignment_expression "iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18" identifier = (binary_expression "*(int *)(puVar39 + 0x31a6c) + 0x1d18" (pointer_expression "*(int *)(puVar39 + 0x31a6c)" * (cast_expression "(int *)(puVar39 + 0x31a6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar39 + 0x31a6c)" ( (binary_expression "puVar39 + 0x31a6c" identifier + number_literal) )))) + number_literal)) ;) }) (else_clause "else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }" else (compound_statement "{\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }" { (expression_statement "uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);" (assignment_expression "uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4)" identifier = (call_expression "(**(code **)(puVar39 + 0x31f08))(puVar28,iVar4)" (parenthesized_expression "(**(code **)(puVar39 + 0x31f08))" ( (pointer_expression "**(code **)(puVar39 + 0x31f08)" * (pointer_expression "*(code **)(puVar39 + 0x31f08)" * (cast_expression "(code **)(puVar39 + 0x31f08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31f08)" ( (binary_expression "puVar39 + 0x31f08" identifier + number_literal) ))))) )) (argument_list "(puVar28,iVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);" (assignment_expression "uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20)" identifier = (call_expression "(**(code **)(puVar39 + 0x31d04))(puVar28,uVar20)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d04))" ( (pointer_expression "**(code **)(puVar39 + 0x31d04)" * (pointer_expression "*(code **)(puVar39 + 0x31d04)" * (cast_expression "(code **)(puVar39 + 0x31d04)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d04)" ( (binary_expression "puVar39 + 0x31d04" identifier + number_literal) ))))) )) (argument_list "(puVar28,uVar20)" ( identifier , identifier )))) ;) (expression_statement "puVar29[5] = uVar20;" (assignment_expression "puVar29[5] = uVar20" (subscript_expression "puVar29[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;" (assignment_expression "iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484" identifier = (binary_expression "*(int *)(puVar39 + 0x31a6c) + 0x2484" (pointer_expression "*(int *)(puVar39 + 0x31a6c)" * (cast_expression "(int *)(puVar39 + 0x31a6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar39 + 0x31a6c)" ( (binary_expression "puVar39 + 0x31a6c" identifier + number_literal) )))) + number_literal)) ;) }))) (expression_statement "iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);" (assignment_expression "iVar4 = FUN_0001a610(piVar35,iVar4,puVar29)" identifier = (call_expression "FUN_0001a610(piVar35,iVar4,puVar29)" identifier (argument_list "(piVar35,iVar4,puVar29)" ( identifier , identifier , identifier )))) ;) (expression_statement "pcVar40 = *(code **)(puVar39 + 0x31d20);" (assignment_expression "pcVar40 = *(code **)(puVar39 + 0x31d20)" identifier = (pointer_expression "*(code **)(puVar39 + 0x31d20)" * (cast_expression "(code **)(puVar39 + 0x31d20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31d20)" ( (binary_expression "puVar39 + 0x31d20" identifier + number_literal) ))))) ;) (expression_statement "puVar29[5] = 0;" (assignment_expression "puVar29[5] = 0" (subscript_expression "puVar29[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "(*pcVar40)(puVar28,uVar20);" (call_expression "(*pcVar40)(puVar28,uVar20)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(puVar28,uVar20)" ( identifier , identifier ))) ;) (goto_statement "goto LAB_000219e8;" goto statement_identifier ;) })) (if_statement "if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }" if (parenthesized_expression "((uVar31 & 0x20) != 0)" ( (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" ( (binary_expression "uVar31 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar42 = uVar42 | 0x20;\n    }" { (expression_statement "uVar42 = uVar42 | 0x20;" (assignment_expression "uVar42 = uVar42 | 0x20" identifier = (binary_expression "uVar42 | 0x20" identifier | number_literal)) ;) })) (if_statement "if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }" if (parenthesized_expression "((uVar7 & 0x20000) == 0)" ( (binary_expression "(uVar7 & 0x20000) == 0" (parenthesized_expression "(uVar7 & 0x20000)" ( (binary_expression "uVar7 & 0x20000" identifier & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }" { (labeled_statement "LAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;" statement_identifier : (if_statement "if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;" if (parenthesized_expression "((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0))" ( (binary_expression "(-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)" (parenthesized_expression "(-1 < (int)(uVar7 << 7))" ( (binary_expression "-1 < (int)(uVar7 << 7)" number_literal < (cast_expression "(int)(uVar7 << 7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar7 << 7)" ( (binary_expression "uVar7 << 7" identifier << number_literal) )))) )) || (parenthesized_expression "((puVar28[0x4a] & 0x80) != 0)" ( (binary_expression "(puVar28[0x4a] & 0x80) != 0" (parenthesized_expression "(puVar28[0x4a] & 0x80)" ( (binary_expression "puVar28[0x4a] & 0x80" (subscript_expression "puVar28[0x4a]" identifier [ number_literal ]) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_00021958;" goto statement_identifier ;))) (if_statement "if (uVar36 != 2) goto LAB_00021954;" if (parenthesized_expression "(uVar36 != 2)" ( (binary_expression "uVar36 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00021954;" goto statement_identifier ;)) })) (expression_statement "(**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);" (call_expression "(**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340)" (parenthesized_expression "(**(code **)(puVar39 + 0x31e08))" ( (pointer_expression "**(code **)(puVar39 + 0x31e08)" * (pointer_expression "*(code **)(puVar39 + 0x31e08)" * (cast_expression "(code **)(puVar39 + 0x31e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e08)" ( (binary_expression "puVar39 + 0x31e08" identifier + number_literal) ))))) )) (argument_list "(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340)" ( identifier , (binary_expression "*(int *)(puVar39 + 0x31a18) + -0x340" (pointer_expression "*(int *)(puVar39 + 0x31a18)" * (cast_expression "(int *)(puVar39 + 0x31a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar39 + 0x31a18)" ( (binary_expression "puVar39 + 0x31a18" identifier + number_literal) )))) + number_literal) ))) ;) (labeled_statement "LAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);" statement_identifier : (expression_statement "iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);" (assignment_expression "iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000)" identifier = (call_expression "FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000)" identifier (argument_list "(&local_80,iVar34,puVar28[0xe6],100000)" ( (pointer_expression "&local_80" & identifier) , identifier , (subscript_expression "puVar28[0xe6]" identifier [ number_literal ]) , number_literal )))) ;)) (if_statement "if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }" if (parenthesized_expression "((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0))" ( (binary_expression "(iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)" (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar9 = FUN_00017f48(local_80), iVar9 != 0)" ( (comma_expression "iVar9 = FUN_00017f48(local_80), iVar9 != 0" (assignment_expression "iVar9 = FUN_00017f48(local_80)" identifier = (call_expression "FUN_00017f48(local_80)" identifier (argument_list "(local_80)" ( identifier )))) , (binary_expression "iVar9 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }" { (expression_statement "uVar7 = uVar42 & 4;" (assignment_expression "uVar7 = uVar42 & 4" identifier = (binary_expression "uVar42 & 4" identifier & number_literal)) ;) (if_statement "if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }" if (parenthesized_expression "(uVar26 == 1)" ( (binary_expression "uVar26 == 1" identifier == number_literal) )) (compound_statement "{\n        uVar26 = 0;\n        uVar36 = 2;\n      }" { (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" identifier = number_literal) ;) (expression_statement "uVar36 = 2;" (assignment_expression "uVar36 = 2" identifier = number_literal) ;) })) (goto_statement "goto LAB_00021734;" goto statement_identifier ;) })) (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (while_statement "while( true ) {\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }" { (expression_statement "iVar34 = iVar34 + -1;" (assignment_expression "iVar34 = iVar34 + -1" identifier = (binary_expression "iVar34 + -1" identifier + number_literal)) ;) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (if_statement "if (iVar34 < 0) break;" if (parenthesized_expression "(iVar34 < 0)" ( (binary_expression "iVar34 < 0" identifier < number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = puVar29[6];" (assignment_expression "iVar9 = puVar29[6]" identifier = (subscript_expression "puVar29[6]" identifier [ number_literal ])) ;) (for_statement "for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }" for ( (assignment_expression "iVar4 = piVar35[3]" identifier = (subscript_expression "piVar35[3]" identifier [ number_literal ])) ; (binary_expression "iVar4 != 0" identifier != number_literal) ; (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ) (compound_statement "{\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }" { (expression_statement "(**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);" (call_expression "(**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0)" (parenthesized_expression "(**(code **)(puVar39 + 0x31da0))" ( (pointer_expression "**(code **)(puVar39 + 0x31da0)" * (pointer_expression "*(code **)(puVar39 + 0x31da0)" * (cast_expression "(code **)(puVar39 + 0x31da0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31da0)" ( (binary_expression "puVar39 + 0x31da0" identifier + number_literal) ))))) )) (argument_list "(puVar28,iVar9,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "iVar9 = iVar9 + iVar32;" (assignment_expression "iVar9 = iVar9 + iVar32" identifier = (binary_expression "iVar9 + iVar32" identifier + identifier)) ;) })) })) (labeled_statement "LAB_000219e8:\n  if (local_74 == *piVar5) {\n    return iVar4;\n  }" statement_identifier : (if_statement "if (local_74 == *piVar5) {\n    return iVar4;\n  }" if (parenthesized_expression "(local_74 == *piVar5)" ( (binary_expression "local_74 == *piVar5" identifier == (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    return iVar4;\n  }" { (return_statement "return iVar4;" return identifier ;) }))) (labeled_statement "LAB_00021ce8:\n  (**(code **)(puVar39 + 0x31e80))();" statement_identifier : (expression_statement "(**(code **)(puVar39 + 0x31e80))();" (call_expression "(**(code **)(puVar39 + 0x31e80))()" (parenthesized_expression "(**(code **)(puVar39 + 0x31e80))" ( (pointer_expression "**(code **)(puVar39 + 0x31e80)" * (pointer_expression "*(code **)(puVar39 + 0x31e80)" * (cast_expression "(code **)(puVar39 + 0x31e80)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e80)" ( (binary_expression "puVar39 + 0x31e80" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_00021cf4:\n  (**(code **)(puVar39 + 0x31e08))();" statement_identifier : (expression_statement "(**(code **)(puVar39 + 0x31e08))();" (call_expression "(**(code **)(puVar39 + 0x31e08))()" (parenthesized_expression "(**(code **)(puVar39 + 0x31e08))" ( (pointer_expression "**(code **)(puVar39 + 0x31e08)" * (pointer_expression "*(code **)(puVar39 + 0x31e08)" * (cast_expression "(code **)(puVar39 + 0x31e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e08)" ( (binary_expression "puVar39 + 0x31e08" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;)) (labeled_statement "LAB_00021d04:\n  pcVar40 = *(code **)(puVar39 + 0x31e08);" statement_identifier : (expression_statement "pcVar40 = *(code **)(puVar39 + 0x31e08);" (assignment_expression "pcVar40 = *(code **)(puVar39 + 0x31e08)" identifier = (pointer_expression "*(code **)(puVar39 + 0x31e08)" * (cast_expression "(code **)(puVar39 + 0x31e08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar39 + 0x31e08)" ( (binary_expression "puVar39 + 0x31e08" identifier + number_literal) ))))) ;)) (expression_statement "(*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318);" (call_expression "(*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318)" ( identifier , (binary_expression "*(int *)(puVar39 + 0x31a18) + -0x318" (pointer_expression "*(int *)(puVar39 + 0x31a18)" * (cast_expression "(int *)(puVar39 + 0x31a18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar39 + 0x31a18)" ( (binary_expression "puVar39 + 0x31a18" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "piVar5 = (int *)*puVar28;" (assignment_expression "piVar5 = (int *)*puVar28" identifier = (cast_expression "(int *)*puVar28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar28" * identifier))) ;) (expression_statement "iVar4 = piVar5[2];" (assignment_expression "iVar4 = piVar5[2]" identifier = (subscript_expression "piVar5[2]" identifier [ number_literal ])) ;) (expression_statement "puVar29 = *(undefined4 **)*piVar5;" (assignment_expression "puVar29 = *(undefined4 **)*piVar5" identifier = (pointer_expression "*(undefined4 **)*piVar5" * (cast_expression "(undefined4 **)*piVar5" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*piVar5" * identifier)))) ;) (expression_statement "iVar34 = ((undefined4 *)*piVar5)[1];" (assignment_expression "iVar34 = ((undefined4 *)*piVar5)[1]" identifier = (subscript_expression "((undefined4 *)*piVar5)[1]" (parenthesized_expression "((undefined4 *)*piVar5)" ( (cast_expression "(undefined4 *)*piVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) )) [ number_literal ])) ;) (expression_statement "uVar42 = piVar5[3];" (assignment_expression "uVar42 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ;) (if_statement "if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }" if (parenthesized_expression "((puVar29[0x4b] & 0x600000) == 0)" ( (binary_expression "(puVar29[0x4b] & 0x600000) == 0" (parenthesized_expression "(puVar29[0x4b] & 0x600000)" ( (binary_expression "puVar29[0x4b] & 0x600000" (subscript_expression "puVar29[0x4b]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }" { (labeled_statement "LAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);" statement_identifier : (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar40 + 0x316f4)" * (pointer_expression "*(code **)(pcVar40 + 0x316f4)" * (cast_expression "(code **)(pcVar40 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316f4)" ( (binary_expression "pcVar40 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0)" ( identifier , (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x2f0" (pointer_expression "*(int *)(pcVar40 + 0x31304)" * (cast_expression "(int *)(pcVar40 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31304)" ( (binary_expression "pcVar40 + 0x31304" identifier + number_literal) )))) + number_literal) ))) ;)) (labeled_statement "LAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);" statement_identifier : (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar40 + 0x316f4)" * (pointer_expression "*(code **)(pcVar40 + 0x316f4)" * (cast_expression "(code **)(pcVar40 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316f4)" ( (binary_expression "pcVar40 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278)" ( identifier , (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x278" (pointer_expression "*(int *)(pcVar40 + 0x31304)" * (cast_expression "(int *)(pcVar40 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31304)" ( (binary_expression "pcVar40 + 0x31304" identifier + number_literal) )))) + number_literal) ))) ;)) (labeled_statement "LAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;" statement_identifier : (expression_statement "iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290" identifier = (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x290" (pointer_expression "*(int *)(pcVar40 + 0x31304)" * (cast_expression "(int *)(pcVar40 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31304)" ( (binary_expression "pcVar40 + 0x31304" identifier + number_literal) )))) + number_literal)) ;)) (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar40 + 0x316f4)" * (pointer_expression "*(code **)(pcVar40 + 0x316f4)" * (cast_expression "(code **)(pcVar40 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316f4)" ( (binary_expression "pcVar40 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,iVar9)" ( identifier , identifier ))) ;) }) (else_clause "else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }" else (compound_statement "{\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }" { (if_statement "if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }" if (parenthesized_expression "((puVar29[0x4b] & 0x80) != 0)" ( (binary_expression "(puVar29[0x4b] & 0x80) != 0" (parenthesized_expression "(puVar29[0x4b] & 0x80)" ( (binary_expression "puVar29[0x4b] & 0x80" (subscript_expression "puVar29[0x4b]" identifier [ number_literal ]) & number_literal) )) != number_literal) )) (compound_statement "{\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }" { (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar40 + 0x316f4)" * (pointer_expression "*(code **)(pcVar40 + 0x316f4)" * (cast_expression "(code **)(pcVar40 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316f4)" ( (binary_expression "pcVar40 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc)" ( identifier , (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x2dc" (pointer_expression "*(int *)(pcVar40 + 0x31304)" * (cast_expression "(int *)(pcVar40 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31304)" ( (binary_expression "pcVar40 + 0x31304" identifier + number_literal) )))) + number_literal) ))) ;) (goto_statement "goto LAB_00022424;" goto statement_identifier ;) })) (expression_statement "iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);" (assignment_expression "iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34)" identifier = (call_expression "(**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316b4))" ( (pointer_expression "**(code **)(pcVar40 + 0x316b4)" * (pointer_expression "*(code **)(pcVar40 + 0x316b4)" * (cast_expression "(code **)(pcVar40 + 0x316b4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316b4)" ( (binary_expression "pcVar40 + 0x316b4" identifier + number_literal) ))))) )) (argument_list "(puVar29,iVar34)" ( identifier , identifier )))) ;) (if_statement "if (iVar9 != 2) goto LAB_00022470;" if (parenthesized_expression "(iVar9 != 2)" ( (binary_expression "iVar9 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00022470;" goto statement_identifier ;)) (expression_statement "uVar6 = piVar5[4];" (assignment_expression "uVar6 = piVar5[4]" identifier = (subscript_expression "piVar5[4]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = *(int *)(pcVar40 + 0x31304);" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x31304)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x31304)" * (cast_expression "(int *)(pcVar40 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31304)" ( (binary_expression "pcVar40 + 0x31304" identifier + number_literal) ))))) ;) (if_statement "if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }" if (parenthesized_expression "((uVar6 & 5) != 1)" ( (binary_expression "(uVar6 & 5) != 1" (parenthesized_expression "(uVar6 & 5)" ( (binary_expression "uVar6 & 5" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }" { (expression_statement "uVar16 = (uint)*(byte *)(puVar29 + 0x7f);" (assignment_expression "uVar16 = (uint)*(byte *)(puVar29 + 0x7f)" identifier = (binary_expression "(uint)*(byte *)(puVar29 + 0x7f)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(puVar29 + 0x7f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x7f)" ( (binary_expression "puVar29 + 0x7f" identifier + number_literal) ))))) ;) (if_statement "if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }" if (parenthesized_expression "(uVar16 == 0)" ( (binary_expression "uVar16 == 0" identifier == number_literal) )) (compound_statement "{\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }" { (expression_statement "local_e8 = 1;" (assignment_expression "local_e8 = 1" identifier = number_literal) ;) (labeled_statement "LAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);" statement_identifier : (expression_statement "cVar15 = *(char *)(iVar34 + 0x18);" (assignment_expression "cVar15 = *(char *)(iVar34 + 0x18)" identifier = (pointer_expression "*(char *)(iVar34 + 0x18)" * (cast_expression "(char *)(iVar34 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + 0x18)" ( (binary_expression "iVar34 + 0x18" identifier + number_literal) ))))) ;)) (if_statement "if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }" if (parenthesized_expression "(cVar15 == '\b')" ( (binary_expression "cVar15 == '\b'" identifier == (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }" { (expression_statement "iVar34 = puVar28[6];" (assignment_expression "iVar34 = puVar28[6]" identifier = (subscript_expression "puVar28[6]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = puVar28[7];" (assignment_expression "iVar9 = puVar28[7]" identifier = (subscript_expression "puVar28[7]" identifier [ number_literal ])) ;) (expression_statement "iVar25 = *(int *)(pcVar40 + 0x31454);" (assignment_expression "iVar25 = *(int *)(pcVar40 + 0x31454)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x31454)" * (cast_expression "(int *)(pcVar40 + 0x31454)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31454)" ( (binary_expression "pcVar40 + 0x31454" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = *(int *)(pcVar40 + 0x31458);" (assignment_expression "iVar32 = *(int *)(pcVar40 + 0x31458)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x31458)" * (cast_expression "(int *)(pcVar40 + 0x31458)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31458)" ( (binary_expression "pcVar40 + 0x31458" identifier + number_literal) ))))) ;) (expression_statement "local_ec = 1;" (assignment_expression "local_ec = 1" identifier = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (if_statement "if (uVar16 == 1) goto LAB_00022214;" if (parenthesized_expression "(uVar16 == 1)" ( (binary_expression "uVar16 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00022214;" goto statement_identifier ;)) (labeled_statement "LAB_000220b0:\n          uVar16 = 0;" statement_identifier : (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;)) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (expression_statement "local_f8 = 1;" (assignment_expression "local_f8 = 1" identifier = number_literal) ;) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000220c4:\n          iVar33 = puVar28[4];" statement_identifier : (expression_statement "iVar33 = puVar28[4];" (assignment_expression "iVar33 = puVar28[4]" identifier = (subscript_expression "puVar28[4]" identifier [ number_literal ])) ;)) (if_statement "if (iVar33 == 0) goto LAB_000222bc;" if (parenthesized_expression "(iVar33 == 0)" ( (binary_expression "iVar33 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000222bc;" goto statement_identifier ;)) (do_statement "do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );" do (compound_statement "{\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          }" { (expression_statement "bVar14 = *(byte *)(iVar33 + 1);" (assignment_expression "bVar14 = *(byte *)(iVar33 + 1)" identifier = (pointer_expression "*(byte *)(iVar33 + 1)" * (cast_expression "(byte *)(iVar33 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + 1)" ( (binary_expression "iVar33 + 1" identifier + number_literal) ))))) ;) (expression_statement "iVar33 = *(int *)(pcVar40 + 0x31450);" (assignment_expression "iVar33 = *(int *)(pcVar40 + 0x31450)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x31450)" * (cast_expression "(int *)(pcVar40 + 0x31450)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31450)" ( (binary_expression "pcVar40 + 0x31450" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);" (assignment_expression "uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2)" identifier = (pointer_expression "*(ushort *)(iVar33 + (uint)bVar14 * 2)" * (cast_expression "(ushort *)(iVar33 + (uint)bVar14 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + (uint)bVar14 * 2)" ( (binary_expression "iVar33 + (uint)bVar14 * 2" identifier + (binary_expression "(uint)bVar14 * 2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) ))))) ;) (if_statement "if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }" if (parenthesized_expression "(uVar16 < uVar42)" ( (binary_expression "uVar16 < uVar42" identifier < identifier) )) (compound_statement "{\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }" { (expression_statement "pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);" (assignment_expression "pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4)" identifier = (cast_expression "(byte *)(iVar34 + uVar16 * iVar9 + iVar4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + uVar16 * iVar9 + iVar4)" ( (binary_expression "iVar34 + uVar16 * iVar9 + iVar4" (binary_expression "iVar34 + uVar16 * iVar9" identifier + (binary_expression "uVar16 * iVar9" identifier * identifier)) + identifier) )))) ;) (do_statement "do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);" do (compound_statement "{\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              }" { (expression_statement "pbVar27 = (byte *)puVar28[5];" (assignment_expression "pbVar27 = (byte *)puVar28[5]" identifier = (cast_expression "(byte *)puVar28[5]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar28[5]" identifier [ number_literal ]))) ;) (expression_statement "(**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);" (call_expression "(**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x3168c))" ( (pointer_expression "**(code **)(pcVar40 + 0x3168c)" * (pointer_expression "*(code **)(pcVar40 + 0x3168c)" * (cast_expression "(code **)(pcVar40 + 0x3168c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x3168c)" ( (binary_expression "pcVar40 + 0x3168c" identifier + number_literal) ))))) )) (argument_list "(puVar29,pbVar27,0)" ( identifier , identifier , number_literal ))) ;) (for_statement "for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }" for ( (assignment_expression "pbVar22 = pbVar8 + (uVar31 - iVar4)" identifier = (binary_expression "pbVar8 + (uVar31 - iVar4)" identifier + (parenthesized_expression "(uVar31 - iVar4)" ( (binary_expression "uVar31 - iVar4" identifier - identifier) )))) ; (binary_expression "pbVar22 < pbVar8" identifier < identifier) ; (assignment_expression "pbVar22 = pbVar22 + iVar10" identifier = (binary_expression "pbVar22 + iVar10" identifier + identifier)) ) (compound_statement "{\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }" { (expression_statement "uVar6 = (uint)pbVar27[1];" (assignment_expression "uVar6 = (uint)pbVar27[1]" identifier = (cast_expression "(uint)pbVar27[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar27[1]" identifier [ number_literal ]))) ;) (if_statement "if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                    *pbVar22 = bVar14;\n                  }" { (expression_statement "*pbVar22 = bVar14;" (assignment_expression "*pbVar22 = bVar14" (pointer_expression "*pbVar22" * identifier) = identifier) ;) }) (else_clause "else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }" else (compound_statement "{\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }" { (expression_statement "bVar13 = *pbVar27;" (assignment_expression "bVar13 = *pbVar27" identifier = (pointer_expression "*pbVar27" * identifier)) ;) (if_statement "if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }" if (parenthesized_expression "(uVar6 != 0xff)" ( (binary_expression "uVar6 != 0xff" identifier != number_literal) )) (compound_statement "{\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }" { (expression_statement "uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;" (assignment_expression "uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6" identifier = (binary_expression "(0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6" (binary_expression "(0xff - uVar6) * (uint)uVar12" (parenthesized_expression "(0xff - uVar6)" ( (binary_expression "0xff - uVar6" number_literal - identifier) )) * (cast_expression "(uint)uVar12" ( (type_descriptor "uint" type_identifier) ) identifier)) + (binary_expression "*(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6" (pointer_expression "*(ushort *)(iVar33 + (uint)bVar13 * 2)" * (cast_expression "(ushort *)(iVar33 + (uint)bVar13 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + (uint)bVar13 * 2)" ( (binary_expression "iVar33 + (uint)bVar13 * 2" identifier + (binary_expression "(uint)bVar13 * 2" (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) * identifier))) ;) (expression_statement "uVar36 = uVar6 >> 0xf;" (assignment_expression "uVar36 = uVar6 >> 0xf" identifier = (binary_expression "uVar6 >> 0xf" identifier >> number_literal)) ;) (expression_statement "bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);" (assignment_expression "bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" identifier = (call_expression "(byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" ( (binary_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8" (binary_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2)" (parenthesized_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)" ( (binary_expression "(uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc" (binary_expression "(uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36)" (binary_expression "(uVar6 & 0x7fff) * (uint)" (parenthesized_expression "(uVar6 & 0x7fff)" ( (binary_expression "uVar6 & 0x7fff" identifier & number_literal) )) * (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar25 + uVar36)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar25 + uVar36)" ( (binary_expression "iVar25 + uVar36" identifier + identifier) )))) >> number_literal) )) + (binary_expression "(uint)*(ushort *)(iVar32 + uVar36 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar32 + uVar36 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar32 + uVar36 * 2)" ( (binary_expression "iVar32 + uVar36 * 2" identifier + (binary_expression "uVar36 * 2" identifier * number_literal)) ))))) >> number_literal) )))) ;) })) (expression_statement "*pbVar22 = bVar13;" (assignment_expression "*pbVar22 = bVar13" (pointer_expression "*pbVar22" * identifier) = identifier) ;) }))) (expression_statement "pbVar27 = pbVar27 + 2;" (assignment_expression "pbVar27 = pbVar27 + 2" identifier = (binary_expression "pbVar27 + 2" identifier + number_literal)) ;) })) (expression_statement "uVar16 = uVar16 + local_f8;" (assignment_expression "uVar16 = uVar16 + local_f8" identifier = (binary_expression "uVar16 + local_f8" identifier + identifier)) ;) (expression_statement "pbVar8 = pbVar8 + local_f8 * iVar9;" (assignment_expression "pbVar8 = pbVar8 + local_f8 * iVar9" identifier = (binary_expression "pbVar8 + local_f8 * iVar9" identifier + (binary_expression "local_f8 * iVar9" identifier * identifier))) ;) }) while (parenthesized_expression "(uVar16 < uVar42)" ( (binary_expression "uVar16 < uVar42" identifier < identifier) )) ;) })) (while_statement "while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }" { (do_statement "do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);" do (compound_statement "{\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              }" { (if_statement "if (local_e8 == local_ec) {\n                  return 1;\n                }" if (parenthesized_expression "(local_e8 == local_ec)" ( (binary_expression "local_e8 == local_ec" identifier == identifier) )) (compound_statement "{\n                  return 1;\n                }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "uVar16 = (uint)*(byte *)(puVar29 + 0x7f);" (assignment_expression "uVar16 = (uint)*(byte *)(puVar29 + 0x7f)" identifier = (binary_expression "(uint)*(byte *)(puVar29 + 0x7f)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(puVar29 + 0x7f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x7f)" ( (binary_expression "puVar29 + 0x7f" identifier + number_literal) ))))) ;) (expression_statement "uVar31 = local_ec + 1;" (assignment_expression "uVar31 = local_ec + 1" identifier = (binary_expression "local_ec + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = local_ec;" (assignment_expression "uVar6 = local_ec" identifier = identifier) ;) (expression_statement "local_ec = uVar31;" (assignment_expression "local_ec = uVar31" identifier = identifier) ;) (if_statement "if (uVar16 != 1) goto LAB_000220b0;" if (parenthesized_expression "(uVar16 != 1)" ( (binary_expression "uVar16 != 1" identifier != number_literal) )) (goto_statement "goto LAB_000220b0;" goto statement_identifier ;)) (labeled_statement "LAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);" statement_identifier : (expression_statement "uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);" (assignment_expression "uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f)" identifier = (binary_expression "(uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f)" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) << (parenthesized_expression "(3U - ((int)local_ec >> 1) & 0x1f)" ( (binary_expression "3U - ((int)local_ec >> 1) & 0x1f" (binary_expression "3U - ((int)local_ec >> 1)" number_literal - (parenthesized_expression "((int)local_ec >> 1)" ( (binary_expression "(int)local_ec >> 1" (cast_expression "(int)local_ec" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) )))) ;)) (if_statement "if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (compound_statement "{\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }" { (expression_statement "uVar16 = ~uVar31 & 7;" (assignment_expression "uVar16 = ~uVar31 & 7" identifier = (binary_expression "~uVar31 & 7" (unary_expression "~uVar31" ~ identifier) & number_literal)) ;) (expression_statement "uVar36 = 3;" (assignment_expression "uVar36 = 3" identifier = number_literal) ;) }) (else_clause "else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }" else (compound_statement "{\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }" { (expression_statement "uVar36 = (int)(8 - local_ec) >> 1;" (assignment_expression "uVar36 = (int)(8 - local_ec) >> 1" identifier = (binary_expression "(int)(8 - local_ec) >> 1" (cast_expression "(int)(8 - local_ec)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - local_ec)" ( (binary_expression "8 - local_ec" number_literal - identifier) ))) >> number_literal)) ;) (expression_statement "uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);" (assignment_expression "uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7)" identifier = (binary_expression "((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7)" (parenthesized_expression "((uVar16 << (uVar36 & 0x1f)) + -1)" ( (binary_expression "(uVar16 << (uVar36 & 0x1f)) + -1" (parenthesized_expression "(uVar16 << (uVar36 & 0x1f))" ( (binary_expression "uVar16 << (uVar36 & 0x1f)" identifier << (parenthesized_expression "(uVar36 & 0x1f)" ( (binary_expression "uVar36 & 0x1f" identifier & number_literal) ))) )) + number_literal) )) - (parenthesized_expression "(uVar31 & 7)" ( (binary_expression "uVar31 & 7" identifier & number_literal) )))) ;) }))) }) while (parenthesized_expression "(uVar16 + iVar4 >> (uVar36 & 0x1f) == 0)" ( (binary_expression "uVar16 + iVar4 >> (uVar36 & 0x1f) == 0" (binary_expression "uVar16 + iVar4 >> (uVar36 & 0x1f)" (binary_expression "uVar16 + iVar4" identifier + identifier) >> (parenthesized_expression "(uVar36 & 0x1f)" ( (binary_expression "uVar36 & 0x1f" identifier & number_literal) ))) == number_literal) )) ;) (expression_statement "uVar31 = uVar31 & 7;" (assignment_expression "uVar31 = uVar31 & 7" identifier = (binary_expression "uVar31 & 7" identifier & number_literal)) ;) (expression_statement "iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);" (assignment_expression "iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU)" identifier = (binary_expression "1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU)" number_literal << (parenthesized_expression "((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU)" ( (binary_expression "(int)(8 - (uVar6 + 1)) >> 1 & 0x1fU" (binary_expression "(int)(8 - (uVar6 + 1)) >> 1" (cast_expression "(int)(8 - (uVar6 + 1))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - (uVar6 + 1))" ( (binary_expression "8 - (uVar6 + 1)" number_literal - (parenthesized_expression "(uVar6 + 1)" ( (binary_expression "uVar6 + 1" identifier + number_literal) ))) ))) >> number_literal) & number_literal) )))) ;) (expression_statement "uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;" (assignment_expression "uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7" identifier = (binary_expression "(~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7" (binary_expression "(~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f)" (parenthesized_expression "(~uVar6 & 1)" ( (binary_expression "~uVar6 & 1" (unary_expression "~uVar6" ~ identifier) & number_literal) )) << (parenthesized_expression "(3U - ((int)uVar6 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uVar6 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar6 >> 1)" number_literal - (parenthesized_expression "((int)uVar6 >> 1)" ( (binary_expression "(int)uVar6 >> 1" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) ))) & number_literal)) ;) (if_statement "if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }" if (parenthesized_expression "(uVar6 < 3)" ( (binary_expression "uVar6 < 3" identifier < number_literal) )) (compound_statement "{\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }" { (expression_statement "local_f8 = 8;" (assignment_expression "local_f8 = 8" identifier = number_literal) ;) (goto_statement "goto LAB_000220c4;" goto statement_identifier ;) })) (expression_statement "local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);" (assignment_expression "local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU)" identifier = (binary_expression "8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU)" number_literal >> (parenthesized_expression "((int)(uVar6 - 1) >> 1 & 0x1fU)" ( (binary_expression "(int)(uVar6 - 1) >> 1 & 0x1fU" (binary_expression "(int)(uVar6 - 1) >> 1" (cast_expression "(int)(uVar6 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) ))) >> number_literal) & number_literal) )))) ;) (expression_statement "iVar33 = puVar28[4];" (assignment_expression "iVar33 = puVar28[4]" identifier = (subscript_expression "puVar28[4]" identifier [ number_literal ])) ;) (if_statement "if (iVar33 != 0) break;" if (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }" statement_identifier : (if_statement "if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }" if (parenthesized_expression "(uVar16 < uVar42)" ( (binary_expression "uVar16 < uVar42" identifier < identifier) )) (compound_statement "{\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }" { (expression_statement "iVar33 = *(int *)(pcVar40 + 0x31450);" (assignment_expression "iVar33 = *(int *)(pcVar40 + 0x31450)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x31450)" * (cast_expression "(int *)(pcVar40 + 0x31450)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31450)" ( (binary_expression "pcVar40 + 0x31450" identifier + number_literal) ))))) ;) (expression_statement "pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);" (assignment_expression "pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4)" identifier = (cast_expression "(byte *)(iVar34 + uVar16 * iVar9 + iVar4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar34 + uVar16 * iVar9 + iVar4)" ( (binary_expression "iVar34 + uVar16 * iVar9 + iVar4" (binary_expression "iVar34 + uVar16 * iVar9" identifier + (binary_expression "uVar16 * iVar9" identifier * identifier)) + identifier) )))) ;) (do_statement "do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);" do (compound_statement "{\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                }" { (expression_statement "pbVar27 = (byte *)puVar28[5];" (assignment_expression "pbVar27 = (byte *)puVar28[5]" identifier = (cast_expression "(byte *)puVar28[5]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar28[5]" identifier [ number_literal ]))) ;) (expression_statement "(**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);" (call_expression "(**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x3168c))" ( (pointer_expression "**(code **)(pcVar40 + 0x3168c)" * (pointer_expression "*(code **)(pcVar40 + 0x3168c)" * (cast_expression "(code **)(pcVar40 + 0x3168c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x3168c)" ( (binary_expression "pcVar40 + 0x3168c" identifier + number_literal) ))))) )) (argument_list "(puVar29,pbVar27,0)" ( identifier , identifier , number_literal ))) ;) (for_statement "for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }" for ( (assignment_expression "pbVar22 = pbVar8 + (uVar31 - iVar4)" identifier = (binary_expression "pbVar8 + (uVar31 - iVar4)" identifier + (parenthesized_expression "(uVar31 - iVar4)" ( (binary_expression "uVar31 - iVar4" identifier - identifier) )))) ; (binary_expression "pbVar22 < pbVar8" identifier < identifier) ; (assignment_expression "pbVar22 = pbVar22 + iVar10" identifier = (binary_expression "pbVar22 + iVar10" identifier + identifier)) ) (compound_statement "{\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }" { (expression_statement "uVar6 = (uint)pbVar27[1];" (assignment_expression "uVar6 = (uint)pbVar27[1]" identifier = (cast_expression "(uint)pbVar27[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar27[1]" identifier [ number_literal ]))) ;) (if_statement "if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }" if (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) (compound_statement "{\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }" { (expression_statement "bVar14 = *pbVar27;" (assignment_expression "bVar14 = *pbVar27" identifier = (pointer_expression "*pbVar27" * identifier)) ;) (if_statement "if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }" if (parenthesized_expression "(uVar6 != 0xff)" ( (binary_expression "uVar6 != 0xff" identifier != number_literal) )) (compound_statement "{\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }" { (expression_statement "uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;" (assignment_expression "uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6" identifier = (binary_expression "(uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6" (binary_expression "(uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6)" (binary_expression "(uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar33 + (uint)*pbVar22 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + (uint)*pbVar22 * 2)" ( (binary_expression "iVar33 + (uint)*pbVar22 * 2" identifier + (binary_expression "(uint)*pbVar22 * 2" (binary_expression "(uint)*pbVar22" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) * (parenthesized_expression "(0xff - uVar6)" ( (binary_expression "0xff - uVar6" number_literal - identifier) ))) + (binary_expression "*(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6" (pointer_expression "*(ushort *)(iVar33 + (uint)bVar14 * 2)" * (cast_expression "(ushort *)(iVar33 + (uint)bVar14 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 + (uint)bVar14 * 2)" ( (binary_expression "iVar33 + (uint)bVar14 * 2" identifier + (binary_expression "(uint)bVar14 * 2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) * identifier))) ;) (expression_statement "uVar36 = uVar6 >> 0xf;" (assignment_expression "uVar36 = uVar6 >> 0xf" identifier = (binary_expression "uVar6 >> 0xf" identifier >> number_literal)) ;) (expression_statement "bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);" (assignment_expression "bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" identifier = (call_expression "(byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" ( (binary_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8" (binary_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2)" (parenthesized_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)" ( (binary_expression "(uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc" (binary_expression "(uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36)" (binary_expression "(uVar6 & 0x7fff) * (uint)" (parenthesized_expression "(uVar6 & 0x7fff)" ( (binary_expression "uVar6 & 0x7fff" identifier & number_literal) )) * (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar25 + uVar36)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar25 + uVar36)" ( (binary_expression "iVar25 + uVar36" identifier + identifier) )))) >> number_literal) )) + (binary_expression "(uint)*(ushort *)(iVar32 + uVar36 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar32 + uVar36 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar32 + uVar36 * 2)" ( (binary_expression "iVar32 + uVar36 * 2" identifier + (binary_expression "uVar36 * 2" identifier * number_literal)) ))))) >> number_literal) )))) ;) })) (expression_statement "*pbVar22 = bVar14;" (assignment_expression "*pbVar22 = bVar14" (pointer_expression "*pbVar22" * identifier) = identifier) ;) })) (expression_statement "pbVar27 = pbVar27 + 2;" (assignment_expression "pbVar27 = pbVar27 + 2" identifier = (binary_expression "pbVar27 + 2" identifier + number_literal)) ;) })) (expression_statement "uVar16 = uVar16 + local_f8;" (assignment_expression "uVar16 = uVar16 + local_f8" identifier = (binary_expression "uVar16 + local_f8" identifier + identifier)) ;) (expression_statement "pbVar8 = pbVar8 + local_f8 * iVar9;" (assignment_expression "pbVar8 = pbVar8 + local_f8 * iVar9" identifier = (binary_expression "pbVar8 + local_f8 * iVar9" identifier + (binary_expression "local_f8 * iVar9" identifier * identifier))) ;) }) while (parenthesized_expression "(uVar16 < uVar42)" ( (binary_expression "uVar16 < uVar42" identifier < identifier) )) ;) }))) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }" if (parenthesized_expression "(cVar15 == '\x10')" ( (binary_expression "cVar15 == '\x10'" identifier == (char_literal "'\x10'" ' escape_sequence ')) )) (compound_statement "{\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }" { (expression_statement "iVar32 = puVar28[6];" (assignment_expression "iVar32 = puVar28[6]" identifier = (subscript_expression "puVar28[6]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = (uVar6 & 1) + 1;" (assignment_expression "iVar9 = (uVar6 & 1) + 1" identifier = (binary_expression "(uVar6 & 1) + 1" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) + number_literal)) ;) (expression_statement "uVar36 = uVar6 & 0x21 ^ 0x21;" (assignment_expression "uVar36 = uVar6 & 0x21 ^ 0x21" identifier = (binary_expression "uVar6 & 0x21 ^ 0x21" (binary_expression "uVar6 & 0x21" identifier & number_literal) ^ number_literal)) ;) (expression_statement "iVar34 = ((int)puVar28[7] / 2) * 2;" (assignment_expression "iVar34 = ((int)puVar28[7] / 2) * 2" identifier = (binary_expression "((int)puVar28[7] / 2) * 2" (parenthesized_expression "((int)puVar28[7] / 2)" ( (binary_expression "(int)puVar28[7] / 2" (cast_expression "(int)puVar28[7]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar28[7]" identifier [ number_literal ])) / number_literal) )) * number_literal)) ;) (expression_statement "local_f4 = 1;" (assignment_expression "local_f4 = 1" identifier = number_literal) ;) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (if_statement "if (uVar16 != 1) goto LAB_00021ecc;" if (parenthesized_expression "(uVar16 != 1)" ( (binary_expression "uVar16 != 1" identifier != number_literal) )) (goto_statement "goto LAB_00021ecc;" goto statement_identifier ;)) (labeled_statement "LAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);" statement_identifier : (expression_statement "uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);" (assignment_expression "uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f)" identifier = (binary_expression "(uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f)" (parenthesized_expression "(uVar31 & 1)" ( (binary_expression "uVar31 & 1" identifier & number_literal) )) << (parenthesized_expression "(3U - ((int)local_f4 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)local_f4 >> 1) & 0x1f" (binary_expression "3U - ((int)local_f4 >> 1)" number_literal - (parenthesized_expression "((int)local_f4 >> 1)" ( (binary_expression "(int)local_f4 >> 1" (cast_expression "(int)local_f4" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) )))) ;)) (if_statement "if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }" if (parenthesized_expression "(uVar31 < 2)" ( (binary_expression "uVar31 < 2" identifier < number_literal) )) (compound_statement "{\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }" { (expression_statement "uVar16 = ~uVar26 & 7;" (assignment_expression "uVar16 = ~uVar26 & 7" identifier = (binary_expression "~uVar26 & 7" (unary_expression "~uVar26" ~ identifier) & number_literal)) ;) (expression_statement "uVar7 = 3;" (assignment_expression "uVar7 = 3" identifier = number_literal) ;) }) (else_clause "else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }" else (compound_statement "{\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }" { (expression_statement "uVar7 = (int)(8 - local_f4) >> 1;" (assignment_expression "uVar7 = (int)(8 - local_f4) >> 1" identifier = (binary_expression "(int)(8 - local_f4) >> 1" (cast_expression "(int)(8 - local_f4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - local_f4)" ( (binary_expression "8 - local_f4" number_literal - identifier) ))) >> number_literal)) ;) (expression_statement "uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);" (assignment_expression "uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7)" identifier = (binary_expression "((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7)" (parenthesized_expression "((uVar16 << (uVar7 & 0x1f)) + -1)" ( (binary_expression "(uVar16 << (uVar7 & 0x1f)) + -1" (parenthesized_expression "(uVar16 << (uVar7 & 0x1f))" ( (binary_expression "uVar16 << (uVar7 & 0x1f)" identifier << (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) )) + number_literal) )) - (parenthesized_expression "(uVar26 & 7)" ( (binary_expression "uVar26 & 7" identifier & number_literal) )))) ;) }))) (if_statement "if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }" if (parenthesized_expression "(uVar16 + iVar4 >> (uVar7 & 0x1f) != 0)" ( (binary_expression "uVar16 + iVar4 >> (uVar7 & 0x1f) != 0" (binary_expression "uVar16 + iVar4 >> (uVar7 & 0x1f)" (binary_expression "uVar16 + iVar4" identifier + identifier) >> (parenthesized_expression "(uVar7 & 0x1f)" ( (binary_expression "uVar7 & 0x1f" identifier & number_literal) ))) != number_literal) )) (compound_statement "{\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }" { (expression_statement "uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;" (assignment_expression "uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7" identifier = (binary_expression "(~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7" (binary_expression "(~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f)" (parenthesized_expression "(~uVar31 & 1)" ( (binary_expression "~uVar31 & 1" (unary_expression "~uVar31" ~ identifier) & number_literal) )) << (parenthesized_expression "(3U - ((int)uVar31 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uVar31 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar31 >> 1)" number_literal - (parenthesized_expression "((int)uVar31 >> 1)" ( (binary_expression "(int)uVar31 >> 1" (cast_expression "(int)uVar31" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) ))) & number_literal)) ;) (expression_statement "iVar10 = (uVar26 & 7) * iVar9;" (assignment_expression "iVar10 = (uVar26 & 7) * iVar9" identifier = (binary_expression "(uVar26 & 7) * iVar9" (parenthesized_expression "(uVar26 & 7)" ( (binary_expression "uVar26 & 7" identifier & number_literal) )) * identifier)) ;) (expression_statement "iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);" (assignment_expression "iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU)" identifier = (binary_expression "iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU)" identifier << (parenthesized_expression "((int)(8 - local_f4) >> 1 & 0x1fU)" ( (binary_expression "(int)(8 - local_f4) >> 1 & 0x1fU" (binary_expression "(int)(8 - local_f4) >> 1" (cast_expression "(int)(8 - local_f4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - local_f4)" ( (binary_expression "8 - local_f4" number_literal - identifier) ))) >> number_literal) & number_literal) )))) ;) (if_statement "if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }" if (parenthesized_expression "(2 < uVar31)" ( (binary_expression "2 < uVar31" number_literal < identifier) )) (compound_statement "{\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }" { (expression_statement "local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);" (assignment_expression "local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU)" identifier = (binary_expression "8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU)" number_literal >> (parenthesized_expression "((int)(uVar31 - 1) >> 1 & 0x1fU)" ( (binary_expression "(int)(uVar31 - 1) >> 1 & 0x1fU" (binary_expression "(int)(uVar31 - 1) >> 1" (cast_expression "(int)(uVar31 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar31 - 1)" ( (binary_expression "uVar31 - 1" identifier - number_literal) ))) >> number_literal) & number_literal) )))) ;) (goto_statement "goto LAB_00021edc;" goto statement_identifier ;) })) (expression_statement "local_100 = 8;" (assignment_expression "local_100 = 8" identifier = number_literal) ;) (goto_statement "goto LAB_00021edc;" goto statement_identifier ;) })) (do_statement "do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );" do (compound_statement "{\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          }" { (if_statement "if (local_e8 == local_f4) {\n              return 1;\n            }" if (parenthesized_expression "(local_e8 == local_f4)" ( (binary_expression "local_e8 == local_f4" identifier == identifier) )) (compound_statement "{\n              return 1;\n            }" { (return_statement "return 1;" return number_literal ;) })) (while_statement "while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }" { (expression_statement "uVar16 = (uint)*(byte *)(puVar29 + 0x7f);" (assignment_expression "uVar16 = (uint)*(byte *)(puVar29 + 0x7f)" identifier = (binary_expression "(uint)*(byte *)(puVar29 + 0x7f)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(puVar29 + 0x7f)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 0x7f)" ( (binary_expression "puVar29 + 0x7f" identifier + number_literal) ))))) ;) (expression_statement "uVar26 = local_f4 + 1;" (assignment_expression "uVar26 = local_f4 + 1" identifier = (binary_expression "local_f4 + 1" identifier + number_literal)) ;) (expression_statement "uVar31 = local_f4;" (assignment_expression "uVar31 = local_f4" identifier = identifier) ;) (expression_statement "local_f4 = uVar26;" (assignment_expression "local_f4 = uVar26" identifier = identifier) ;) (if_statement "if (uVar16 == 1) goto LAB_00021e54;" if (parenthesized_expression "(uVar16 == 1)" ( (binary_expression "uVar16 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00021e54;" goto statement_identifier ;)) (labeled_statement "LAB_00021ecc:\n              uVar16 = 0;" statement_identifier : (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;)) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "local_100 = 1;" (assignment_expression "local_100 = 1" identifier = number_literal) ;) (expression_statement "iVar25 = iVar9;" (assignment_expression "iVar25 = iVar9" identifier = identifier) ;) (labeled_statement "LAB_00021edc:\n              if (uVar42 <= uVar16) break;" statement_identifier : (if_statement "if (uVar42 <= uVar16) break;" if (parenthesized_expression "(uVar42 <= uVar16)" ( (binary_expression "uVar42 <= uVar16" identifier <= identifier) )) (break_statement "break;" break ;))) (expression_statement "puVar21 = (ushort *)puVar28[5];" (assignment_expression "puVar21 = (ushort *)puVar28[5]" identifier = (cast_expression "(ushort *)puVar28[5]" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar28[5]" identifier [ number_literal ]))) ;) (expression_statement "uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;" (assignment_expression "uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2" identifier = (binary_expression "iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2" (binary_expression "iVar32 + iVar34 * uVar16" identifier + (binary_expression "iVar34 * uVar16" identifier * identifier)) + (binary_expression "iVar4 * iVar9 * 2" (binary_expression "iVar4 * iVar9" identifier * identifier) * number_literal))) ;) (expression_statement "pcVar41 = *(code **)(pcVar40 + 0x3168c);" (assignment_expression "pcVar41 = *(code **)(pcVar40 + 0x3168c)" identifier = (pointer_expression "*(code **)(pcVar40 + 0x3168c)" * (cast_expression "(code **)(pcVar40 + 0x3168c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x3168c)" ( (binary_expression "pcVar40 + 0x3168c" identifier + number_literal) ))))) ;) (do_statement "do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);" do (compound_statement "{\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              }" { (expression_statement "(*pcVar41)(puVar29,puVar21,0);" (call_expression "(*pcVar41)(puVar29,puVar21,0)" (parenthesized_expression "(*pcVar41)" ( (pointer_expression "*pcVar41" * identifier) )) (argument_list "(puVar29,puVar21,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "puVar21 = (ushort *)puVar28[5];" (assignment_expression "puVar21 = (ushort *)puVar28[5]" identifier = (cast_expression "(ushort *)puVar28[5]" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar28[5]" identifier [ number_literal ]))) ;) (expression_statement "puVar23 = puVar21;" (assignment_expression "puVar23 = puVar21" identifier = identifier) ;) (for_statement "for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }" for ( (assignment_expression "uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31" identifier = (binary_expression "iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31" (binary_expression "iVar10 * 2 + iVar4 * iVar9 * -2" (binary_expression "iVar10 * 2" identifier * number_literal) + (binary_expression "iVar4 * iVar9 * -2" (binary_expression "iVar4 * iVar9" identifier * identifier) * number_literal)) + identifier)) ; (binary_expression "uVar26 < uVar31" identifier < identifier) ; (assignment_expression "uVar26 = uVar26 + iVar25 * 2" identifier = (binary_expression "uVar26 + iVar25 * 2" identifier + (binary_expression "iVar25 * 2" identifier * number_literal))) ) (compound_statement "{\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }" { (expression_statement "uVar2 = puVar23[1];" (assignment_expression "uVar2 = puVar23[1]" identifier = (subscript_expression "puVar23[1]" identifier [ number_literal ])) ;) (expression_statement "uVar7 = (uint)uVar2;" (assignment_expression "uVar7 = (uint)uVar2" identifier = (cast_expression "(uint)uVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar12 = *puVar23;" (assignment_expression "uVar12 = *puVar23" identifier = (pointer_expression "*puVar23" * identifier)) ;) (if_statement "if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }" if (parenthesized_expression "(uVar7 == 0)" ( (binary_expression "uVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                    uVar12 = 0;\n                  }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) }) (else_clause "else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }" else (if_statement "if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }" if (parenthesized_expression "(uVar7 != 0xffff)" ( (binary_expression "uVar7 != 0xffff" identifier != number_literal) )) (compound_statement "{\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }" { (expression_statement "uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);" (assignment_expression "uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10)" identifier = (call_expression "(ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10)" (parenthesized_expression "(ushort)" ( identifier )) (argument_list "((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10)" ( (binary_expression "(uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10" (call_expression "(uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1)" ( (binary_expression "(int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1" (cast_expression "(int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20)" ( (binary_expression "(ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20" (binary_expression "(ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001" (call_expression "(ulonglong)(uVar7 * uVar12 + 0x7fff)" (parenthesized_expression "(ulonglong)" ( identifier )) (argument_list "(uVar7 * uVar12 + 0x7fff)" ( (binary_expression "uVar7 * uVar12 + 0x7fff" (binary_expression "uVar7 * uVar12" identifier * identifier) + number_literal) ))) * number_literal) >> number_literal) ))) << number_literal) ))) >> number_literal) )))) ;) })))) (expression_statement "*(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;" (assignment_expression "*(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12" (pointer_expression "*(ushort *)((uint)(uVar36 == 0) * 2 + uVar26)" * (cast_expression "(ushort *)((uint)(uVar36 == 0) * 2 + uVar26)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(uVar36 == 0) * 2 + uVar26)" ( (binary_expression "(uint)(uVar36 == 0) * 2 + uVar26" (binary_expression "(uint)(uVar36 == 0) * 2" (call_expression "(uint)(uVar36 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar36 == 0)" ( (binary_expression "uVar36 == 0" identifier == number_literal) ))) * number_literal) + identifier) )))) = identifier) ;) (if_statement "if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }" if (parenthesized_expression "((uVar6 & 1) != 0)" ( (binary_expression "(uVar6 & 1) != 0" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }" { (expression_statement "*(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;" (assignment_expression "*(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2" (pointer_expression "*(ushort *)((uint)(uVar36 != 0) * 2 + uVar26)" * (cast_expression "(ushort *)((uint)(uVar36 != 0) * 2 + uVar26)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)(uVar36 != 0) * 2 + uVar26)" ( (binary_expression "(uint)(uVar36 != 0) * 2 + uVar26" (binary_expression "(uint)(uVar36 != 0) * 2" (call_expression "(uint)(uVar36 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar36 != 0)" ( (binary_expression "uVar36 != 0" identifier != number_literal) ))) * number_literal) + identifier) )))) = identifier) ;) })) (expression_statement "puVar23 = puVar23 + 2;" (assignment_expression "puVar23 = puVar23 + 2" identifier = (binary_expression "puVar23 + 2" identifier + number_literal)) ;) })) (expression_statement "uVar16 = uVar16 + local_100;" (assignment_expression "uVar16 = uVar16 + local_100" identifier = (binary_expression "uVar16 + local_100" identifier + identifier)) ;) (expression_statement "uVar31 = uVar31 + iVar34 * local_100;" (assignment_expression "uVar31 = uVar31 + iVar34 * local_100" identifier = (binary_expression "uVar31 + iVar34 * local_100" identifier + (binary_expression "iVar34 * local_100" identifier * identifier))) ;) (expression_statement "pcVar41 = *(code **)(pcVar40 + 0x3168c);" (assignment_expression "pcVar41 = *(code **)(pcVar40 + 0x3168c)" identifier = (pointer_expression "*(code **)(pcVar40 + 0x3168c)" * (cast_expression "(code **)(pcVar40 + 0x3168c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x3168c)" ( (binary_expression "pcVar40 + 0x3168c" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(uVar16 < uVar42)" ( (binary_expression "uVar16 < uVar42" identifier < identifier) )) ;) (if_statement "if (local_e8 == local_f4) {\n                return 1;\n              }" if (parenthesized_expression "(local_e8 == local_f4)" ( (binary_expression "local_e8 == local_f4" identifier == identifier) )) (compound_statement "{\n                return 1;\n              }" { (return_statement "return 1;" return number_literal ;) })) })) }) while (parenthesized_expression "( true )" ( true )) ;) })) (goto_statement "goto LAB_00022438;" goto statement_identifier ;) })) (expression_statement "local_e8 = 7;" (assignment_expression "local_e8 = 7" identifier = number_literal) ;) (if_statement "if (uVar16 == 1) goto LAB_00021dd0;" if (parenthesized_expression "(uVar16 == 1)" ( (binary_expression "uVar16 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00021dd0;" goto statement_identifier ;)) (goto_statement "goto LAB_0002244c;" goto statement_identifier ;) })) }))) (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" ( (pointer_expression "**(code **)(pcVar40 + 0x316f4)" * (pointer_expression "*(code **)(pcVar40 + 0x316f4)" * (cast_expression "(code **)(pcVar40 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316f4)" ( (binary_expression "pcVar40 + 0x316f4" identifier + number_literal) ))))) )) (argument_list "(puVar29,iVar9 + -0x2b0)" ( identifier , (binary_expression "iVar9 + -0x2b0" identifier + number_literal) ))) ;) (labeled_statement "LAB_00022470:\n  pcVar41 = *(code **)(pcVar40 + 0x316f4);" statement_identifier : (expression_statement "pcVar41 = *(code **)(pcVar40 + 0x316f4);" (assignment_expression "pcVar41 = *(code **)(pcVar40 + 0x316f4)" identifier = (pointer_expression "*(code **)(pcVar40 + 0x316f4)" * (cast_expression "(code **)(pcVar40 + 0x316f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x316f4)" ( (binary_expression "pcVar40 + 0x316f4" identifier + number_literal) ))))) ;)) (expression_statement "(*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8);" (call_expression "(*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8)" (parenthesized_expression "(*pcVar41)" ( (pointer_expression "*pcVar41" * identifier) )) (argument_list "(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8)" ( identifier , (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x2c8" (pointer_expression "*(int *)(pcVar40 + 0x31304)" * (cast_expression "(int *)(pcVar40 + 0x31304)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x31304)" ( (binary_expression "pcVar40 + 0x31304" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "puVar17 = (undefined4 *)*puVar29;" (assignment_expression "puVar17 = (undefined4 *)*puVar29" identifier = (cast_expression "(undefined4 *)*puVar29" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar29" * identifier))) ;) (expression_statement "puVar28 = *(undefined4 **)*puVar17;" (assignment_expression "puVar28 = *(undefined4 **)*puVar17" identifier = (pointer_expression "*(undefined4 **)*puVar17" * (cast_expression "(undefined4 **)*puVar17" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*puVar17" * identifier)))) ;) (expression_statement "cVar15 = *(char *)(puVar28 + 0x7f);" (assignment_expression "cVar15 = *(char *)(puVar28 + 0x7f)" identifier = (pointer_expression "*(char *)(puVar28 + 0x7f)" * (cast_expression "(char *)(puVar28 + 0x7f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x7f)" ( (binary_expression "puVar28 + 0x7f" identifier + number_literal) ))))) ;) (if_statement "if (cVar15 == '\0') {\n    local_154 = 1;\n  }\n  else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }" if (parenthesized_expression "(cVar15 == '\0')" ( (binary_expression "cVar15 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_154 = 1;\n  }" { (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }" else (compound_statement "{\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }" { (expression_statement "local_154 = 7;" (assignment_expression "local_154 = 7" identifier = number_literal) ;) (if_statement "if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }" if (parenthesized_expression "(cVar15 != '\x01')" ( (binary_expression "cVar15 != '\x01'" identifier != (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }" { (expression_statement "pcVar40 = *(code **)(pcVar41 + 0x30f88);" (assignment_expression "pcVar40 = *(code **)(pcVar41 + 0x30f88)" identifier = (pointer_expression "*(code **)(pcVar41 + 0x30f88)" * (cast_expression "(code **)(pcVar41 + 0x30f88)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar41 + 0x30f88)" ( (binary_expression "pcVar41 + 0x30f88" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);" (call_expression "(*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290)" ( identifier , (binary_expression "*(int *)(pcVar41 + 0x30b98) + -0x290" (pointer_expression "*(int *)(pcVar41 + 0x30b98)" * (cast_expression "(int *)(pcVar41 + 0x30b98)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar41 + 0x30b98)" ( (binary_expression "pcVar41 + 0x30b98" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "piVar5 = (int *)*puVar28;" (assignment_expression "piVar5 = (int *)*puVar28" identifier = (cast_expression "(int *)*puVar28" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar28" * identifier))) ;) (expression_statement "uVar20 = *(undefined4 *)*piVar5;" (assignment_expression "uVar20 = *(undefined4 *)*piVar5" identifier = (pointer_expression "*(undefined4 *)*piVar5" * (cast_expression "(undefined4 *)*piVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)))) ;) (expression_statement "iVar4 = ((undefined4 *)*piVar5)[1];" (assignment_expression "iVar4 = ((undefined4 *)*piVar5)[1]" identifier = (subscript_expression "((undefined4 *)*piVar5)[1]" (parenthesized_expression "((undefined4 *)*piVar5)" ( (cast_expression "(undefined4 *)*piVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar5" * identifier)) )) [ number_literal ])) ;) (expression_statement "FUN_0001e55c(uVar20);" (call_expression "FUN_0001e55c(uVar20)" identifier (argument_list "(uVar20)" ( identifier ))) ;) (if_statement "if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }" if (parenthesized_expression "(puVar28[10] == 0)" ( (binary_expression "puVar28[10] == 0" (subscript_expression "puVar28[10]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }" { (expression_statement "iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);" (assignment_expression "iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20)" identifier = (call_expression "(**(code **)(pcVar40 + 0x30c58))(uVar20)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30c58))" ( (pointer_expression "**(code **)(pcVar40 + 0x30c58)" * (pointer_expression "*(code **)(pcVar40 + 0x30c58)" * (cast_expression "(code **)(pcVar40 + 0x30c58)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30c58)" ( (binary_expression "pcVar40 + 0x30c58" identifier + number_literal) ))))) )) (argument_list "(uVar20)" ( identifier )))) ;) }) (else_clause "else {\n        iVar34 = 0;\n      }" else (compound_statement "{\n        iVar34 = 0;\n      }" { (expression_statement "iVar34 = 0;" (assignment_expression "iVar34 = 0" identifier = number_literal) ;) }))) (expression_statement "(**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);" (call_expression "(**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30d48))" ( (pointer_expression "**(code **)(pcVar40 + 0x30d48)" * (pointer_expression "*(code **)(pcVar40 + 0x30d48)" * (cast_expression "(code **)(pcVar40 + 0x30d48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30d48)" ( (binary_expression "pcVar40 + 0x30d48" identifier + number_literal) ))))) )) (argument_list "(uVar20,iVar4)" ( identifier , identifier ))) ;) (if_statement "if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }" if (parenthesized_expression "((uint)puVar28[10] < 5)" ( (binary_expression "(uint)puVar28[10] < 5" (cast_expression "(uint)puVar28[10]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar28[10]" identifier [ number_literal ])) < number_literal) )) (compound_statement "{\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }" { (expression_statement "iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();" (assignment_expression "iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))()" identifier = (call_expression "(*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))()" (parenthesized_expression "(*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))" ( (pointer_expression "*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820)" * (parenthesized_expression "(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820)" ( (binary_expression "pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820" (binary_expression "pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4)" identifier + (pointer_expression "*(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4)" * (cast_expression "(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4)" ( (binary_expression "*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4" (binary_expression "*(int *)(pcVar40 + 0x3084c) + 0x164" (pointer_expression "*(int *)(pcVar40 + 0x3084c)" * (cast_expression "(int *)(pcVar40 + 0x3084c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x3084c)" ( (binary_expression "pcVar40 + 0x3084c" identifier + number_literal) )))) + number_literal) + (binary_expression "puVar28[10] * 4" (subscript_expression "puVar28[10]" identifier [ number_literal ]) * number_literal)) ))))) + number_literal) ))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar4;" return identifier ;) })) (expression_statement "iVar9 = *(int *)(pcVar40 + 0x3084c);" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x3084c)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x3084c)" * (cast_expression "(int *)(pcVar40 + 0x3084c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x3084c)" ( (binary_expression "pcVar40 + 0x3084c" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );" statement_identifier : (do_statement "do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );" do (compound_statement "{\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      }" { (expression_statement "(**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);" (call_expression "(**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30c3c))" ( (pointer_expression "**(code **)(pcVar40 + 0x30c3c)" * (pointer_expression "*(code **)(pcVar40 + 0x30c3c)" * (cast_expression "(code **)(pcVar40 + 0x30c3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30c3c)" ( (binary_expression "pcVar40 + 0x30c3c" identifier + number_literal) ))))) )) (argument_list "(uVar20,iVar9 + -0x260)" ( identifier , (binary_expression "iVar9 + -0x260" identifier + number_literal) ))) ;) (if_statement "if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }" if (parenthesized_expression "(*(char *)(iVar4 + 0x19) != '\x03')" ( (binary_expression "*(char *)(iVar4 + 0x19) != '\x03'" (pointer_expression "*(char *)(iVar4 + 0x19)" * (cast_expression "(char *)(iVar4 + 0x19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x19)" ( (binary_expression "iVar4 + 0x19" identifier + number_literal) )))) != (char_literal "'\x03'" ' escape_sequence ')) )) (compound_statement "{\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }" { (expression_statement "iVar9 = *(int *)(pcVar40 + 0x3084c);" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x3084c)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x3084c)" * (cast_expression "(int *)(pcVar40 + 0x3084c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x3084c)" ( (binary_expression "pcVar40 + 0x3084c" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;" if (parenthesized_expression "(*(char *)(iVar4 + 0x19) != '\0')" ( (binary_expression "*(char *)(iVar4 + 0x19) != '\0'" (pointer_expression "*(char *)(iVar4 + 0x19)" * (cast_expression "(char *)(iVar4 + 0x19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x19)" ( (binary_expression "iVar4 + 0x19" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00022980;" goto statement_identifier ;)) })) (expression_statement "iVar9 = *(int *)(pcVar40 + 0x3084c);" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x3084c)" identifier = (pointer_expression "*(int *)(pcVar40 + 0x3084c)" * (cast_expression "(int *)(pcVar40 + 0x3084c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x3084c)" ( (binary_expression "pcVar40 + 0x3084c" identifier + number_literal) ))))) ;) (if_statement "if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }" if (parenthesized_expression "(*(char *)(iVar4 + 0x18) == '\b')" ( (binary_expression "*(char *)(iVar4 + 0x18) == '\b'" (pointer_expression "*(char *)(iVar4 + 0x18)" * (cast_expression "(char *)(iVar4 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) == (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }" { (expression_statement "iVar32 = puVar28[2];" (assignment_expression "iVar32 = puVar28[2]" identifier = (subscript_expression "puVar28[2]" identifier [ number_literal ])) ;) (expression_statement "iVar9 = puVar28[1];" (assignment_expression "iVar9 = puVar28[1]" identifier = (subscript_expression "puVar28[1]" identifier [ number_literal ])) ;) (if_statement "if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }" if (parenthesized_expression "(iVar32 < 0)" ( (binary_expression "iVar32 < 0" identifier < number_literal) )) (compound_statement "{\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }" { (expression_statement "iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);" (assignment_expression "iVar9 = iVar9 - iVar32 * (piVar5[3] + -1)" identifier = (binary_expression "iVar9 - iVar32 * (piVar5[3] + -1)" identifier - (binary_expression "iVar32 * (piVar5[3] + -1)" identifier * (parenthesized_expression "(piVar5[3] + -1)" ( (binary_expression "piVar5[3] + -1" (subscript_expression "piVar5[3]" identifier [ number_literal ]) + number_literal) ))))) ;) })) (expression_statement "puVar28[6] = iVar9;" (assignment_expression "puVar28[6] = iVar9" (subscript_expression "puVar28[6]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar28[7] = iVar32;" (assignment_expression "puVar28[7] = iVar32" (subscript_expression "puVar28[7]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }" if (parenthesized_expression "(iVar34 == 0)" ( (binary_expression "iVar34 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }" { (expression_statement "uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);" (assignment_expression "uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4)" identifier = (call_expression "(**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30d3c))" ( (pointer_expression "**(code **)(pcVar40 + 0x30d3c)" * (pointer_expression "*(code **)(pcVar40 + 0x30d3c)" * (cast_expression "(code **)(pcVar40 + 0x30d3c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30d3c)" ( (binary_expression "pcVar40 + 0x30d3c" identifier + number_literal) ))))) )) (argument_list "(uVar20,iVar4)" ( identifier , identifier )))) ;) (expression_statement "uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);" (assignment_expression "uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11)" identifier = (call_expression "(**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30b38))" ( (pointer_expression "**(code **)(pcVar40 + 0x30b38)" * (pointer_expression "*(code **)(pcVar40 + 0x30b38)" * (cast_expression "(code **)(pcVar40 + 0x30b38)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30b38)" ( (binary_expression "pcVar40 + 0x30b38" identifier + number_literal) ))))) )) (argument_list "(uVar20,uVar11)" ( identifier , identifier )))) ;) (expression_statement "puVar28[5] = uVar11;" (assignment_expression "puVar28[5] = uVar11" (subscript_expression "puVar28[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);" (assignment_expression "iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28)" identifier = (call_expression "FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28)" identifier (argument_list "(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28)" ( identifier , (binary_expression "*(int *)(pcVar40 + 0x308a0) + 0x2aa0" (pointer_expression "*(int *)(pcVar40 + 0x308a0)" * (cast_expression "(int *)(pcVar40 + 0x308a0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar40 + 0x308a0)" ( (binary_expression "pcVar40 + 0x308a0" identifier + number_literal) )))) + number_literal) , identifier )))) ;) (expression_statement "pcVar40 = *(code **)(pcVar40 + 0x30b54);" (assignment_expression "pcVar40 = *(code **)(pcVar40 + 0x30b54)" identifier = (pointer_expression "*(code **)(pcVar40 + 0x30b54)" * (cast_expression "(code **)(pcVar40 + 0x30b54)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30b54)" ( (binary_expression "pcVar40 + 0x30b54" identifier + number_literal) ))))) ;) (expression_statement "puVar28[5] = 0;" (assignment_expression "puVar28[5] = 0" (subscript_expression "puVar28[5]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "(*pcVar40)(uVar20,uVar11);" (call_expression "(*pcVar40)(uVar20,uVar11)" (parenthesized_expression "(*pcVar40)" ( (pointer_expression "*pcVar40" * identifier) )) (argument_list "(uVar20,uVar11)" ( identifier , identifier ))) ;) (return_statement "return iVar4;" return identifier ;) })) (while_statement "while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }" while (parenthesized_expression "(iVar34 = iVar34 + -1, -1 < iVar34)" ( (comma_expression "iVar34 = iVar34 + -1, -1 < iVar34" (assignment_expression "iVar34 = iVar34 + -1" identifier = (binary_expression "iVar34 + -1" identifier + number_literal)) , (binary_expression "-1 < iVar34" number_literal < identifier)) )) (compound_statement "{\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }" { (expression_statement "iVar9 = puVar28[6];" (assignment_expression "iVar9 = puVar28[6]" identifier = (subscript_expression "puVar28[6]" identifier [ number_literal ])) ;) (for_statement "for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }" for ( (assignment_expression "iVar4 = piVar5[3]" identifier = (subscript_expression "piVar5[3]" identifier [ number_literal ])) ; (binary_expression "iVar4 != 0" identifier != number_literal) ; (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ) (compound_statement "{\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }" { (expression_statement "(**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);" (call_expression "(**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30bd4))" ( (pointer_expression "**(code **)(pcVar40 + 0x30bd4)" * (pointer_expression "*(code **)(pcVar40 + 0x30bd4)" * (cast_expression "(code **)(pcVar40 + 0x30bd4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar40 + 0x30bd4)" ( (binary_expression "pcVar40 + 0x30bd4" identifier + number_literal) ))))) )) (argument_list "(uVar20,iVar9,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "iVar9 = iVar9 + iVar32;" (assignment_expression "iVar9 = iVar9 + iVar32" identifier = (binary_expression "iVar9 + iVar32" identifier + identifier)) ;) })) })) (return_statement "return 1;" return number_literal ;) })) }) while (parenthesized_expression "( true )" ( true )) ;)) })) }))) (expression_statement "uVar42 = puVar17[3];" (assignment_expression "uVar42 = puVar17[3]" identifier = (subscript_expression "puVar17[3]" identifier [ number_literal ])) ;) (expression_statement "iVar34 = puVar17[2];" (assignment_expression "iVar34 = puVar17[2]" identifier = (subscript_expression "puVar17[2]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = puVar29[7];" (assignment_expression "iVar4 = puVar29[7]" identifier = (subscript_expression "puVar29[7]" identifier [ number_literal ])) ;) (if_statement "if ((puVar17[4] & 2) == 0) {\n    iVar9 = 1;\n    local_15c = iVar34;\n  }\n  else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }" if (parenthesized_expression "((puVar17[4] & 2) == 0)" ( (binary_expression "(puVar17[4] & 2) == 0" (parenthesized_expression "(puVar17[4] & 2)" ( (binary_expression "puVar17[4] & 2" (subscript_expression "puVar17[4]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar9 = 1;\n    local_15c = iVar34;\n  }" { (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (expression_statement "local_15c = iVar34;" (assignment_expression "local_15c = iVar34" identifier = identifier) ;) }) (else_clause "else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }" else (compound_statement "{\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }" { (expression_statement "iVar9 = 3;" (assignment_expression "iVar9 = 3" identifier = number_literal) ;) (expression_statement "local_15c = iVar34 * 3;" (assignment_expression "local_15c = iVar34 * 3" identifier = (binary_expression "iVar34 * 3" identifier * number_literal)) ;) }))) (expression_statement "iVar25 = *(int *)(pcVar41 + 0x30ce4);" (assignment_expression "iVar25 = *(int *)(pcVar41 + 0x30ce4)" identifier = (pointer_expression "*(int *)(pcVar41 + 0x30ce4)" * (cast_expression "(int *)(pcVar41 + 0x30ce4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar41 + 0x30ce4)" ( (binary_expression "pcVar41 + 0x30ce4" identifier + number_literal) ))))) ;) (expression_statement "iVar32 = *(int *)(pcVar41 + 0x30ce8);" (assignment_expression "iVar32 = *(int *)(pcVar41 + 0x30ce8)" identifier = (pointer_expression "*(int *)(pcVar41 + 0x30ce8)" * (cast_expression "(int *)(pcVar41 + 0x30ce8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar41 + 0x30ce8)" ( (binary_expression "pcVar41 + 0x30ce8" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  } while( true );" do (compound_statement "{\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  }" { (expression_statement "uVar16 = uVar6 + 1;" (assignment_expression "uVar16 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (if_statement "if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }" if (parenthesized_expression "(cVar15 == '\x01')" ( (binary_expression "cVar15 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (compound_statement "{\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }" { (expression_statement "uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);" (assignment_expression "uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f)" identifier = (binary_expression "(uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f)" (parenthesized_expression "(uVar6 & 1)" ( (binary_expression "uVar6 & 1" identifier & number_literal) )) << (parenthesized_expression "(3U - ((int)uVar16 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uVar16 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar16 >> 1)" number_literal - (parenthesized_expression "((int)uVar16 >> 1)" ( (binary_expression "(int)uVar16 >> 1" (cast_expression "(int)uVar16" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) )))) ;) (if_statement "if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }" if (parenthesized_expression "(uVar6 < 2)" ( (binary_expression "uVar6 < 2" identifier < number_literal) )) (compound_statement "{\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }" { (expression_statement "uVar36 = ~uVar31 & 7;" (assignment_expression "uVar36 = ~uVar31 & 7" identifier = (binary_expression "~uVar31 & 7" (unary_expression "~uVar31" ~ identifier) & number_literal)) ;) (expression_statement "uVar26 = 3;" (assignment_expression "uVar26 = 3" identifier = number_literal) ;) }) (else_clause "else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }" else (compound_statement "{\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }" { (expression_statement "uVar26 = (int)(8 - uVar16) >> 1;" (assignment_expression "uVar26 = (int)(8 - uVar16) >> 1" identifier = (binary_expression "(int)(8 - uVar16) >> 1" (cast_expression "(int)(8 - uVar16)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - uVar16)" ( (binary_expression "8 - uVar16" number_literal - identifier) ))) >> number_literal)) ;) (expression_statement "uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);" (assignment_expression "uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7)" identifier = (binary_expression "((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7)" (parenthesized_expression "((1 << (uVar26 & 0x1f)) + -1)" ( (binary_expression "(1 << (uVar26 & 0x1f)) + -1" (parenthesized_expression "(1 << (uVar26 & 0x1f))" ( (binary_expression "1 << (uVar26 & 0x1f)" number_literal << (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) ))) )) + number_literal) )) - (parenthesized_expression "(uVar31 & 7)" ( (binary_expression "uVar31 & 7" identifier & number_literal) )))) ;) }))) (if_statement "if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }" if (parenthesized_expression "(uVar36 + iVar34 >> (uVar26 & 0x1f) != 0)" ( (binary_expression "uVar36 + iVar34 >> (uVar26 & 0x1f) != 0" (binary_expression "uVar36 + iVar34 >> (uVar26 & 0x1f)" (binary_expression "uVar36 + iVar34" identifier + identifier) >> (parenthesized_expression "(uVar26 & 0x1f)" ( (binary_expression "uVar26 & 0x1f" identifier & number_literal) ))) != number_literal) )) (compound_statement "{\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }" { (expression_statement "local_164 = (uVar31 & 7) * iVar9;" (assignment_expression "local_164 = (uVar31 & 7) * iVar9" identifier = (binary_expression "(uVar31 & 7) * iVar9" (parenthesized_expression "(uVar31 & 7)" ( (binary_expression "uVar31 & 7" identifier & number_literal) )) * identifier)) ;) (expression_statement "iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);" (assignment_expression "iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU)" identifier = (binary_expression "iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU)" identifier << (parenthesized_expression "((int)(8 - uVar16) >> 1 & 0x1fU)" ( (binary_expression "(int)(8 - uVar16) >> 1 & 0x1fU" (binary_expression "(int)(8 - uVar16) >> 1" (cast_expression "(int)(8 - uVar16)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(8 - uVar16)" ( (binary_expression "8 - uVar16" number_literal - identifier) ))) >> number_literal) & number_literal) )))) ;) (expression_statement "uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;" (assignment_expression "uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7" identifier = (binary_expression "(~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7" (binary_expression "(~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f)" (parenthesized_expression "(~uVar6 & 1)" ( (binary_expression "~uVar6 & 1" (unary_expression "~uVar6" ~ identifier) & number_literal) )) << (parenthesized_expression "(3U - ((int)uVar6 >> 1) & 0x1f)" ( (binary_expression "3U - ((int)uVar6 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar6 >> 1)" number_literal - (parenthesized_expression "((int)uVar6 >> 1)" ( (binary_expression "(int)uVar6 >> 1" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) ))) & number_literal) ))) & number_literal)) ;) (if_statement "if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }" if (parenthesized_expression "(uVar6 < 3)" ( (binary_expression "uVar6 < 3" identifier < number_literal) )) (compound_statement "{\n          iVar33 = 8;\n        }" { (expression_statement "iVar33 = 8;" (assignment_expression "iVar33 = 8" identifier = number_literal) ;) }) (else_clause "else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }" else (compound_statement "{\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }" { (expression_statement "iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);" (assignment_expression "iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU)" identifier = (binary_expression "8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU)" number_literal >> (parenthesized_expression "((int)(uVar6 - 1) >> 1 & 0x1fU)" ( (binary_expression "(int)(uVar6 - 1) >> 1 & 0x1fU" (binary_expression "(int)(uVar6 - 1) >> 1" (cast_expression "(int)(uVar6 - 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) ))) >> number_literal) & number_literal) )))) ;) }))) (goto_statement "goto LAB_000225b8;" goto statement_identifier ;) })) }) (else_clause "else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }" else (compound_statement "{\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }" { (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" identifier = number_literal) ;) (expression_statement "local_164 = 0;" (assignment_expression "local_164 = 0" identifier = number_literal) ;) (expression_statement "iVar33 = 1;" (assignment_expression "iVar33 = 1" identifier = number_literal) ;) (expression_statement "iVar10 = iVar9;" (assignment_expression "iVar10 = iVar9" identifier = identifier) ;) (labeled_statement "LAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }" statement_identifier : (if_statement "if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }" if (parenthesized_expression "(uVar31 < uVar42)" ( (binary_expression "uVar31 < uVar42" identifier < identifier) )) (compound_statement "{\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }" { (expression_statement "iVar30 = uVar31 * iVar4;" (assignment_expression "iVar30 = uVar31 * iVar4" identifier = (binary_expression "uVar31 * iVar4" identifier * identifier)) ;) (do_statement "do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);" do (compound_statement "{\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        }" { (expression_statement "iVar37 = puVar29[5];" (assignment_expression "iVar37 = puVar29[5]" identifier = (subscript_expression "puVar29[5]" identifier [ number_literal ])) ;) (expression_statement "(**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);" (call_expression "(**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0)" (parenthesized_expression "(**(code **)(pcVar41 + 0x30f20))" ( (pointer_expression "**(code **)(pcVar41 + 0x30f20)" * (pointer_expression "*(code **)(pcVar41 + 0x30f20)" * (cast_expression "(code **)(pcVar41 + 0x30f20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar41 + 0x30f20)" ( (binary_expression "pcVar41 + 0x30f20" identifier + number_literal) ))))) )) (argument_list "(puVar28,iVar37,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);" (assignment_expression "pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c)" identifier = (cast_expression "(byte *)(puVar29[6] + iVar30 + local_15c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29[6] + iVar30 + local_15c)" ( (binary_expression "puVar29[6] + iVar30 + local_15c" (binary_expression "puVar29[6] + iVar30" (subscript_expression "puVar29[6]" identifier [ number_literal ]) + identifier) + identifier) )))) ;) (expression_statement "pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);" (assignment_expression "pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164)" identifier = (cast_expression "(byte *)(puVar29[6] + iVar30 + local_164)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29[6] + iVar30 + local_164)" ( (binary_expression "puVar29[6] + iVar30 + local_164" (binary_expression "puVar29[6] + iVar30" (subscript_expression "puVar29[6]" identifier [ number_literal ]) + identifier) + identifier) )))) ;) (if_statement "if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }" if (parenthesized_expression "(pbVar8 < pbVar27)" ( (binary_expression "pbVar8 < pbVar27" identifier < identifier) )) (compound_statement "{\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }" { (expression_statement "iVar38 = *(int *)(pcVar41 + 0x30cec);" (assignment_expression "iVar38 = *(int *)(pcVar41 + 0x30cec)" identifier = (pointer_expression "*(int *)(pcVar41 + 0x30cec)" * (cast_expression "(int *)(pcVar41 + 0x30cec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar41 + 0x30cec)" ( (binary_expression "pcVar41 + 0x30cec" identifier + number_literal) ))))) ;) (expression_statement "pbVar22 = (byte *)(iVar37 + iVar9);" (assignment_expression "pbVar22 = (byte *)(iVar37 + iVar9)" identifier = (cast_expression "(byte *)(iVar37 + iVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar37 + iVar9)" ( (binary_expression "iVar37 + iVar9" identifier + identifier) )))) ;) (do_statement "do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);" do (compound_statement "{\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            }" { (while_statement "while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }" { (expression_statement "uVar6 = (uint)*pbVar22;" (assignment_expression "uVar6 = (uint)*pbVar22" identifier = (binary_expression "(uint)*pbVar22" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "pbVar18 = pbVar22 + -iVar9;" (assignment_expression "pbVar18 = pbVar22 + -iVar9" identifier = (binary_expression "pbVar22 + -iVar9" identifier + (unary_expression "-iVar9" - identifier))) ;) (if_statement "if (uVar6 == 0) break;" if (parenthesized_expression "(uVar6 == 0)" ( (binary_expression "uVar6 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pbVar24 = pbVar8;" (assignment_expression "pbVar24 = pbVar8" identifier = identifier) ;) (do_statement "do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);" do (compound_statement "{\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                }" { (expression_statement "bVar14 = *pbVar18;" (assignment_expression "bVar14 = *pbVar18" identifier = (pointer_expression "*pbVar18" * identifier)) ;) (if_statement "if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }" if (parenthesized_expression "(uVar6 != 0xff)" ( (binary_expression "uVar6 != 0xff" identifier != number_literal) )) (compound_statement "{\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }" { (expression_statement "uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;" (assignment_expression "uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff" identifier = (binary_expression "(uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff" (binary_expression "(uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6)" (binary_expression "(uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar25 + (uint)*pbVar24 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar25 + (uint)*pbVar24 * 2)" ( (binary_expression "iVar25 + (uint)*pbVar24 * 2" identifier + (binary_expression "(uint)*pbVar24 * 2" (binary_expression "(uint)*pbVar24" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) )))) * (parenthesized_expression "(0xff - uVar6)" ( (binary_expression "0xff - uVar6" number_literal - identifier) ))) + (binary_expression "(uint)bVar14 * 0xffff" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal))) ;) (expression_statement "uVar26 = uVar36 >> 0xf;" (assignment_expression "uVar26 = uVar36 >> 0xf" identifier = (binary_expression "uVar36 >> 0xf" identifier >> number_literal)) ;) (expression_statement "bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);" (assignment_expression "bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8)" identifier = (call_expression "(byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8)" ( (binary_expression "((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8" (binary_expression "((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2)" (parenthesized_expression "((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc)" ( (binary_expression "(uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc" (binary_expression "(uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26)" (binary_expression "(uVar36 & 0x7fff) * (uint)" (parenthesized_expression "(uVar36 & 0x7fff)" ( (binary_expression "uVar36 & 0x7fff" identifier & number_literal) )) * (parenthesized_expression "(uint)" ( identifier ))) * (cast_expression "(byte *)(iVar32 + uVar26)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar32 + uVar26)" ( (binary_expression "iVar32 + uVar26" identifier + identifier) )))) >> number_literal) )) + (binary_expression "(uint)*(ushort *)(iVar38 + uVar26 * 2)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(ushort *)(iVar38 + uVar26 * 2)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar38 + uVar26 * 2)" ( (binary_expression "iVar38 + uVar26 * 2" identifier + (binary_expression "uVar26 * 2" identifier * number_literal)) ))))) >> number_literal) )))) ;) })) (expression_statement "pbVar18 = pbVar18 + 1;" (assignment_expression "pbVar18 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar24 = bVar14;" (assignment_expression "*pbVar24 = bVar14" (pointer_expression "*pbVar24" * identifier) = identifier) ;) (expression_statement "pbVar24 = pbVar24 + 1;" (assignment_expression "pbVar24 = pbVar24 + 1" identifier = (binary_expression "pbVar24 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pbVar18 != pbVar22)" ( (binary_expression "pbVar18 != pbVar22" identifier != identifier) )) ;) (expression_statement "pbVar8 = pbVar8 + iVar10;" (assignment_expression "pbVar8 = pbVar8 + iVar10" identifier = (binary_expression "pbVar8 + iVar10" identifier + identifier)) ;) (expression_statement "pbVar22 = pbVar22 + iVar9 + 1;" (assignment_expression "pbVar22 = pbVar22 + iVar9 + 1" identifier = (binary_expression "pbVar22 + iVar9 + 1" (binary_expression "pbVar22 + iVar9" identifier + identifier) + number_literal)) ;) (if_statement "if (pbVar27 <= pbVar8) goto LAB_000226d4;" if (parenthesized_expression "(pbVar27 <= pbVar8)" ( (binary_expression "pbVar27 <= pbVar8" identifier <= identifier) )) (goto_statement "goto LAB_000226d4;" goto statement_identifier ;)) })) (expression_statement "pbVar8 = pbVar8 + iVar10;" (assignment_expression "pbVar8 = pbVar8 + iVar10" identifier = (binary_expression "pbVar8 + iVar10" identifier + identifier)) ;) (expression_statement "pbVar22 = pbVar22 + iVar9 + 1;" (assignment_expression "pbVar22 = pbVar22 + iVar9 + 1" identifier = (binary_expression "pbVar22 + iVar9 + 1" (binary_expression "pbVar22 + iVar9" identifier + identifier) + number_literal)) ;) }) while (parenthesized_expression "(pbVar8 < pbVar27)" ( (binary_expression "pbVar8 < pbVar27" identifier < identifier) )) ;) })) (labeled_statement "LAB_000226d4:\n          uVar31 = uVar31 + iVar33;" statement_identifier : (expression_statement "uVar31 = uVar31 + iVar33;" (assignment_expression "uVar31 = uVar31 + iVar33" identifier = (binary_expression "uVar31 + iVar33" identifier + identifier)) ;)) (expression_statement "iVar30 = iVar30 + iVar33 * iVar4;" (assignment_expression "iVar30 = iVar30 + iVar33 * iVar4" identifier = (binary_expression "iVar30 + iVar33 * iVar4" identifier + (binary_expression "iVar33 * iVar4" identifier * identifier))) ;) }) while (parenthesized_expression "(uVar31 < uVar42)" ( (binary_expression "uVar31 < uVar42" identifier < identifier) )) ;) }))) }))) (if_statement "if (local_154 == uVar16) {\n      return 1;\n    }" if (parenthesized_expression "(local_154 == uVar16)" ( (binary_expression "local_154 == uVar16" identifier == identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "cVar15 = *(char *)(puVar28 + 0x7f);" (assignment_expression "cVar15 = *(char *)(puVar28 + 0x7f)" identifier = (pointer_expression "*(char *)(puVar28 + 0x7f)" * (cast_expression "(char *)(puVar28 + 0x7f)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar28 + 0x7f)" ( (binary_expression "puVar28 + 0x7f" identifier + number_literal) ))))) ;) (expression_statement "uVar6 = uVar16;" (assignment_expression "uVar6 = uVar16" identifier = identifier) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) << LIT) ))) | (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) >> LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) + LIT) >> LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT >> LIT) ))) * IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = 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) )))) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) * LIT)) + LIT) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) , (binary_expression IDENT + LIT) , (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (subscript_expression IDENT [ LIT ]) , IDENT , (binary_expression IDENT + LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' character ')) ))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_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 (subscript_expression IDENT [ LIT ]) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (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) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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) )))) == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) })) })))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ))) ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) ^ IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement 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) ))))) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , LIT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement 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) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , LIT ))) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , LIT , LIT ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (labeled_statement statement_identifier : (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 (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , (unary_expression ! IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) (else_clause else (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor (sized_type_specifier short)) ) (parenthesized_expression ( (binary_expression IDENT >> LIT) ))) , (binary_expression (parenthesized_expression ( IDENT )) * IDENT) ))) & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression & IDENT) , LIT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))))) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) }))) })))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT | LIT)) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 = (binary_expression IDENT - (binary_expression IDENT * (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_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 + LIT) )))) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_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 + LIT) )))) + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;) (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 = (binary_expression IDENT | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT << LIT) )))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) ))) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , (subscript_expression IDENT [ LIT ]) , LIT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (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) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( BOOL )) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (for_statement for ( (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (return_statement return IDENT ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;)) (labeled_statement 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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;)) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (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 + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * IDENT)) + IDENT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , LIT ))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ; (binary_expression IDENT < IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression LIT - IDENT) )) * (cast_expression ( (type_descriptor TYPE) ) IDENT)) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) >> LIT) )) + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) >> LIT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << (parenthesized_expression ( (binary_expression (binary_expression LIT - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) & LIT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT - IDENT) ))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) + LIT) )) - (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) }))) }) while (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + IDENT) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) == LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT - (parenthesized_expression ( (binary_expression IDENT + LIT) ))) ))) >> LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & LIT) )) << (parenthesized_expression ( (binary_expression (binary_expression LIT - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) & LIT) ))) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression LIT >> (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - LIT) ))) >> LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (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 + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * IDENT)) + IDENT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , LIT ))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ; (binary_expression IDENT < IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) * (parenthesized_expression ( (binary_expression LIT - IDENT) ))) + (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) >> LIT) )) + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) >> LIT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }))) })) }) while (parenthesized_expression ( BOOL )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT & LIT) ^ LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) / LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << (parenthesized_expression ( (binary_expression (binary_expression LIT - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) & LIT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT - IDENT) ))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) + LIT) )) - (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + IDENT) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & LIT) )) << (parenthesized_expression ( (binary_expression (binary_expression LIT - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) & LIT) ))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT - IDENT) ))) >> LIT) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT >> (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - LIT) ))) >> LIT) & LIT) )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (while_statement while (parenthesized_expression ( BOOL )) (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 + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression IDENT * IDENT)) + (binary_expression (binary_expression IDENT * IDENT) * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT * LIT) + (binary_expression (binary_expression IDENT * IDENT) * LIT)) + IDENT)) ; (binary_expression IDENT < IDENT) ; (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression IDENT * IDENT) + LIT) ))) * LIT) >> LIT) ))) << LIT) ))) >> LIT) )))) ;) })))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) ))) * LIT) + IDENT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))) * LIT) + IDENT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return LIT ;) })) })) }) while (parenthesized_expression ( BOOL )) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (labeled_statement 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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (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 (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )) [ LIT ])) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (parenthesized_expression ( (binary_expression (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression (subscript_expression IDENT [ LIT ]) * LIT)) ))))) + LIT) ))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (binary_expression IDENT * (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT )))) ;) (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression LIT < IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (for_statement for ( (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) })) (return_statement return LIT ;) })) }) while (parenthesized_expression ( BOOL )) ;)) })) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << (parenthesized_expression ( (binary_expression (binary_expression LIT - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ IDENT) & LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT - IDENT) ))) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) + LIT) )) - (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + IDENT) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression LIT - IDENT) ))) >> LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ IDENT) & LIT) )) << (parenthesized_expression ( (binary_expression (binary_expression LIT - (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) ))) & LIT) ))) & 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 = (binary_expression LIT >> (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - LIT) ))) >> LIT) & LIT) )))) ;) }))) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_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 TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) )))) * (parenthesized_expression ( (binary_expression LIT - IDENT) ))) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) * (parenthesized_expression ( IDENT ))) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) >> LIT) )) + (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) >> LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_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 (binary_expression IDENT + IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return 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 = IDENT) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "int png_read_row(undefined4 *param_1,int param_2,int param_3)\n\n{\n  bool bVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  int iVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int iVar10;\n  ushort uVar12;\n  byte bVar13;\n  byte bVar14;\n  char cVar15;\n  undefined4 uVar11;\n  uint uVar16;\n  undefined4 *puVar17;\n  byte *pbVar18;\n  undefined *puVar19;\n  undefined4 uVar20;\n  ushort *puVar21;\n  byte *pbVar22;\n  ushort *puVar23;\n  byte *pbVar24;\n  int iVar25;\n  uint uVar26;\n  byte *pbVar27;\n  undefined4 *unaff_s0;\n  undefined4 *puVar28;\n  undefined4 *puVar29;\n  int iVar30;\n  uint uVar31;\n  int iVar32;\n  int iVar33;\n  int unaff_s2;\n  int iVar34;\n  int *piVar35;\n  uint uVar36;\n  int iVar37;\n  int iVar38;\n  undefined *puVar39;\n  code *pcVar40;\n  code *pcVar41;\n  uint uVar42;\n  int local_164;\n  int local_15c;\n  uint local_154;\n  int local_100;\n  int local_f8;\n  uint local_f4;\n  uint local_ec;\n  uint local_e8;\n  uint local_80;\n  ushort local_7c;\n  ushort local_7a;\n  ushort local_78;\n  int local_74;\n  undefined4 *local_70;\n  undefined *local_6c;\n  int local_68;\n  int local_64;\n  int local_28;\n  uint local_24;\n  byte local_20;\n  char local_1f;\n  undefined2 local_1e;\n  int local_1c;\n  \n  puVar3 = PTR___stack_chk_guard_000534bc;\n  local_1c = *(int *)PTR___stack_chk_guard_000534bc;\n  if (param_1 != (undefined4 *)0x0) {\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }\nLAB_000212f4:\n  iVar4 = *(int *)puVar3;\n  if (local_1c == iVar4) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\n  param_1 = unaff_s0;\n  param_3 = unaff_s2;\nLAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);\nLAB_000215e0:\n  puVar19 = PTR_s_nt_0005301c + -0x9d4;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19);\nLAB_000215f4:\n  puVar29 = param_1;\n  puVar39 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8);\n  piVar5 = *(int **)(puVar39 + 0x31eb8);\n  piVar35 = (int *)*puVar29;\n  local_74 = *piVar5;\n  local_6c = puVar3;\n  uVar31 = piVar35[4];\n  uVar16 = uVar31 & 4;\n  puVar28 = *(undefined4 **)*piVar35;\n  iVar4 = ((undefined4 *)*piVar35)[1];\n  local_70 = param_1;\n  local_68 = param_3;\n  local_64 = param_2;\n  (**(code **)(puVar39 + 0x31d60))(puVar28);\n  uVar6 = FUN_0001e440(puVar28);\n  uVar42 = uVar6 & 0xfffffff7 ^ uVar31;\n  if ((uVar42 & 2) == 0) {\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }\n  (*pcVar40)(puVar28,0,0xffffffff);\njoined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }\n  if ((uVar42 & 0x40) != 0) {\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }\n  if (uVar36 != 0) goto LAB_00021afc;\n  do {\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );\n  while( true ) {\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }\nLAB_000219e8:\n  if (local_74 == *piVar5) {\n    return iVar4;\n  }\nLAB_00021ce8:\n  (**(code **)(puVar39 + 0x31e80))();\nLAB_00021cf4:\n  (**(code **)(puVar39 + 0x31e08))();\nLAB_00021d04:\n  pcVar40 = *(code **)(puVar39 + 0x31e08);\n  (*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318);\n  piVar5 = (int *)*puVar28;\n  iVar4 = piVar5[2];\n  puVar29 = *(undefined4 **)*piVar5;\n  iVar34 = ((undefined4 *)*piVar5)[1];\n  uVar42 = piVar5[3];\n  if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }\n  (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0);\nLAB_00022470:\n  pcVar41 = *(code **)(pcVar40 + 0x316f4);\n  (*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8);\n  puVar17 = (undefined4 *)*puVar29;\n  puVar28 = *(undefined4 **)*puVar17;\n  cVar15 = *(char *)(puVar28 + 0x7f);\n  if (cVar15 == '\0') {\n    local_154 = 1;\n  }\n  else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }\n  uVar42 = puVar17[3];\n  iVar34 = puVar17[2];\n  iVar4 = puVar29[7];\n  if ((puVar17[4] & 2) == 0) {\n    iVar9 = 1;\n    local_15c = iVar34;\n  }\n  else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }\n  iVar25 = *(int *)(pcVar41 + 0x30ce4);\n  iVar32 = *(int *)(pcVar41 + 0x30ce8);\n  uVar6 = 0;\n  do {\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  } while( true );\n}" (primitive_type "int") (function_declarator "png_read_row(undefined4 *param_1,int param_2,int param_3)" (identifier "png_read_row") (parameter_list "(undefined4 *param_1,int param_2,int param_3)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) () ")"))) (compound_statement "{\n  bool bVar1;\n  ushort uVar2;\n  undefined *puVar3;\n  int iVar4;\n  int *piVar5;\n  uint uVar6;\n  uint uVar7;\n  byte *pbVar8;\n  int iVar9;\n  int iVar10;\n  ushort uVar12;\n  byte bVar13;\n  byte bVar14;\n  char cVar15;\n  undefined4 uVar11;\n  uint uVar16;\n  undefined4 *puVar17;\n  byte *pbVar18;\n  undefined *puVar19;\n  undefined4 uVar20;\n  ushort *puVar21;\n  byte *pbVar22;\n  ushort *puVar23;\n  byte *pbVar24;\n  int iVar25;\n  uint uVar26;\n  byte *pbVar27;\n  undefined4 *unaff_s0;\n  undefined4 *puVar28;\n  undefined4 *puVar29;\n  int iVar30;\n  uint uVar31;\n  int iVar32;\n  int iVar33;\n  int unaff_s2;\n  int iVar34;\n  int *piVar35;\n  uint uVar36;\n  int iVar37;\n  int iVar38;\n  undefined *puVar39;\n  code *pcVar40;\n  code *pcVar41;\n  uint uVar42;\n  int local_164;\n  int local_15c;\n  uint local_154;\n  int local_100;\n  int local_f8;\n  uint local_f4;\n  uint local_ec;\n  uint local_e8;\n  uint local_80;\n  ushort local_7c;\n  ushort local_7a;\n  ushort local_78;\n  int local_74;\n  undefined4 *local_70;\n  undefined *local_6c;\n  int local_68;\n  int local_64;\n  int local_28;\n  uint local_24;\n  byte local_20;\n  char local_1f;\n  undefined2 local_1e;\n  int local_1c;\n  \n  puVar3 = PTR___stack_chk_guard_000534bc;\n  local_1c = *(int *)PTR___stack_chk_guard_000534bc;\n  if (param_1 != (undefined4 *)0x0) {\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }\nLAB_000212f4:\n  iVar4 = *(int *)puVar3;\n  if (local_1c == iVar4) {\n    return iVar4;\n  }\n  (*(code *)PTR___stack_chk_fail_00053484)();\n  param_1 = unaff_s0;\n  param_3 = unaff_s2;\nLAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);\nLAB_000215e0:\n  puVar19 = PTR_s_nt_0005301c + -0x9d4;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19);\nLAB_000215f4:\n  puVar29 = param_1;\n  puVar39 = PTR_png_error_0005340c;\n  (*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8);\n  piVar5 = *(int **)(puVar39 + 0x31eb8);\n  piVar35 = (int *)*puVar29;\n  local_74 = *piVar5;\n  local_6c = puVar3;\n  uVar31 = piVar35[4];\n  uVar16 = uVar31 & 4;\n  puVar28 = *(undefined4 **)*piVar35;\n  iVar4 = ((undefined4 *)*piVar35)[1];\n  local_70 = param_1;\n  local_68 = param_3;\n  local_64 = param_2;\n  (**(code **)(puVar39 + 0x31d60))(puVar28);\n  uVar6 = FUN_0001e440(puVar28);\n  uVar42 = uVar6 & 0xfffffff7 ^ uVar31;\n  if ((uVar42 & 2) == 0) {\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }\n  (*pcVar40)(puVar28,0,0xffffffff);\njoined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }\n  if ((uVar42 & 0x40) != 0) {\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }\n  if (uVar36 != 0) goto LAB_00021afc;\n  do {\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );\n  while( true ) {\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }\nLAB_000219e8:\n  if (local_74 == *piVar5) {\n    return iVar4;\n  }\nLAB_00021ce8:\n  (**(code **)(puVar39 + 0x31e80))();\nLAB_00021cf4:\n  (**(code **)(puVar39 + 0x31e08))();\nLAB_00021d04:\n  pcVar40 = *(code **)(puVar39 + 0x31e08);\n  (*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318);\n  piVar5 = (int *)*puVar28;\n  iVar4 = piVar5[2];\n  puVar29 = *(undefined4 **)*piVar5;\n  iVar34 = ((undefined4 *)*piVar5)[1];\n  uVar42 = piVar5[3];\n  if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }\n  (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0);\nLAB_00022470:\n  pcVar41 = *(code **)(pcVar40 + 0x316f4);\n  (*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8);\n  puVar17 = (undefined4 *)*puVar29;\n  puVar28 = *(undefined4 **)*puVar17;\n  cVar15 = *(char *)(puVar28 + 0x7f);\n  if (cVar15 == '\0') {\n    local_154 = 1;\n  }\n  else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }\n  uVar42 = puVar17[3];\n  iVar34 = puVar17[2];\n  iVar4 = puVar29[7];\n  if ((puVar17[4] & 2) == 0) {\n    iVar9 = 1;\n    local_15c = iVar34;\n  }\n  else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }\n  iVar25 = *(int *)(pcVar41 + 0x30ce4);\n  iVar32 = *(int *)(pcVar41 + 0x30ce8);\n  uVar6 = 0;\n  do {\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  } while( true );\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "ushort uVar2;" (type_identifier "ushort") (identifier "uVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "uint uVar7;" (type_identifier "uint") (identifier "uVar7") (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "ushort uVar12;" (type_identifier "ushort") (identifier "uVar12") (; ";")) (declaration "byte bVar13;" (type_identifier "byte") (identifier "bVar13") (; ";")) (declaration "byte bVar14;" (type_identifier "byte") (identifier "bVar14") (; ";")) (declaration "char cVar15;" (primitive_type "char") (identifier "cVar15") (; ";")) (declaration "undefined4 uVar11;" (type_identifier "undefined4") (identifier "uVar11") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "undefined4 *puVar17;" (type_identifier "undefined4") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "byte *pbVar18;" (type_identifier "byte") (pointer_declarator "*pbVar18" (* "*") (identifier "pbVar18")) (; ";")) (declaration "undefined *puVar19;" (type_identifier "undefined") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "undefined4 uVar20;" (type_identifier "undefined4") (identifier "uVar20") (; ";")) (declaration "ushort *puVar21;" (type_identifier "ushort") (pointer_declarator "*puVar21" (* "*") (identifier "puVar21")) (; ";")) (declaration "byte *pbVar22;" (type_identifier "byte") (pointer_declarator "*pbVar22" (* "*") (identifier "pbVar22")) (; ";")) (declaration "ushort *puVar23;" (type_identifier "ushort") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "byte *pbVar24;" (type_identifier "byte") (pointer_declarator "*pbVar24" (* "*") (identifier "pbVar24")) (; ";")) (declaration "int iVar25;" (primitive_type "int") (identifier "iVar25") (; ";")) (declaration "uint uVar26;" (type_identifier "uint") (identifier "uVar26") (; ";")) (declaration "byte *pbVar27;" (type_identifier "byte") (pointer_declarator "*pbVar27" (* "*") (identifier "pbVar27")) (; ";")) (declaration "undefined4 *unaff_s0;" (type_identifier "undefined4") (pointer_declarator "*unaff_s0" (* "*") (identifier "unaff_s0")) (; ";")) (declaration "undefined4 *puVar28;" (type_identifier "undefined4") (pointer_declarator "*puVar28" (* "*") (identifier "puVar28")) (; ";")) (declaration "undefined4 *puVar29;" (type_identifier "undefined4") (pointer_declarator "*puVar29" (* "*") (identifier "puVar29")) (; ";")) (declaration "int iVar30;" (primitive_type "int") (identifier "iVar30") (; ";")) (declaration "uint uVar31;" (type_identifier "uint") (identifier "uVar31") (; ";")) (declaration "int iVar32;" (primitive_type "int") (identifier "iVar32") (; ";")) (declaration "int iVar33;" (primitive_type "int") (identifier "iVar33") (; ";")) (declaration "int unaff_s2;" (primitive_type "int") (identifier "unaff_s2") (; ";")) (declaration "int iVar34;" (primitive_type "int") (identifier "iVar34") (; ";")) (declaration "int *piVar35;" (primitive_type "int") (pointer_declarator "*piVar35" (* "*") (identifier "piVar35")) (; ";")) (declaration "uint uVar36;" (type_identifier "uint") (identifier "uVar36") (; ";")) (declaration "int iVar37;" (primitive_type "int") (identifier "iVar37") (; ";")) (declaration "int iVar38;" (primitive_type "int") (identifier "iVar38") (; ";")) (declaration "undefined *puVar39;" (type_identifier "undefined") (pointer_declarator "*puVar39" (* "*") (identifier "puVar39")) (; ";")) (declaration "code *pcVar40;" (type_identifier "code") (pointer_declarator "*pcVar40" (* "*") (identifier "pcVar40")) (; ";")) (declaration "code *pcVar41;" (type_identifier "code") (pointer_declarator "*pcVar41" (* "*") (identifier "pcVar41")) (; ";")) (declaration "uint uVar42;" (type_identifier "uint") (identifier "uVar42") (; ";")) (declaration "int local_164;" (primitive_type "int") (identifier "local_164") (; ";")) (declaration "int local_15c;" (primitive_type "int") (identifier "local_15c") (; ";")) (declaration "uint local_154;" (type_identifier "uint") (identifier "local_154") (; ";")) (declaration "int local_100;" (primitive_type "int") (identifier "local_100") (; ";")) (declaration "int local_f8;" (primitive_type "int") (identifier "local_f8") (; ";")) (declaration "uint local_f4;" (type_identifier "uint") (identifier "local_f4") (; ";")) (declaration "uint local_ec;" (type_identifier "uint") (identifier "local_ec") (; ";")) (declaration "uint local_e8;" (type_identifier "uint") (identifier "local_e8") (; ";")) (declaration "uint local_80;" (type_identifier "uint") (identifier "local_80") (; ";")) (declaration "ushort local_7c;" (type_identifier "ushort") (identifier "local_7c") (; ";")) (declaration "ushort local_7a;" (type_identifier "ushort") (identifier "local_7a") (; ";")) (declaration "ushort local_78;" (type_identifier "ushort") (identifier "local_78") (; ";")) (declaration "int local_74;" (primitive_type "int") (identifier "local_74") (; ";")) (declaration "undefined4 *local_70;" (type_identifier "undefined4") (pointer_declarator "*local_70" (* "*") (identifier "local_70")) (; ";")) (declaration "undefined *local_6c;" (type_identifier "undefined") (pointer_declarator "*local_6c" (* "*") (identifier "local_6c")) (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "int local_64;" (primitive_type "int") (identifier "local_64") (; ";")) (declaration "int local_28;" (primitive_type "int") (identifier "local_28") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "byte local_20;" (type_identifier "byte") (identifier "local_20") (; ";")) (declaration "char local_1f;" (primitive_type "char") (identifier "local_1f") (; ";")) (declaration "undefined2 local_1e;" (type_identifier "undefined2") (identifier "local_1e") (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (expression_statement "puVar3 = PTR___stack_chk_guard_000534bc;" (assignment_expression "puVar3 = PTR___stack_chk_guard_000534bc" (identifier "puVar3") (= "=") (identifier "PTR___stack_chk_guard_000534bc")) (; ";")) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_000534bc;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_000534bc" (identifier "local_1c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000534bc" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000534bc" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000534bc")))) (; ";")) (if_statement "if (param_1 != (undefined4 *)0x0) {\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }" (if "if") (parenthesized_expression "(param_1 != (undefined4 *)0x0)" (( "(") (binary_expression "param_1 != (undefined4 *)0x0" (identifier "param_1") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;\nLAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);\n    local_28 = param_1[0x71];\n    local_20 = *(byte *)((int)param_1 + 0x1ff);\n    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;\n    local_1f = *(char *)(param_1 + 0x80);\n    if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }\n    unaff_s0 = param_1;\n    unaff_s2 = param_3;\n    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }\n    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;\n    *(undefined1 *)param_1[0x75] = 0xff;\n    FUN_00030678(param_1,param_1[0x75],local_24 + 1);\n    pbVar8 = (byte *)param_1[0x75];\n    if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }\n    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);\n    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }\nLAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }\n    if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }\n    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;\n    puVar19 = PTR_s_nt_0005301c;\n    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;\nLAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }\n    FUN_00030a70(param_1);\n    if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }\n  }" ({ "{") (if_statement "if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;" (if "if") (parenthesized_expression "((param_1[0x4a] & 0x40) == 0)" (( "(") (binary_expression "(param_1[0x4a] & 0x40) == 0" (parenthesized_expression "(param_1[0x4a] & 0x40)" (( "(") (binary_expression "param_1[0x4a] & 0x40" (subscript_expression "param_1[0x4a]" (identifier "param_1") ([ "[") (number_literal "0x4a") (] "]")) (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021340;" (goto "goto") (statement_identifier "LAB_00021340") (; ";"))) (labeled_statement "LAB_00021100:\n    bVar14 = *(byte *)((int)param_1 + 0x202);" (statement_identifier "LAB_00021100") (: ":") (expression_statement "bVar14 = *(byte *)((int)param_1 + 0x202);" (assignment_expression "bVar14 = *(byte *)((int)param_1 + 0x202)" (identifier "bVar14") (= "=") (pointer_expression "*(byte *)((int)param_1 + 0x202)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x202)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x202)" (( "(") (binary_expression "(int)param_1 + 0x202" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x202")) () ")"))))) (; ";"))) (expression_statement "local_28 = param_1[0x71];" (assignment_expression "local_28 = param_1[0x71]" (identifier "local_28") (= "=") (subscript_expression "param_1[0x71]" (identifier "param_1") ([ "[") (number_literal "0x71") (] "]"))) (; ";")) (expression_statement "local_20 = *(byte *)((int)param_1 + 0x1ff);" (assignment_expression "local_20 = *(byte *)((int)param_1 + 0x1ff)" (identifier "local_20") (= "=") (pointer_expression "*(byte *)((int)param_1 + 0x1ff)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x1ff)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x1ff)" (( "(") (binary_expression "(int)param_1 + 0x1ff" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1ff")) () ")"))))) (; ";")) (expression_statement "local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8;" (assignment_expression "local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8" (identifier "local_1e") (= "=") (binary_expression "(ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |\n               *(ushort *)((int)param_1 + 0x202) >> 8" (call_expression "(ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8)" (( "(") (binary_expression "(*(ushort *)((int)param_1 + 0x202) & 0xff) << 8" (parenthesized_expression "(*(ushort *)((int)param_1 + 0x202) & 0xff)" (( "(") (binary_expression "*(ushort *)((int)param_1 + 0x202) & 0xff" (pointer_expression "*(ushort *)((int)param_1 + 0x202)" (* "*") (cast_expression "(ushort *)((int)param_1 + 0x202)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x202)" (( "(") (binary_expression "(int)param_1 + 0x202" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x202")) () ")")))) (& "&") (number_literal "0xff")) () ")")) (<< "<<") (number_literal "8")) () ")"))) (| "|") (binary_expression "*(ushort *)((int)param_1 + 0x202) >> 8" (pointer_expression "*(ushort *)((int)param_1 + 0x202)" (* "*") (cast_expression "(ushort *)((int)param_1 + 0x202)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x202)" (( "(") (binary_expression "(int)param_1 + 0x202" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x202")) () ")")))) (>> ">>") (number_literal "8")))) (; ";")) (expression_statement "local_1f = *(char *)(param_1 + 0x80);" (assignment_expression "local_1f = *(char *)(param_1 + 0x80)" (identifier "local_1f") (= "=") (pointer_expression "*(char *)(param_1 + 0x80)" (* "*") (cast_expression "(char *)(param_1 + 0x80)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (if_statement "if (bVar14 < 8) {\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }\n    else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }" (if "if") (parenthesized_expression "(bVar14 < 8)" (( "(") (binary_expression "bVar14 < 8" (identifier "bVar14") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n      local_24 = (uint)bVar14 * local_28 + 7 >> 3;\n    }" ({ "{") (expression_statement "local_24 = (uint)bVar14 * local_28 + 7 >> 3;" (assignment_expression "local_24 = (uint)bVar14 * local_28 + 7 >> 3" (identifier "local_24") (= "=") (binary_expression "(uint)bVar14 * local_28 + 7 >> 3" (binary_expression "(uint)bVar14 * local_28 + 7" (binary_expression "(uint)bVar14 * local_28" (cast_expression "(uint)bVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar14")) (* "*") (identifier "local_28")) (+ "+") (number_literal "7")) (>> ">>") (number_literal "3"))) (; ";")) (} "}")) (else_clause "else {\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }" (else "else") (compound_statement "{\n      local_24 = (uint)(bVar14 >> 3) * local_28;\n    }" ({ "{") (expression_statement "local_24 = (uint)(bVar14 >> 3) * local_28;" (assignment_expression "local_24 = (uint)(bVar14 >> 3) * local_28" (identifier "local_24") (= "=") (binary_expression "(uint)(bVar14 >> 3) * local_28" (call_expression "(uint)(bVar14 >> 3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar14 >> 3)" (( "(") (binary_expression "bVar14 >> 3" (identifier "bVar14") (>> ">>") (number_literal "3")) () ")"))) (* "*") (identifier "local_28"))) (; ";")) (} "}")))) (expression_statement "unaff_s0 = param_1;" (assignment_expression "unaff_s0 = param_1" (identifier "unaff_s0") (= "=") (identifier "param_1")) (; ";")) (expression_statement "unaff_s2 = param_3;" (assignment_expression "unaff_s2 = param_3" (identifier "unaff_s2") (= "=") (identifier "param_3")) (; ";")) (if_statement "if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }" (if "if") (parenthesized_expression "((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0))" (( "(") (binary_expression "(*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)" (parenthesized_expression "(*(char *)(param_1 + 0x7f) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x7f) != '\0'" (pointer_expression "*(char *)(param_1 + 0x7f)" (* "*") (cast_expression "(char *)(param_1 + 0x7f)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x7f)" (( "(") (binary_expression "param_1 + 0x7f" (identifier "param_1") (+ "+") (number_literal "0x7f")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "((param_1[0x4b] & 2) != 0)" (( "(") (binary_expression "(param_1[0x4b] & 2) != 0" (parenthesized_expression "(param_1[0x4b] & 2)" (( "(") (binary_expression "param_1[0x4b] & 2" (subscript_expression "param_1[0x4b]" (identifier "param_1") ([ "[") (number_literal "0x4b") (] "]")) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }\n      if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }\n    }" ({ "{") (if_statement "if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }" (if "if") (parenthesized_expression "(*(byte *)((int)param_1 + 0x1fd) < 6)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x1fd) < 6" (pointer_expression "*(byte *)((int)param_1 + 0x1fd)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x1fd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x1fd)" (( "(") (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1fd")) () ")")))) (< "<") (number_literal "6")) () ")")) (compound_statement "{\n                    \n                    \n        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();\n        return iVar4;\n      }" ({ "{") (expression_statement "iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();" (assignment_expression "iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))()" (identifier "iVar4") (= "=") (call_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c))" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c))" (( "(") (binary_expression "&_gp_1 + *(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)" (* "*") (cast_expression "(int *)(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)" (( "(") (binary_expression "PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c" (binary_expression "PTR_s_nt_0005301c +\n                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4" (identifier "PTR_s_nt_0005301c") (+ "+") (binary_expression "(uint)*(byte *)((int)param_1 + 0x1fd) * 4" (binary_expression "(uint)*(byte *)((int)param_1 + 0x1fd)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)((int)param_1 + 0x1fd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x1fd)" (( "(") (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1fd")) () ")")))) (* "*") (number_literal "4"))) (+ "+") (number_literal "0x14c")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}"))) (if_statement "if ((param_1[0x72] & 1) == 0) {\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }" (if "if") (parenthesized_expression "((param_1[0x72] & 1) == 0)" (( "(") (binary_expression "(param_1[0x72] & 1) == 0" (parenthesized_expression "(param_1[0x72] & 1)" (( "(") (binary_expression "param_1[0x72] & 1" (subscript_expression "param_1[0x72]" (identifier "param_1") ([ "[") (number_literal "0x72") (] "]")) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_00030a70(param_1);\n        goto LAB_000212f4;\n      }" ({ "{") (expression_statement "FUN_00030a70(param_1);" (call_expression "FUN_00030a70(param_1)" (identifier "FUN_00030a70") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (goto_statement "goto LAB_000212f4;" (goto "goto") (statement_identifier "LAB_000212f4") (; ";")) (} "}"))) (} "}"))) (if_statement "if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;" (if "if") (parenthesized_expression "((param_1[0x49] & 4) == 0)" (( "(") (binary_expression "(param_1[0x49] & 4) == 0" (parenthesized_expression "(param_1[0x49] & 4)" (( "(") (binary_expression "param_1[0x49] & 4" (subscript_expression "param_1[0x49]" (identifier "param_1") ([ "[") (number_literal "0x49") (] "]")) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000215cc;" (goto "goto") (statement_identifier "LAB_000215cc") (; ";"))) (expression_statement "*(undefined1 *)param_1[0x75] = 0xff;" (assignment_expression "*(undefined1 *)param_1[0x75] = 0xff" (pointer_expression "*(undefined1 *)param_1[0x75]" (* "*") (cast_expression "(undefined1 *)param_1[0x75]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x75]" (identifier "param_1") ([ "[") (number_literal "0x75") (] "]")))) (= "=") (number_literal "0xff")) (; ";")) (expression_statement "FUN_00030678(param_1,param_1[0x75],local_24 + 1);" (call_expression "FUN_00030678(param_1,param_1[0x75],local_24 + 1)" (identifier "FUN_00030678") (argument_list "(param_1,param_1[0x75],local_24 + 1)" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_1[0x75]" (identifier "param_1") ([ "[") (number_literal "0x75") (] "]")) (, ",") (binary_expression "local_24 + 1" (identifier "local_24") (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "pbVar8 = (byte *)param_1[0x75];" (assignment_expression "pbVar8 = (byte *)param_1[0x75]" (identifier "pbVar8") (= "=") (cast_expression "(byte *)param_1[0x75]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x75]" (identifier "param_1") ([ "[") (number_literal "0x75") (] "]")))) (; ";")) (if_statement "if (*pbVar8 != 0) {\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }" (if "if") (parenthesized_expression "(*pbVar8 != 0)" (( "(") (binary_expression "*pbVar8 != 0" (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (4 < *pbVar8) goto LAB_000215e0;\n      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);\n      pbVar8 = (byte *)param_1[0x75];\n    }" ({ "{") (if_statement "if (4 < *pbVar8) goto LAB_000215e0;" (if "if") (parenthesized_expression "(4 < *pbVar8)" (( "(") (binary_expression "4 < *pbVar8" (number_literal "4") (< "<") (pointer_expression "*pbVar8" (* "*") (identifier "pbVar8"))) () ")")) (goto_statement "goto LAB_000215e0;" (goto "goto") (statement_identifier "LAB_000215e0") (; ";"))) (expression_statement "FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);" (call_expression "FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1)" (identifier "FUN_000305d0") (argument_list "(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (binary_expression "pbVar8 + 1" (identifier "pbVar8") (+ "+") (number_literal "1")) (, ",") (binary_expression "param_1[0x74] + 1" (subscript_expression "param_1[0x74]" (identifier "param_1") ([ "[") (number_literal "0x74") (] "]")) (+ "+") (number_literal "1")) () ")"))) (; ";")) (expression_statement "pbVar8 = (byte *)param_1[0x75];" (assignment_expression "pbVar8 = (byte *)param_1[0x75]" (identifier "pbVar8") (= "=") (cast_expression "(byte *)param_1[0x75]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x75]" (identifier "param_1") ([ "[") (number_literal "0x75") (] "]")))) (; ";")) (} "}"))) (expression_statement "(*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);" (call_expression "(*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1)" (parenthesized_expression "(*(code *)PTR_memcpy_000534c4)" (( "(") (pointer_expression "*(code *)PTR_memcpy_000534c4" (* "*") (cast_expression "(code *)PTR_memcpy_000534c4" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_000534c4"))) () ")")) (argument_list "(param_1[0x74],pbVar8,local_24 + 1)" (( "(") (subscript_expression "param_1[0x74]" (identifier "param_1") ([ "[") (number_literal "0x74") (] "]")) (, ",") (identifier "pbVar8") (, ",") (binary_expression "local_24 + 1" (identifier "local_24") (+ "+") (number_literal "1")) () ")"))) (; ";")) (if_statement "if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))\n    {\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }\n    else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }" (if "if") (parenthesized_expression "((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))" (( "(") (binary_expression "(((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0)" (parenthesized_expression "(((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@'))" (( "(") (binary_expression "((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')" (parenthesized_expression "((param_1[0xc0] & 4) == 0)" (( "(") (binary_expression "(param_1[0xc0] & 4) == 0" (parenthesized_expression "(param_1[0xc0] & 4)" (( "(") (binary_expression "param_1[0xc0] & 4" (subscript_expression "param_1[0xc0]" (identifier "param_1") ([ "[") (number_literal "0xc0") (] "]")) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(param_1 + 0xc1) != '@')" (( "(") (binary_expression "*(char *)(param_1 + 0xc1) != '@'" (pointer_expression "*(char *)(param_1 + 0xc1)" (* "*") (cast_expression "(char *)(param_1 + 0xc1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc1)" (( "(") (binary_expression "param_1 + 0xc1" (identifier "param_1") (+ "+") (number_literal "0xc1")) () ")")))) (!= "!=") (char_literal "'@'" (' "'") (character "@") (' "'"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((local_20 & 2) == 0)" (( "(") (binary_expression "(local_20 & 2) == 0" (parenthesized_expression "(local_20 & 2)" (( "(") (binary_expression "local_20 & 2" (identifier "local_20") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\nLAB_00021248:\n      iVar4 = param_1[0x4b];\n    }" ({ "{") (labeled_statement "LAB_00021248:\n      iVar4 = param_1[0x4b];" (statement_identifier "LAB_00021248") (: ":") (expression_statement "iVar4 = param_1[0x4b];" (assignment_expression "iVar4 = param_1[0x4b]" (identifier "iVar4") (= "=") (subscript_expression "param_1[0x4b]" (identifier "param_1") ([ "[") (number_literal "0x4b") (] "]"))) (; ";"))) (} "}")) (else_clause "else {\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }" (else "else") (compound_statement "{\n      puVar21 = (ushort *)(param_1[0x75] + 1);\n      if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }\n      if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }\n      iVar34 = 0;\n      if (local_28 == 0) goto LAB_00021248;\n      do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);\n      iVar4 = param_1[0x4b];\n    }" ({ "{") (expression_statement "puVar21 = (ushort *)(param_1[0x75] + 1);" (assignment_expression "puVar21 = (ushort *)(param_1[0x75] + 1)" (identifier "puVar21") (= "=") (cast_expression "(ushort *)(param_1[0x75] + 1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[0x75] + 1)" (( "(") (binary_expression "param_1[0x75] + 1" (subscript_expression "param_1[0x75]" (identifier "param_1") ([ "[") (number_literal "0x75") (] "]")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (local_1f != '\b') {\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }" (if "if") (parenthesized_expression "(local_1f != '\b')" (( "(") (binary_expression "local_1f != '\b'" (identifier "local_1f") (!= "!=") (char_literal "'\b'" (' "'") (escape_sequence "\b") (' "'"))) () ")")) (compound_statement "{\n        if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }\n        goto LAB_00021248;\n      }" ({ "{") (if_statement "if (local_1f == '\x10') {\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }" (if "if") (parenthesized_expression "(local_1f == '\x10')" (( "(") (binary_expression "local_1f == '\x10'" (identifier "local_1f") (== "==") (char_literal "'\x10'" (' "'") (escape_sequence "\x10") (' "'"))) () ")")) (compound_statement "{\n          if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }\n          iVar34 = 0;\n          if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }\n        }" ({ "{") (if_statement "if (local_20 == 2) {\n            iVar4 = 6;\n          }\n          else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }" (if "if") (parenthesized_expression "(local_20 == 2)" (( "(") (binary_expression "local_20 == 2" (identifier "local_20") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n            iVar4 = 6;\n          }" ({ "{") (expression_statement "iVar4 = 6;" (assignment_expression "iVar4 = 6" (identifier "iVar4") (= "=") (number_literal "6")) (; ";")) (} "}")) (else_clause "else {\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }" (else "else") (compound_statement "{\n            iVar4 = 8;\n            if (local_20 != 6) goto LAB_00021248;\n          }" ({ "{") (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" (identifier "iVar4") (= "=") (number_literal "8")) (; ";")) (if_statement "if (local_20 != 6) goto LAB_00021248;" (if "if") (parenthesized_expression "(local_20 != 6)" (( "(") (binary_expression "local_20 != 6" (identifier "local_20") (!= "!=") (number_literal "6")) () ")")) (goto_statement "goto LAB_00021248;" (goto "goto") (statement_identifier "LAB_00021248") (; ";"))) (} "}")))) (expression_statement "iVar34 = 0;" (assignment_expression "iVar34 = 0" (identifier "iVar34") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_28 != 0) {\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }" (if "if") (parenthesized_expression "(local_28 != 0)" (( "(") (binary_expression "local_28 != 0" (identifier "local_28") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);\n            iVar4 = param_1[0x4b];\n            goto LAB_0002124c;\n          }" ({ "{") (do_statement "do {\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            } while (local_28 != iVar34);" (do "do") (compound_statement "{\n              iVar34 = iVar34 + 1;\n              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;\n              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;\n              *(char *)((int)puVar21 + 1) = (char)uVar6;\n              *(char *)((int)puVar21 + 5) = (char)uVar42;\n              *(char *)puVar21 = (char)(uVar6 >> 8);\n              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);\n              puVar21 = (ushort *)((int)puVar21 + iVar4);\n            }" ({ "{") (expression_statement "iVar34 = iVar34 + 1;" (assignment_expression "iVar34 = iVar34 + 1" (identifier "iVar34") (= "=") (binary_expression "iVar34 + 1" (identifier "iVar34") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;" (assignment_expression "uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff" (identifier "uVar6") (= "=") (binary_expression "(uint)puVar21[1] + (uint)*puVar21 & 0xffff" (binary_expression "(uint)puVar21[1] + (uint)*puVar21" (cast_expression "(uint)puVar21[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar21[1]" (identifier "puVar21") ([ "[") (number_literal "1") (] "]"))) (+ "+") (binary_expression "(uint)*puVar21" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "puVar21"))) (& "&") (number_literal "0xffff"))) (; ";")) (expression_statement "uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;" (assignment_expression "uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff" (identifier "uVar42") (= "=") (binary_expression "(uint)puVar21[1] + (uint)puVar21[2] & 0xffff" (binary_expression "(uint)puVar21[1] + (uint)puVar21[2]" (cast_expression "(uint)puVar21[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar21[1]" (identifier "puVar21") ([ "[") (number_literal "1") (] "]"))) (+ "+") (cast_expression "(uint)puVar21[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar21[2]" (identifier "puVar21") ([ "[") (number_literal "2") (] "]")))) (& "&") (number_literal "0xffff"))) (; ";")) (expression_statement "*(char *)((int)puVar21 + 1) = (char)uVar6;" (assignment_expression "*(char *)((int)puVar21 + 1) = (char)uVar6" (pointer_expression "*(char *)((int)puVar21 + 1)" (* "*") (cast_expression "(char *)((int)puVar21 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar21 + 1)" (( "(") (binary_expression "(int)puVar21 + 1" (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21")) (+ "+") (number_literal "1")) () ")")))) (= "=") (cast_expression "(char)uVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar6"))) (; ";")) (expression_statement "*(char *)((int)puVar21 + 5) = (char)uVar42;" (assignment_expression "*(char *)((int)puVar21 + 5) = (char)uVar42" (pointer_expression "*(char *)((int)puVar21 + 5)" (* "*") (cast_expression "(char *)((int)puVar21 + 5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar21 + 5)" (( "(") (binary_expression "(int)puVar21 + 5" (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21")) (+ "+") (number_literal "5")) () ")")))) (= "=") (cast_expression "(char)uVar42" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar42"))) (; ";")) (expression_statement "*(char *)puVar21 = (char)(uVar6 >> 8);" (assignment_expression "*(char *)puVar21 = (char)(uVar6 >> 8)" (pointer_expression "*(char *)puVar21" (* "*") (cast_expression "(char *)puVar21" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar21"))) (= "=") (cast_expression "(char)(uVar6 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar6 >> 8)" (( "(") (binary_expression "uVar6 >> 8" (identifier "uVar6") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "*(char *)(puVar21 + 2) = (char)(uVar42 >> 8);" (assignment_expression "*(char *)(puVar21 + 2) = (char)(uVar42 >> 8)" (pointer_expression "*(char *)(puVar21 + 2)" (* "*") (cast_expression "(char *)(puVar21 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar21 + 2)" (( "(") (binary_expression "puVar21 + 2" (identifier "puVar21") (+ "+") (number_literal "2")) () ")")))) (= "=") (cast_expression "(char)(uVar42 >> 8)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(uVar42 >> 8)" (( "(") (binary_expression "uVar42 >> 8" (identifier "uVar42") (>> ">>") (number_literal "8")) () ")")))) (; ";")) (expression_statement "puVar21 = (ushort *)((int)puVar21 + iVar4);" (assignment_expression "puVar21 = (ushort *)((int)puVar21 + iVar4)" (identifier "puVar21") (= "=") (cast_expression "(ushort *)((int)puVar21 + iVar4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar21 + iVar4)" (( "(") (binary_expression "(int)puVar21 + iVar4" (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21")) (+ "+") (identifier "iVar4")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_28 != iVar34)" (( "(") (binary_expression "local_28 != iVar34" (identifier "local_28") (!= "!=") (identifier "iVar34")) () ")")) (; ";")) (expression_statement "iVar4 = param_1[0x4b];" (assignment_expression "iVar4 = param_1[0x4b]" (identifier "iVar4") (= "=") (subscript_expression "param_1[0x4b]" (identifier "param_1") ([ "[") (number_literal "0x4b") (] "]"))) (; ";")) (goto_statement "goto LAB_0002124c;" (goto "goto") (statement_identifier "LAB_0002124c") (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_00021248;" (goto "goto") (statement_identifier "LAB_00021248") (; ";")) (} "}"))) (if_statement "if (local_20 == 2) {\n        iVar4 = 3;\n      }\n      else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }" (if "if") (parenthesized_expression "(local_20 == 2)" (( "(") (binary_expression "local_20 == 2" (identifier "local_20") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        iVar4 = 3;\n      }" ({ "{") (expression_statement "iVar4 = 3;" (assignment_expression "iVar4 = 3" (identifier "iVar4") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else {\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }" (else "else") (compound_statement "{\n        iVar4 = 4;\n        if (local_20 != 6) goto LAB_00021248;\n      }" ({ "{") (expression_statement "iVar4 = 4;" (assignment_expression "iVar4 = 4" (identifier "iVar4") (= "=") (number_literal "4")) (; ";")) (if_statement "if (local_20 != 6) goto LAB_00021248;" (if "if") (parenthesized_expression "(local_20 != 6)" (( "(") (binary_expression "local_20 != 6" (identifier "local_20") (!= "!=") (number_literal "6")) () ")")) (goto_statement "goto LAB_00021248;" (goto "goto") (statement_identifier "LAB_00021248") (; ";"))) (} "}")))) (expression_statement "iVar34 = 0;" (assignment_expression "iVar34 = 0" (identifier "iVar34") (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_28 == 0) goto LAB_00021248;" (if "if") (parenthesized_expression "(local_28 == 0)" (( "(") (binary_expression "local_28 == 0" (identifier "local_28") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021248;" (goto "goto") (statement_identifier "LAB_00021248") (; ";"))) (do_statement "do {\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      } while (local_28 != iVar34);" (do "do") (compound_statement "{\n        uVar12 = *puVar21;\n        iVar34 = iVar34 + 1;\n        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;\n        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);\n        puVar21 = (ushort *)((int)puVar21 + iVar4);\n      }" ({ "{") (expression_statement "uVar12 = *puVar21;" (assignment_expression "uVar12 = *puVar21" (identifier "uVar12") (= "=") (pointer_expression "*puVar21" (* "*") (identifier "puVar21"))) (; ";")) (expression_statement "iVar34 = iVar34 + 1;" (assignment_expression "iVar34 = iVar34 + 1" (identifier "iVar34") (= "=") (binary_expression "iVar34 + 1" (identifier "iVar34") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(char *)puVar21 = (char)uVar12 + *(char *)puVar21;" (assignment_expression "*(char *)puVar21 = (char)uVar12 + *(char *)puVar21" (pointer_expression "*(char *)puVar21" (* "*") (cast_expression "(char *)puVar21" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar21"))) (= "=") (binary_expression "(char)uVar12 + *(char *)puVar21" (cast_expression "(char)uVar12" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar12")) (+ "+") (pointer_expression "*(char *)puVar21" (* "*") (cast_expression "(char *)puVar21" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar21"))))) (; ";")) (expression_statement "*(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);" (assignment_expression "*(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1)" (pointer_expression "*(char *)(puVar21 + 1)" (* "*") (cast_expression "(char *)(puVar21 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar21 + 1)" (( "(") (binary_expression "puVar21 + 1" (identifier "puVar21") (+ "+") (number_literal "1")) () ")")))) (= "=") (binary_expression "(char)uVar12 + *(char *)(puVar21 + 1)" (cast_expression "(char)uVar12" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar12")) (+ "+") (pointer_expression "*(char *)(puVar21 + 1)" (* "*") (cast_expression "(char *)(puVar21 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar21 + 1)" (( "(") (binary_expression "puVar21 + 1" (identifier "puVar21") (+ "+") (number_literal "1")) () ")")))))) (; ";")) (expression_statement "puVar21 = (ushort *)((int)puVar21 + iVar4);" (assignment_expression "puVar21 = (ushort *)((int)puVar21 + iVar4)" (identifier "puVar21") (= "=") (cast_expression "(ushort *)((int)puVar21 + iVar4)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar21 + iVar4)" (( "(") (binary_expression "(int)puVar21 + iVar4" (cast_expression "(int)puVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar21")) (+ "+") (identifier "iVar4")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_28 != iVar34)" (( "(") (binary_expression "local_28 != iVar34" (identifier "local_28") (!= "!=") (identifier "iVar34")) () ")")) (; ";")) (expression_statement "iVar4 = param_1[0x4b];" (assignment_expression "iVar4 = param_1[0x4b]" (identifier "iVar4") (= "=") (subscript_expression "param_1[0x4b]" (identifier "param_1") ([ "[") (number_literal "0x4b") (] "]"))) (; ";")) (} "}")))) (labeled_statement "LAB_0002124c:\n    if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }" (statement_identifier "LAB_0002124c") (: ":") (if_statement "if (iVar4 != 0) {\n      FUN_000277a0(param_1,&local_28);\n    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_000277a0(param_1,&local_28);\n    }" ({ "{") (expression_statement "FUN_000277a0(param_1,&local_28);" (call_expression "FUN_000277a0(param_1,&local_28)" (identifier "FUN_000277a0") (argument_list "(param_1,&local_28)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")"))) (; ";")) (} "}")))) (if_statement "if (*(byte *)((int)param_1 + 0x207) != 0) {\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }" (if "if") (parenthesized_expression "(*(byte *)((int)param_1 + 0x207) != 0)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x207) != 0" (pointer_expression "*(byte *)((int)param_1 + 0x207)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x207)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x207)" (( "(") (binary_expression "(int)param_1 + 0x207" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x207")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;\n      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);\nLAB_00021340:\n      FUN_00030bc4();\n      goto LAB_00021100;\n    }" ({ "{") (if_statement "if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;" (if "if") (parenthesized_expression "(*(byte *)((int)param_1 + 0x207) == (byte)local_1e)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x207) == (byte)local_1e" (pointer_expression "*(byte *)((int)param_1 + 0x207)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x207)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x207)" (( "(") (binary_expression "(int)param_1 + 0x207" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x207")) () ")")))) (== "==") (cast_expression "(byte)local_1e" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_1e"))) () ")")) (goto_statement "goto LAB_00021274;" (goto "goto") (statement_identifier "LAB_00021274") (; ";"))) (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" (( "(") (pointer_expression "*(code *)PTR_png_error_0005340c" (* "*") (cast_expression "(code *)PTR_png_error_0005340c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_error_0005340c"))) () ")")) (argument_list "(param_1,PTR_s_nt_0005301c + -0x3c0)" (( "(") (identifier "param_1") (, ",") (binary_expression "PTR_s_nt_0005301c + -0x3c0" (identifier "PTR_s_nt_0005301c") (+ "+") (number_literal "-0x3c0")) () ")"))) (; ";")) (labeled_statement "LAB_00021340:\n      FUN_00030bc4();" (statement_identifier "LAB_00021340") (: ":") (expression_statement "FUN_00030bc4();" (call_expression "FUN_00030bc4()" (identifier "FUN_00030bc4") (argument_list "()" (( "(") () ")"))) (; ";"))) (goto_statement "goto LAB_00021100;" (goto "goto") (statement_identifier "LAB_00021100") (; ";")) (} "}"))) (expression_statement "*(byte *)((int)param_1 + 0x207) = (byte)local_1e;" (assignment_expression "*(byte *)((int)param_1 + 0x207) = (byte)local_1e" (pointer_expression "*(byte *)((int)param_1 + 0x207)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x207)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x207)" (( "(") (binary_expression "(int)param_1 + 0x207" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x207")) () ")")))) (= "=") (cast_expression "(byte)local_1e" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_1e"))) (; ";")) (expression_statement "puVar19 = PTR_s_nt_0005301c;" (assignment_expression "puVar19 = PTR_s_nt_0005301c" (identifier "puVar19") (= "=") (identifier "PTR_s_nt_0005301c")) (; ";")) (if_statement "if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;" (if "if") (parenthesized_expression "(*(byte *)((int)param_1 + 0x206) < (byte)local_1e)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x206) < (byte)local_1e" (pointer_expression "*(byte *)((int)param_1 + 0x206)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x206)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x206)" (( "(") (binary_expression "(int)param_1 + 0x206" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x206")) () ")")))) (< "<") (cast_expression "(byte)local_1e" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_1e"))) () ")")) (goto_statement "goto LAB_000215f4;" (goto "goto") (statement_identifier "LAB_000215f4") (; ";"))) (labeled_statement "LAB_00021274:\n    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }" (statement_identifier "LAB_00021274") (: ":") (if_statement "if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }\n    else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }" (if "if") (parenthesized_expression "((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0))" (( "(") (binary_expression "(*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)" (parenthesized_expression "(*(char *)(param_1 + 0x7f) == '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x7f) == '\0'" (pointer_expression "*(char *)(param_1 + 0x7f)" (* "*") (cast_expression "(char *)(param_1 + 0x7f)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x7f)" (( "(") (binary_expression "param_1 + 0x7f" (identifier "param_1") (+ "+") (number_literal "0x7f")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "((param_1[0x4b] & 2) == 0)" (( "(") (binary_expression "(param_1[0x4b] & 2) == 0" (parenthesized_expression "(param_1[0x4b] & 2)" (( "(") (binary_expression "param_1[0x4b] & 2" (subscript_expression "param_1[0x4b]" (identifier "param_1") ([ "[") (number_literal "0x4b") (] "]")) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }\n    }" ({ "{") (if_statement "if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0002fb24(param_1,param_2,0xffffffff);\n      }" ({ "{") (expression_statement "FUN_0002fb24(param_1,param_2,0xffffffff);" (call_expression "FUN_0002fb24(param_1,param_2,0xffffffff)" (identifier "FUN_0002fb24") (argument_list "(param_1,param_2,0xffffffff)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (number_literal "0xffffffff") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0002fb24(param_1,param_3,0xffffffff);\n      }" ({ "{") (expression_statement "FUN_0002fb24(param_1,param_3,0xffffffff);" (call_expression "FUN_0002fb24(param_1,param_3,0xffffffff)" (identifier "FUN_0002fb24") (argument_list "(param_1,param_3,0xffffffff)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (number_literal "0xffffffff") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }" (else "else") (compound_statement "{\n      if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }\n      if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }\n      if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }\n    }" ({ "{") (if_statement "if (*(byte *)((int)param_1 + 0x1fd) < 6) {\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }" (if "if") (parenthesized_expression "(*(byte *)((int)param_1 + 0x1fd) < 6)" (( "(") (binary_expression "*(byte *)((int)param_1 + 0x1fd) < 6" (pointer_expression "*(byte *)((int)param_1 + 0x1fd)" (* "*") (cast_expression "(byte *)((int)param_1 + 0x1fd)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x1fd)" (( "(") (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1fd")) () ")")))) (< "<") (number_literal "6")) () ")")) (compound_statement "{\n        FUN_0003010c(&local_28,param_1[0x75] + 1);\n      }" ({ "{") (expression_statement "FUN_0003010c(&local_28,param_1[0x75] + 1);" (call_expression "FUN_0003010c(&local_28,param_1[0x75] + 1)" (identifier "FUN_0003010c") (argument_list "(&local_28,param_1[0x75] + 1)" (( "(") (pointer_expression "&local_28" (& "&") (identifier "local_28")) (, ",") (binary_expression "param_1[0x75] + 1" (subscript_expression "param_1[0x75]" (identifier "param_1") ([ "[") (number_literal "0x75") (] "]")) (+ "+") (number_literal "1")) () ")"))) (; ";")) (} "}"))) (if_statement "if (param_3 != 0) {\n        FUN_0002fb24(param_1,param_3,1);\n      }" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0002fb24(param_1,param_3,1);\n      }" ({ "{") (expression_statement "FUN_0002fb24(param_1,param_3,1);" (call_expression "FUN_0002fb24(param_1,param_3,1)" (identifier "FUN_0002fb24") (argument_list "(param_1,param_3,1)" (( "(") (identifier "param_1") (, ",") (identifier "param_3") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_2 != 0) {\n        FUN_0002fb24(param_1,param_2,0);\n      }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_0002fb24(param_1,param_2,0);\n      }" ({ "{") (expression_statement "FUN_0002fb24(param_1,param_2,0);" (call_expression "FUN_0002fb24(param_1,param_2,0)" (identifier "FUN_0002fb24") (argument_list "(param_1,param_2,0)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}"))) (} "}"))))) (expression_statement "FUN_00030a70(param_1);" (call_expression "FUN_00030a70(param_1)" (identifier "FUN_00030a70") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (if_statement "if ((code *)param_1[0x9c] != (code *)0x0) {\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }" (if "if") (parenthesized_expression "((code *)param_1[0x9c] != (code *)0x0)" (( "(") (binary_expression "(code *)param_1[0x9c] != (code *)0x0" (cast_expression "(code *)param_1[0x9c]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x9c]" (identifier "param_1") ([ "[") (number_literal "0x9c") (] "]"))) (!= "!=") (cast_expression "(code *)0x0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));\n    }" ({ "{") (expression_statement "(*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));" (call_expression "(*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd))" (parenthesized_expression "(*(code *)param_1[0x9c])" (( "(") (pointer_expression "*(code *)param_1[0x9c]" (* "*") (cast_expression "(code *)param_1[0x9c]" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[0x9c]" (identifier "param_1") ([ "[") (number_literal "0x9c") (] "]")))) () ")")) (argument_list "(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd))" (( "(") (identifier "param_1") (, ",") (subscript_expression "param_1[0x72]" (identifier "param_1") ([ "[") (number_literal "0x72") (] "]")) (, ",") (pointer_expression "*(undefined1 *)((int)param_1 + 0x1fd)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 0x1fd)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x1fd)" (( "(") (binary_expression "(int)param_1 + 0x1fd" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x1fd")) () ")")))) () ")"))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000212f4:\n  iVar4 = *(int *)puVar3;" (statement_identifier "LAB_000212f4") (: ":") (expression_statement "iVar4 = *(int *)puVar3;" (assignment_expression "iVar4 = *(int *)puVar3" (identifier "iVar4") (= "=") (pointer_expression "*(int *)puVar3" (* "*") (cast_expression "(int *)puVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3")))) (; ";"))) (if_statement "if (local_1c == iVar4) {\n    return iVar4;\n  }" (if "if") (parenthesized_expression "(local_1c == iVar4)" (( "(") (binary_expression "local_1c == iVar4" (identifier "local_1c") (== "==") (identifier "iVar4")) () ")")) (compound_statement "{\n    return iVar4;\n  }" ({ "{") (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___stack_chk_fail_00053484)();" (call_expression "(*(code *)PTR___stack_chk_fail_00053484)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_00053484)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_00053484" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_00053484" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_00053484"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_1 = unaff_s0;" (assignment_expression "param_1 = unaff_s0" (identifier "param_1") (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "param_3 = unaff_s2;" (assignment_expression "param_3 = unaff_s2" (identifier "param_3") (= "=") (identifier "unaff_s2")) (; ";")) (labeled_statement "LAB_000215cc:\n  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);" (statement_identifier "LAB_000215cc") (: ":") (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" (( "(") (pointer_expression "*(code *)PTR_png_error_0005340c" (* "*") (cast_expression "(code *)PTR_png_error_0005340c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_error_0005340c"))) () ")")) (argument_list "(param_1,PTR_s_nt_0005301c + -0x3fc)" (( "(") (identifier "param_1") (, ",") (binary_expression "PTR_s_nt_0005301c + -0x3fc" (identifier "PTR_s_nt_0005301c") (+ "+") (number_literal "-0x3fc")) () ")"))) (; ";"))) (labeled_statement "LAB_000215e0:\n  puVar19 = PTR_s_nt_0005301c + -0x9d4;" (statement_identifier "LAB_000215e0") (: ":") (expression_statement "puVar19 = PTR_s_nt_0005301c + -0x9d4;" (assignment_expression "puVar19 = PTR_s_nt_0005301c + -0x9d4" (identifier "puVar19") (= "=") (binary_expression "PTR_s_nt_0005301c + -0x9d4" (identifier "PTR_s_nt_0005301c") (+ "+") (number_literal "-0x9d4"))) (; ";"))) (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,puVar19);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,puVar19)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" (( "(") (pointer_expression "*(code *)PTR_png_error_0005340c" (* "*") (cast_expression "(code *)PTR_png_error_0005340c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_error_0005340c"))) () ")")) (argument_list "(param_1,puVar19)" (( "(") (identifier "param_1") (, ",") (identifier "puVar19") () ")"))) (; ";")) (labeled_statement "LAB_000215f4:\n  puVar29 = param_1;" (statement_identifier "LAB_000215f4") (: ":") (expression_statement "puVar29 = param_1;" (assignment_expression "puVar29 = param_1" (identifier "puVar29") (= "=") (identifier "param_1")) (; ";"))) (expression_statement "puVar39 = PTR_png_error_0005340c;" (assignment_expression "puVar39 = PTR_png_error_0005340c" (identifier "puVar39") (= "=") (identifier "PTR_png_error_0005340c")) (; ";")) (expression_statement "(*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8);" (call_expression "(*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8)" (parenthesized_expression "(*(code *)PTR_png_error_0005340c)" (( "(") (pointer_expression "*(code *)PTR_png_error_0005340c" (* "*") (cast_expression "(code *)PTR_png_error_0005340c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_png_error_0005340c"))) () ")")) (argument_list "(param_1,puVar19 + -0x3d8)" (( "(") (identifier "param_1") (, ",") (binary_expression "puVar19 + -0x3d8" (identifier "puVar19") (+ "+") (number_literal "-0x3d8")) () ")"))) (; ";")) (expression_statement "piVar5 = *(int **)(puVar39 + 0x31eb8);" (assignment_expression "piVar5 = *(int **)(puVar39 + 0x31eb8)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(puVar39 + 0x31eb8)" (* "*") (cast_expression "(int **)(puVar39 + 0x31eb8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31eb8)" (( "(") (binary_expression "puVar39 + 0x31eb8" (identifier "puVar39") (+ "+") (number_literal "0x31eb8")) () ")"))))) (; ";")) (expression_statement "piVar35 = (int *)*puVar29;" (assignment_expression "piVar35 = (int *)*puVar29" (identifier "piVar35") (= "=") (cast_expression "(int *)*puVar29" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar29" (* "*") (identifier "puVar29")))) (; ";")) (expression_statement "local_74 = *piVar5;" (assignment_expression "local_74 = *piVar5" (identifier "local_74") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (expression_statement "local_6c = puVar3;" (assignment_expression "local_6c = puVar3" (identifier "local_6c") (= "=") (identifier "puVar3")) (; ";")) (expression_statement "uVar31 = piVar35[4];" (assignment_expression "uVar31 = piVar35[4]" (identifier "uVar31") (= "=") (subscript_expression "piVar35[4]" (identifier "piVar35") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar16 = uVar31 & 4;" (assignment_expression "uVar16 = uVar31 & 4" (identifier "uVar16") (= "=") (binary_expression "uVar31 & 4" (identifier "uVar31") (& "&") (number_literal "4"))) (; ";")) (expression_statement "puVar28 = *(undefined4 **)*piVar35;" (assignment_expression "puVar28 = *(undefined4 **)*piVar35" (identifier "puVar28") (= "=") (pointer_expression "*(undefined4 **)*piVar35" (* "*") (cast_expression "(undefined4 **)*piVar35" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "*piVar35" (* "*") (identifier "piVar35"))))) (; ";")) (expression_statement "iVar4 = ((undefined4 *)*piVar35)[1];" (assignment_expression "iVar4 = ((undefined4 *)*piVar35)[1]" (identifier "iVar4") (= "=") (subscript_expression "((undefined4 *)*piVar35)[1]" (parenthesized_expression "((undefined4 *)*piVar35)" (( "(") (cast_expression "(undefined4 *)*piVar35" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar35" (* "*") (identifier "piVar35"))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_70 = param_1;" (assignment_expression "local_70 = param_1" (identifier "local_70") (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_68 = param_3;" (assignment_expression "local_68 = param_3" (identifier "local_68") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_64 = param_2;" (assignment_expression "local_64 = param_2" (identifier "local_64") (= "=") (identifier "param_2")) (; ";")) (expression_statement "(**(code **)(puVar39 + 0x31d60))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31d60))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d60))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31d60)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31d60)" (* "*") (cast_expression "(code **)(puVar39 + 0x31d60)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31d60)" (( "(") (binary_expression "puVar39 + 0x31d60" (identifier "puVar39") (+ "+") (number_literal "0x31d60")) () ")"))))) () ")")) (argument_list "(puVar28)" (( "(") (identifier "puVar28") () ")"))) (; ";")) (expression_statement "uVar6 = FUN_0001e440(puVar28);" (assignment_expression "uVar6 = FUN_0001e440(puVar28)" (identifier "uVar6") (= "=") (call_expression "FUN_0001e440(puVar28)" (identifier "FUN_0001e440") (argument_list "(puVar28)" (( "(") (identifier "puVar28") () ")")))) (; ";")) (expression_statement "uVar42 = uVar6 & 0xfffffff7 ^ uVar31;" (assignment_expression "uVar42 = uVar6 & 0xfffffff7 ^ uVar31" (identifier "uVar42") (= "=") (binary_expression "uVar6 & 0xfffffff7 ^ uVar31" (binary_expression "uVar6 & 0xfffffff7" (identifier "uVar6") (& "&") (number_literal "0xfffffff7")) (^ "^") (identifier "uVar31"))) (; ";")) (if_statement "if ((uVar42 & 2) == 0) {\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }\n  else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }" (if "if") (parenthesized_expression "((uVar42 & 2) == 0)" (( "(") (binary_expression "(uVar42 & 2) == 0" (parenthesized_expression "(uVar42 & 2)" (( "(") (binary_expression "uVar42 & 2" (identifier "uVar42") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar36 = 0;\n    if ((uVar6 & 4) != 0) goto LAB_000217f4;\nLAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n  }" ({ "{") (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" (identifier "uVar36") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((uVar6 & 4) != 0) goto LAB_000217f4;" (if "if") (parenthesized_expression "((uVar6 & 4) != 0)" (( "(") (binary_expression "(uVar6 & 4) != 0" (parenthesized_expression "(uVar6 & 4)" (( "(") (binary_expression "uVar6 & 4" (identifier "uVar6") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000217f4;" (goto "goto") (statement_identifier "LAB_000217f4") (; ";"))) (labeled_statement "LAB_000216e8:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);" (statement_identifier "LAB_000216e8") (: ":") (expression_statement "pcVar40 = *(code **)(puVar39 + 0x31d88);" (assignment_expression "pcVar40 = *(code **)(puVar39 + 0x31d88)" (identifier "pcVar40") (= "=") (pointer_expression "*(code **)(puVar39 + 0x31d88)" (* "*") (cast_expression "(code **)(puVar39 + 0x31d88)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31d88)" (( "(") (binary_expression "puVar39 + 0x31d88" (identifier "puVar39") (+ "+") (number_literal "0x31d88")) () ")"))))) (; ";"))) (} "}")) (else_clause "else {\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }" (else "else") (compound_statement "{\n    if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }\n    uVar42 = uVar42 & 0xfffffffd;\n    if ((uVar6 & 4) == 0) goto LAB_000216e8;\nLAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);\n    if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }\n  }" ({ "{") (if_statement "if ((uVar31 & 2) == 0) {\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }\n    else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }" (if "if") (parenthesized_expression "((uVar31 & 2) == 0)" (( "(") (binary_expression "(uVar31 & 2) == 0" (parenthesized_expression "(uVar31 & 2)" (( "(") (binary_expression "uVar31 & 2" (identifier "uVar31") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);\n      uVar36 = uVar6 & 1;\n    }" ({ "{") (expression_statement "(**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);" (call_expression "(**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff)" (parenthesized_expression "(**(code **)(puVar39 + 0x31dac))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31dac)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31dac)" (* "*") (cast_expression "(code **)(puVar39 + 0x31dac)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31dac)" (( "(") (binary_expression "puVar39 + 0x31dac" (identifier "puVar39") (+ "+") (number_literal "0x31dac")) () ")"))))) () ")")) (argument_list "(puVar28,1,0xffffffff,0xffffffff)" (( "(") (identifier "puVar28") (, ",") (number_literal "1") (, ",") (number_literal "0xffffffff") (, ",") (number_literal "0xffffffff") () ")"))) (; ";")) (expression_statement "uVar36 = uVar6 & 1;" (assignment_expression "uVar36 = uVar6 & 1" (identifier "uVar36") (= "=") (binary_expression "uVar6 & 1" (identifier "uVar6") (& "&") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }" (else "else") (compound_statement "{\n      uVar36 = 0;\n      (**(code **)(puVar39 + 0x31d00))(puVar28);\n    }" ({ "{") (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" (identifier "uVar36") (= "=") (number_literal "0")) (; ";")) (expression_statement "(**(code **)(puVar39 + 0x31d00))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31d00))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d00))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31d00)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31d00)" (* "*") (cast_expression "(code **)(puVar39 + 0x31d00)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31d00)" (( "(") (binary_expression "puVar39 + 0x31d00" (identifier "puVar39") (+ "+") (number_literal "0x31d00")) () ")"))))) () ")")) (argument_list "(puVar28)" (( "(") (identifier "puVar28") () ")"))) (; ";")) (} "}")))) (expression_statement "uVar42 = uVar42 & 0xfffffffd;" (assignment_expression "uVar42 = uVar42 & 0xfffffffd" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xfffffffd" (identifier "uVar42") (& "&") (number_literal "0xfffffffd"))) (; ";")) (if_statement "if ((uVar6 & 4) == 0) goto LAB_000216e8;" (if "if") (parenthesized_expression "((uVar6 & 4) == 0)" (( "(") (binary_expression "(uVar6 & 4) == 0" (parenthesized_expression "(uVar6 & 4)" (( "(") (binary_expression "uVar6 & 4" (identifier "uVar6") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000216e8;" (goto "goto") (statement_identifier "LAB_000216e8") (; ";"))) (labeled_statement "LAB_000217f4:\n    pcVar40 = *(code **)(puVar39 + 0x31d88);" (statement_identifier "LAB_000217f4") (: ":") (expression_statement "pcVar40 = *(code **)(puVar39 + 0x31d88);" (assignment_expression "pcVar40 = *(code **)(puVar39 + 0x31d88)" (identifier "pcVar40") (= "=") (pointer_expression "*(code **)(puVar39 + 0x31d88)" (* "*") (cast_expression "(code **)(puVar39 + 0x31d88)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31d88)" (( "(") (binary_expression "puVar39 + 0x31d88" (identifier "puVar39") (+ "+") (number_literal "0x31d88")) () ")"))))) (; ";"))) (if_statement "if ((piVar35[5] & 4U) == 0) {\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }" (if "if") (parenthesized_expression "((piVar35[5] & 4U) == 0)" (( "(") (binary_expression "(piVar35[5] & 4U) == 0" (parenthesized_expression "(piVar35[5] & 4U)" (( "(") (binary_expression "piVar35[5] & 4U" (subscript_expression "piVar35[5]" (identifier "piVar35") ([ "[") (number_literal "5") (] "]")) (& "&") (number_literal "4U")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      (*pcVar40)(puVar28,0,100000);\n      goto joined_r0x0002181c;\n    }" ({ "{") (expression_statement "(*pcVar40)(puVar28,0,100000);" (call_expression "(*pcVar40)(puVar28,0,100000)" (parenthesized_expression "(*pcVar40)" (( "(") (pointer_expression "*pcVar40" (* "*") (identifier "pcVar40")) () ")")) (argument_list "(puVar28,0,100000)" (( "(") (identifier "puVar28") (, ",") (number_literal "0") (, ",") (number_literal "100000") () ")"))) (; ";")) (goto_statement "goto joined_r0x0002181c;" (goto "goto") (statement_identifier "joined_r0x0002181c") (; ";")) (} "}"))) (} "}")))) (expression_statement "(*pcVar40)(puVar28,0,0xffffffff);" (call_expression "(*pcVar40)(puVar28,0,0xffffffff)" (parenthesized_expression "(*pcVar40)" (( "(") (pointer_expression "*pcVar40" (* "*") (identifier "pcVar40")) () ")")) (argument_list "(puVar28,0,0xffffffff)" (( "(") (identifier "puVar28") (, ",") (number_literal "0") (, ",") (number_literal "0xffffffff") () ")"))) (; ";")) (labeled_statement "joined_r0x0002181c:\n  if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }" (statement_identifier "joined_r0x0002181c") (: ":") (if_statement "if ((uVar31 & 4) == 0) {\n    uVar26 = 0;\n    iVar34 = -1;\n  }\n  else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }" (if "if") (parenthesized_expression "((uVar31 & 4) == 0)" (( "(") (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" (( "(") (binary_expression "uVar31 & 4" (identifier "uVar31") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar26 = 0;\n    iVar34 = -1;\n  }" ({ "{") (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" (identifier "uVar26") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar34 = -1;" (assignment_expression "iVar34 = -1" (identifier "iVar34") (= "=") (number_literal "-1")) (; ";")) (} "}")) (else_clause "else {\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }" (else "else") (compound_statement "{\n    uVar26 = uVar6 & 1;\n    iVar34 = 100000;\n  }" ({ "{") (expression_statement "uVar26 = uVar6 & 1;" (assignment_expression "uVar26 = uVar6 & 1" (identifier "uVar26") (= "=") (binary_expression "uVar6 & 1" (identifier "uVar6") (& "&") (number_literal "1"))) (; ";")) (expression_statement "iVar34 = 100000;" (assignment_expression "iVar34 = 100000" (identifier "iVar34") (= "=") (number_literal "100000")) (; ";")) (} "}"))))) (if_statement "if ((uVar42 & 0x40) != 0) {\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }" (if "if") (parenthesized_expression "((uVar42 & 0x40) != 0)" (( "(") (binary_expression "(uVar42 & 0x40) != 0" (parenthesized_expression "(uVar42 & 0x40)" (( "(") (binary_expression "uVar42 & 0x40" (identifier "uVar42") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar26 = 2;\n    uVar42 = uVar42 & 0xffffffbf;\n  }" ({ "{") (expression_statement "uVar26 = 2;" (assignment_expression "uVar26 = 2" (identifier "uVar26") (= "=") (number_literal "2")) (; ";")) (expression_statement "uVar42 = uVar42 & 0xffffffbf;" (assignment_expression "uVar42 = uVar42 & 0xffffffbf" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xffffffbf" (identifier "uVar42") (& "&") (number_literal "0xffffffbf"))) (; ";")) (} "}"))) (if_statement "if (uVar36 != 0) goto LAB_00021afc;" (if "if") (parenthesized_expression "(uVar36 != 0)" (( "(") (binary_expression "uVar36 != 0" (identifier "uVar36") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021afc;" (goto "goto") (statement_identifier "LAB_00021afc") (; ";"))) (do_statement "do {\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  } while( true );" (do "do") (compound_statement "{\n    uVar7 = uVar42 & 4;\nLAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }\n    if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }\n    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);\n    if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }\n    if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }\n    if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }\n    FUN_0001e55c();\n    if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }\n    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);\n    uVar42 = *(byte *)(iVar4 + 0x19) & 2;\n    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }\n    if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }\n    if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }\n    uVar7 = puVar28[0x4b];\n    if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }\n    if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }\n    if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }\n    if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }\n    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);\nLAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);\n    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }\n    uVar36 = 0;\n  }" ({ "{") (expression_statement "uVar7 = uVar42 & 4;" (assignment_expression "uVar7 = uVar42 & 4" (identifier "uVar7") (= "=") (binary_expression "uVar42 & 4" (identifier "uVar42") (& "&") (number_literal "4"))) (; ";")) (labeled_statement "LAB_00021734:\n    if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }" (statement_identifier "LAB_00021734") (: ":") (if_statement "if (uVar7 != 0) {\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }" (if "if") (parenthesized_expression "(uVar7 != 0)" (( "(") (binary_expression "uVar7 != 0" (identifier "uVar7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }\n      uVar42 = uVar42 & 0xfffffffb;\n    }" ({ "{") (if_statement "if ((uVar31 & 4) == 0) {\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }" (if "if") (parenthesized_expression "((uVar31 & 4) == 0)" (( "(") (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" (( "(") (binary_expression "uVar31 & 4" (identifier "uVar31") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        (**(code **)(puVar39 + 0x31cc8))(puVar28);\n      }" ({ "{") (expression_statement "(**(code **)(puVar39 + 0x31cc8))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31cc8))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31cc8))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31cc8)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31cc8)" (* "*") (cast_expression "(code **)(puVar39 + 0x31cc8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31cc8)" (( "(") (binary_expression "puVar39 + 0x31cc8" (identifier "puVar39") (+ "+") (number_literal "0x31cc8")) () ")"))))) () ")")) (argument_list "(puVar28)" (( "(") (identifier "puVar28") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }" (else "else") (compound_statement "{\n        (**(code **)(puVar39 + 0x31cf8))(puVar28);\n      }" ({ "{") (expression_statement "(**(code **)(puVar39 + 0x31cf8))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31cf8))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31cf8))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31cf8)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31cf8)" (* "*") (cast_expression "(code **)(puVar39 + 0x31cf8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31cf8)" (( "(") (binary_expression "puVar39 + 0x31cf8" (identifier "puVar39") (+ "+") (number_literal "0x31cf8")) () ")"))))) () ")")) (argument_list "(puVar28)" (( "(") (identifier "puVar28") () ")"))) (; ";")) (} "}")))) (expression_statement "uVar42 = uVar42 & 0xfffffffb;" (assignment_expression "uVar42 = uVar42 & 0xfffffffb" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xfffffffb" (identifier "uVar42") (& "&") (number_literal "0xfffffffb"))) (; ";")) (} "}")))) (if_statement "if ((uVar42 & 1) == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }" (if "if") (parenthesized_expression "((uVar42 & 1) == 0)" (( "(") (binary_expression "(uVar42 & 1) == 0" (parenthesized_expression "(uVar42 & 1)" (( "(") (binary_expression "uVar42 & 1" (identifier "uVar42") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar6 = 0;\n    }" ({ "{") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }" (else "else") (compound_statement "{\n      uVar20 = 0xffff;\n      if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n    }" ({ "{") (expression_statement "uVar20 = 0xffff;" (assignment_expression "uVar20 = 0xffff" (identifier "uVar20") (= "=") (number_literal "0xffff")) (; ";")) (if_statement "if ((uVar6 & 1) == 0) {\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }\n      else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" (if "if") (parenthesized_expression "((uVar6 & 1) == 0)" (( "(") (binary_expression "(uVar6 & 1) == 0" (parenthesized_expression "(uVar6 & 1)" (( "(") (binary_expression "uVar6 & 1" (identifier "uVar6") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        bVar1 = (uVar31 & 0x20) != 0;\n        if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }\n        if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }\n        uVar6 = 0;\n        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);\n        uVar42 = uVar42 & 0xfffffffe;\n      }" ({ "{") (expression_statement "bVar1 = (uVar31 & 0x20) != 0;" (assignment_expression "bVar1 = (uVar31 & 0x20) != 0" (identifier "bVar1") (= "=") (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" (( "(") (binary_expression "uVar31 & 0x20" (identifier "uVar31") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0"))) (; ";")) (if_statement "if ((uVar31 & 4) == 0) {\n          uVar20 = 0xff;\n        }" (if "if") (parenthesized_expression "((uVar31 & 4) == 0)" (( "(") (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" (( "(") (binary_expression "uVar31 & 4" (identifier "uVar31") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar20 = 0xff;\n        }" ({ "{") (expression_statement "uVar20 = 0xff;" (assignment_expression "uVar20 = 0xff" (identifier "uVar20") (= "=") (number_literal "0xff")) (; ";")) (} "}"))) (if_statement "if (bVar1) {\n          uVar42 = uVar42 & 0xffffffdf;\n        }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n          uVar42 = uVar42 & 0xffffffdf;\n        }" ({ "{") (expression_statement "uVar42 = uVar42 & 0xffffffdf;" (assignment_expression "uVar42 = uVar42 & 0xffffffdf" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xffffffdf" (identifier "uVar42") (& "&") (number_literal "0xffffffdf"))) (; ";")) (} "}"))) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "(**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);" (call_expression "(**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d8c))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31d8c)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31d8c)" (* "*") (cast_expression "(code **)(puVar39 + 0x31d8c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31d8c)" (( "(") (binary_expression "puVar39 + 0x31d8c" (identifier "puVar39") (+ "+") (number_literal "0x31d8c")) () ")"))))) () ")")) (argument_list "(puVar28,uVar20,!bVar1)" (( "(") (identifier "puVar28") (, ",") (identifier "uVar20") (, ",") (unary_expression "!bVar1" (! "!") (identifier "bVar1")) () ")"))) (; ";")) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xfffffffe" (identifier "uVar42") (& "&") (number_literal "0xfffffffe"))) (; ";")) (} "}")) (else_clause "else if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" (else "else") (if_statement "if (uVar36 == 0) {\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }\n      else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" (if "if") (parenthesized_expression "(uVar36 == 0)" (( "(") (binary_expression "uVar36 == 0" (identifier "uVar36") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }\n      }" ({ "{") (if_statement "if ((uVar31 & 4) == 0) {\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }\n        else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }" (if "if") (parenthesized_expression "((uVar31 & 4) == 0)" (( "(") (binary_expression "(uVar31 & 4) == 0" (parenthesized_expression "(uVar31 & 4)" (( "(") (binary_expression "uVar31 & 4" (identifier "uVar31") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          pbVar8 = (byte *)puVar29[4];\n          if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n        }" ({ "{") (expression_statement "pbVar8 = (byte *)puVar29[4];" (assignment_expression "pbVar8 = (byte *)puVar29[4]" (identifier "pbVar8") (= "=") (cast_expression "(byte *)puVar29[4]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar29[4]" (identifier "puVar29") ([ "[") (number_literal "4") (] "]")))) (; ";")) (if_statement "if (pbVar8 == (byte *)0x0) {\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }\n          else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }" (if "if") (parenthesized_expression "(pbVar8 == (byte *)0x0)" (( "(") (binary_expression "pbVar8 == (byte *)0x0" (identifier "pbVar8") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            uVar26 = 2;\n            uVar6 = 1;\n            uVar42 = uVar42 & 0xfffffffe;\n          }" ({ "{") (expression_statement "uVar26 = 2;" (assignment_expression "uVar26 = 2" (identifier "uVar26") (= "=") (number_literal "2")) (; ";")) (expression_statement "uVar6 = 1;" (assignment_expression "uVar6 = 1" (identifier "uVar6") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xfffffffe" (identifier "uVar42") (& "&") (number_literal "0xfffffffe"))) (; ";")) (} "}")) (else_clause "else {\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }" (else "else") (compound_statement "{\n            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;\n            uVar6 = 0;\n            local_7c = (ushort)pbVar8[1];\n            local_7a = (ushort)pbVar8[2];\n            local_78 = local_7c;\n            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);\n            uVar42 = uVar42 & 0xfffffffe;\n          }" ({ "{") (expression_statement "local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;" (assignment_expression "local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff" (identifier "local_80") (= "=") (binary_expression "CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff" (call_expression "CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8)" (identifier "CONCAT22") (argument_list "((short)(local_80 >> 0x10),(ushort)*pbVar8)" (( "(") (cast_expression "(short)(local_80 >> 0x10)" (( "(") (type_descriptor "short" (sized_type_specifier "short" (short "short"))) () ")") (parenthesized_expression "(local_80 >> 0x10)" (( "(") (binary_expression "local_80 >> 0x10" (identifier "local_80") (>> ">>") (number_literal "0x10")) () ")"))) (, ",") (binary_expression "(ushort)*pbVar8" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (* "*") (identifier "pbVar8")) () ")"))) (& "&") (number_literal "0xffffff"))) (; ";")) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_7c = (ushort)pbVar8[1];" (assignment_expression "local_7c = (ushort)pbVar8[1]" (identifier "local_7c") (= "=") (cast_expression "(ushort)pbVar8[1]" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (subscript_expression "pbVar8[1]" (identifier "pbVar8") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "local_7a = (ushort)pbVar8[2];" (assignment_expression "local_7a = (ushort)pbVar8[2]" (identifier "local_7a") (= "=") (cast_expression "(ushort)pbVar8[2]" (( "(") (type_descriptor "ushort" (type_identifier "ushort")) () ")") (subscript_expression "pbVar8[2]" (identifier "pbVar8") ([ "[") (number_literal "2") (] "]")))) (; ";")) (expression_statement "local_78 = local_7c;" (assignment_expression "local_78 = local_7c" (identifier "local_78") (= "=") (identifier "local_7c")) (; ";")) (expression_statement "(**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);" (call_expression "(**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0)" (parenthesized_expression "(**(code **)(puVar39 + 0x31e58))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31e58)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31e58)" (* "*") (cast_expression "(code **)(puVar39 + 0x31e58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31e58)" (( "(") (binary_expression "puVar39 + 0x31e58" (identifier "puVar39") (+ "+") (number_literal "0x31e58")) () ")"))))) () ")")) (argument_list "(puVar28,&local_80,1,0,0)" (( "(") (identifier "puVar28") (, ",") (pointer_expression "&local_80" (& "&") (identifier "local_80")) (, ",") (number_literal "1") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xfffffffe" (identifier "uVar42") (& "&") (number_literal "0xfffffffe"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }" (else "else") (compound_statement "{\n          uVar6 = 0;\n          (**(code **)(puVar39 + 0x31d34))(puVar28);\n          uVar42 = uVar42 & 0xfffffffe;\n        }" ({ "{") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "(**(code **)(puVar39 + 0x31d34))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31d34))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d34))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31d34)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31d34)" (* "*") (cast_expression "(code **)(puVar39 + 0x31d34)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31d34)" (( "(") (binary_expression "puVar39 + 0x31d34" (identifier "puVar39") (+ "+") (number_literal "0x31d34")) () ")"))))) () ")")) (argument_list "(puVar28)" (( "(") (identifier "puVar28") () ")"))) (; ";")) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xfffffffe" (identifier "uVar42") (& "&") (number_literal "0xfffffffe"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" (else "else") (compound_statement "{\n        uVar36 = 2;\n        uVar6 = 0;\n        uVar42 = uVar42 & 0xfffffffe;\n      }" ({ "{") (expression_statement "uVar36 = 2;" (assignment_expression "uVar36 = 2" (identifier "uVar36") (= "=") (number_literal "2")) (; ";")) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar42 = uVar42 & 0xfffffffe;" (assignment_expression "uVar42 = uVar42 & 0xfffffffe" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xfffffffe" (identifier "uVar42") (& "&") (number_literal "0xfffffffe"))) (; ";")) (} "}")))))) (} "}")))) (expression_statement "(**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);" (call_expression "(**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d88))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31d88)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31d88)" (* "*") (cast_expression "(code **)(puVar39 + 0x31d88)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31d88)" (( "(") (binary_expression "puVar39 + 0x31d88" (identifier "puVar39") (+ "+") (number_literal "0x31d88")) () ")"))))) () ")")) (argument_list "(puVar28,uVar26,iVar34)" (( "(") (identifier "puVar28") (, ",") (identifier "uVar26") (, ",") (identifier "iVar34") () ")"))) (; ";")) (if_statement "if ((uVar42 & 0x10) != 0) {\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }" (if "if") (parenthesized_expression "((uVar42 & 0x10) != 0)" (( "(") (binary_expression "(uVar42 & 0x10) != 0" (parenthesized_expression "(uVar42 & 0x10)" (( "(") (binary_expression "uVar42 & 0x10" (identifier "uVar42") (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }\n    }" ({ "{") (if_statement "if ((uVar31 & 2) == 0) {\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }" (if "if") (parenthesized_expression "((uVar31 & 2) == 0)" (( "(") (binary_expression "(uVar31 & 2) == 0" (parenthesized_expression "(uVar31 & 2)" (( "(") (binary_expression "uVar31 & 2" (identifier "uVar31") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar31 = uVar31 & 0xffffffef;\n        uVar42 = uVar42 & 0xffffffef;\n      }" ({ "{") (expression_statement "uVar31 = uVar31 & 0xffffffef;" (assignment_expression "uVar31 = uVar31 & 0xffffffef" (identifier "uVar31") (= "=") (binary_expression "uVar31 & 0xffffffef" (identifier "uVar31") (& "&") (number_literal "0xffffffef"))) (; ";")) (expression_statement "uVar42 = uVar42 & 0xffffffef;" (assignment_expression "uVar42 = uVar42 & 0xffffffef" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xffffffef" (identifier "uVar42") (& "&") (number_literal "0xffffffef"))) (; ";")) (} "}")) (else_clause "else {\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }" (else "else") (compound_statement "{\n        (**(code **)(puVar39 + 0x31cec))(puVar28);\n        uVar42 = uVar42 & 0xffffffef;\n      }" ({ "{") (expression_statement "(**(code **)(puVar39 + 0x31cec))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31cec))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31cec))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31cec)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31cec)" (* "*") (cast_expression "(code **)(puVar39 + 0x31cec)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31cec)" (( "(") (binary_expression "puVar39 + 0x31cec" (identifier "puVar39") (+ "+") (number_literal "0x31cec")) () ")"))))) () ")")) (argument_list "(puVar28)" (( "(") (identifier "puVar28") () ")"))) (; ";")) (expression_statement "uVar42 = uVar42 & 0xffffffef;" (assignment_expression "uVar42 = uVar42 & 0xffffffef" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xffffffef" (identifier "uVar42") (& "&") (number_literal "0xffffffef"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if ((uVar42 & 0x20) != 0) {\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }" (if "if") (parenthesized_expression "((uVar42 & 0x20) != 0)" (( "(") (binary_expression "(uVar42 & 0x20) != 0" (parenthesized_expression "(uVar42 & 0x20)" (( "(") (binary_expression "uVar42 & 0x20" (identifier "uVar42") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n    }" ({ "{") (if_statement "if ((uVar31 & 1) == 0) {\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" (if "if") (parenthesized_expression "((uVar31 & 1) == 0)" (( "(") (binary_expression "(uVar31 & 1) == 0" (parenthesized_expression "(uVar31 & 1)" (( "(") (binary_expression "uVar31 & 1" (identifier "uVar31") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar31 = uVar31 & 0xffffffdf;\n        uVar42 = uVar42 & 0xffffffdf;\n      }" ({ "{") (expression_statement "uVar31 = uVar31 & 0xffffffdf;" (assignment_expression "uVar31 = uVar31 & 0xffffffdf" (identifier "uVar31") (= "=") (binary_expression "uVar31 & 0xffffffdf" (identifier "uVar31") (& "&") (number_literal "0xffffffdf"))) (; ";")) (expression_statement "uVar42 = uVar42 & 0xffffffdf;" (assignment_expression "uVar42 = uVar42 & 0xffffffdf" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xffffffdf" (identifier "uVar42") (& "&") (number_literal "0xffffffdf"))) (; ";")) (} "}")) (else_clause "else if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" (else "else") (if_statement "if (uVar36 == 2) {\n        uVar42 = uVar42 & 0xffffffdf;\n      }\n      else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" (if "if") (parenthesized_expression "(uVar36 == 2)" (( "(") (binary_expression "uVar36 == 2" (identifier "uVar36") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        uVar42 = uVar42 & 0xffffffdf;\n      }" ({ "{") (expression_statement "uVar42 = uVar42 & 0xffffffdf;" (assignment_expression "uVar42 = uVar42 & 0xffffffdf" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xffffffdf" (identifier "uVar42") (& "&") (number_literal "0xffffffdf"))) (; ";")) (} "}")) (else_clause "else {\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" (else "else") (compound_statement "{\n        (**(code **)(puVar39 + 0x31f04))(puVar28);\n        uVar42 = uVar42 & 0xffffffdf;\n      }" ({ "{") (expression_statement "(**(code **)(puVar39 + 0x31f04))(puVar28);" (call_expression "(**(code **)(puVar39 + 0x31f04))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31f04))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31f04)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31f04)" (* "*") (cast_expression "(code **)(puVar39 + 0x31f04)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31f04)" (( "(") (binary_expression "puVar39 + 0x31f04" (identifier "puVar39") (+ "+") (number_literal "0x31f04")) () ")"))))) () ")")) (argument_list "(puVar28)" (( "(") (identifier "puVar28") () ")"))) (; ";")) (expression_statement "uVar42 = uVar42 & 0xffffffdf;" (assignment_expression "uVar42 = uVar42 & 0xffffffdf" (identifier "uVar42") (= "=") (binary_expression "uVar42 & 0xffffffdf" (identifier "uVar42") (& "&") (number_literal "0xffffffdf"))) (; ";")) (} "}")))))) (} "}"))) (if_statement "if (uVar42 != 0) {\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }" (if "if") (parenthesized_expression "(uVar42 != 0)" (( "(") (binary_expression "uVar42 != 0" (identifier "uVar42") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);\n      goto LAB_00021ce8;\n    }" ({ "{") (expression_statement "(**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);" (call_expression "(**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390)" (parenthesized_expression "(**(code **)(puVar39 + 0x31e08))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31e08)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31e08)" (* "*") (cast_expression "(code **)(puVar39 + 0x31e08)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31e08)" (( "(") (binary_expression "puVar39 + 0x31e08" (identifier "puVar39") (+ "+") (number_literal "0x31e08")) () ")"))))) () ")")) (argument_list "(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390)" (( "(") (identifier "puVar28") (, ",") (binary_expression "*(int *)(puVar39 + 0x31a18) + -0x390" (pointer_expression "*(int *)(puVar39 + 0x31a18)" (* "*") (cast_expression "(int *)(puVar39 + 0x31a18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar39 + 0x31a18)" (( "(") (binary_expression "puVar39 + 0x31a18" (identifier "puVar39") (+ "+") (number_literal "0x31a18")) () ")")))) (+ "+") (number_literal "-0x390")) () ")"))) (; ";")) (goto_statement "goto LAB_00021ce8;" (goto "goto") (statement_identifier "LAB_00021ce8") (; ";")) (} "}"))) (expression_statement "FUN_0001e55c();" (call_expression "FUN_0001e55c()" (identifier "FUN_0001e55c") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((uVar6 == 0) && (uVar36 != 2)) {\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }\n    else {\n      iVar34 = 0;\n    }" (if "if") (parenthesized_expression "((uVar6 == 0) && (uVar36 != 2))" (( "(") (binary_expression "(uVar6 == 0) && (uVar36 != 2)" (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar36 != 2)" (( "(") (binary_expression "uVar36 != 2" (identifier "uVar36") (!= "!=") (number_literal "2")) () ")"))) () ")")) (compound_statement "{\n      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);\n    }" ({ "{") (expression_statement "iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);" (assignment_expression "iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28)" (identifier "iVar34") (= "=") (call_expression "(**(code **)(puVar39 + 0x31e24))(puVar28)" (parenthesized_expression "(**(code **)(puVar39 + 0x31e24))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31e24)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31e24)" (* "*") (cast_expression "(code **)(puVar39 + 0x31e24)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31e24)" (( "(") (binary_expression "puVar39 + 0x31e24" (identifier "puVar39") (+ "+") (number_literal "0x31e24")) () ")"))))) () ")")) (argument_list "(puVar28)" (( "(") (identifier "puVar28") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      iVar34 = 0;\n    }" (else "else") (compound_statement "{\n      iVar34 = 0;\n    }" ({ "{") (expression_statement "iVar34 = 0;" (assignment_expression "iVar34 = 0" (identifier "iVar34") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "(**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);" (call_expression "(**(code **)(puVar39 + 0x31f14))(puVar28,iVar4)" (parenthesized_expression "(**(code **)(puVar39 + 0x31f14))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31f14)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31f14)" (* "*") (cast_expression "(code **)(puVar39 + 0x31f14)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31f14)" (( "(") (binary_expression "puVar39 + 0x31f14" (identifier "puVar39") (+ "+") (number_literal "0x31f14")) () ")"))))) () ")")) (argument_list "(puVar28,iVar4)" (( "(") (identifier "puVar28") (, ",") (identifier "iVar4") () ")"))) (; ";")) (expression_statement "uVar42 = *(byte *)(iVar4 + 0x19) & 2;" (assignment_expression "uVar42 = *(byte *)(iVar4 + 0x19) & 2" (identifier "uVar42") (= "=") (binary_expression "*(byte *)(iVar4 + 0x19) & 2" (pointer_expression "*(byte *)(iVar4 + 0x19)" (* "*") (cast_expression "(byte *)(iVar4 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x19)" (( "(") (binary_expression "iVar4 + 0x19" (identifier "iVar4") (+ "+") (number_literal "0x19")) () ")")))) (& "&") (number_literal "2"))) (; ";")) (if_statement "if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }\n    else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }" (if "if") (parenthesized_expression "((*(byte *)(iVar4 + 0x19) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(iVar4 + 0x19) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar4 + 0x19) & 4)" (( "(") (binary_expression "*(byte *)(iVar4 + 0x19) & 4" (pointer_expression "*(byte *)(iVar4 + 0x19)" (* "*") (cast_expression "(byte *)(iVar4 + 0x19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x19)" (( "(") (binary_expression "iVar4 + 0x19" (identifier "iVar4") (+ "+") (number_literal "0x19")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (uVar6 != 0) goto LAB_00021cf4;\n    }" ({ "{") (if_statement "if (uVar6 != 0) goto LAB_00021cf4;" (if "if") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021cf4;" (goto "goto") (statement_identifier "LAB_00021cf4") (; ";"))) (} "}")) (else_clause "else if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }" (else "else") (if_statement "if (uVar6 == 0) {\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }\n    }" ({ "{") (if_statement "if (uVar36 == 2) {\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }\n      else {\n        uVar42 = uVar42 | 1;\n      }" (if "if") (parenthesized_expression "(uVar36 == 2)" (( "(") (binary_expression "uVar36 == 2" (identifier "uVar36") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }\n      }" ({ "{") (if_statement "if ((uVar31 & 1) != 0) {\n          uVar42 = uVar42 | 1;\n        }" (if "if") (parenthesized_expression "((uVar31 & 1) != 0)" (( "(") (binary_expression "(uVar31 & 1) != 0" (parenthesized_expression "(uVar31 & 1)" (( "(") (binary_expression "uVar31 & 1" (identifier "uVar31") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          uVar42 = uVar42 | 1;\n        }" ({ "{") (expression_statement "uVar42 = uVar42 | 1;" (assignment_expression "uVar42 = uVar42 | 1" (identifier "uVar42") (= "=") (binary_expression "uVar42 | 1" (identifier "uVar42") (| "|") (number_literal "1"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        uVar42 = uVar42 | 1;\n      }" (else "else") (compound_statement "{\n        uVar42 = uVar42 | 1;\n      }" ({ "{") (expression_statement "uVar42 = uVar42 | 1;" (assignment_expression "uVar42 = uVar42 | 1" (identifier "uVar42") (= "=") (binary_expression "uVar42 | 1" (identifier "uVar42") (| "|") (number_literal "1"))) (; ";")) (} "}")))) (} "}"))))) (if_statement "if ((uVar31 & 0x40) != 0) {\n      uVar42 = uVar42 | 0x40;\n    }" (if "if") (parenthesized_expression "((uVar31 & 0x40) != 0)" (( "(") (binary_expression "(uVar31 & 0x40) != 0" (parenthesized_expression "(uVar31 & 0x40)" (( "(") (binary_expression "uVar31 & 0x40" (identifier "uVar31") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar42 = uVar42 | 0x40;\n    }" ({ "{") (expression_statement "uVar42 = uVar42 | 0x40;" (assignment_expression "uVar42 = uVar42 | 0x40" (identifier "uVar42") (= "=") (binary_expression "uVar42 | 0x40" (identifier "uVar42") (| "|") (number_literal "0x40"))) (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar4 + 0x18) == '\x10') {\n      uVar42 = uVar42 | 4;\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x18) == '\x10')" (( "(") (binary_expression "*(char *)(iVar4 + 0x18) == '\x10'" (pointer_expression "*(char *)(iVar4 + 0x18)" (* "*") (cast_expression "(char *)(iVar4 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x18)" (( "(") (binary_expression "iVar4 + 0x18" (identifier "iVar4") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (char_literal "'\x10'" (' "'") (escape_sequence "\x10") (' "'"))) () ")")) (compound_statement "{\n      uVar42 = uVar42 | 4;\n    }" ({ "{") (expression_statement "uVar42 = uVar42 | 4;" (assignment_expression "uVar42 = uVar42 | 4" (identifier "uVar42") (= "=") (binary_expression "uVar42 | 4" (identifier "uVar42") (| "|") (number_literal "4"))) (; ";")) (} "}"))) (expression_statement "uVar7 = puVar28[0x4b];" (assignment_expression "uVar7 = puVar28[0x4b]" (identifier "uVar7") (= "=") (subscript_expression "puVar28[0x4b]" (identifier "puVar28") ([ "[") (number_literal "0x4b") (] "]"))) (; ";")) (if_statement "if ((uVar7 & 1) != 0) {\n      uVar42 = uVar42 | 0x10;\n    }" (if "if") (parenthesized_expression "((uVar7 & 1) != 0)" (( "(") (binary_expression "(uVar7 & 1) != 0" (parenthesized_expression "(uVar7 & 1)" (( "(") (binary_expression "uVar7 & 1" (identifier "uVar7") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar42 = uVar42 | 0x10;\n    }" ({ "{") (expression_statement "uVar42 = uVar42 | 0x10;" (assignment_expression "uVar42 = uVar42 | 0x10" (identifier "uVar42") (= "=") (binary_expression "uVar42 | 0x10" (identifier "uVar42") (| "|") (number_literal "0x10"))) (; ";")) (} "}"))) (if_statement "if (uVar36 != 2) {\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }" (if "if") (parenthesized_expression "(uVar36 != 2)" (( "(") (binary_expression "uVar36 != 2" (identifier "uVar36") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;\nLAB_00021954:\n      uVar42 = uVar42 | 0x20;\nLAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;\n      iVar9 = puVar29[1];\n      iVar32 = puVar29[2];\n      if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }\n      if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }\n      puVar29[6] = iVar9;\n      puVar29[7] = iVar32;\n      if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }\n      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);\n      pcVar40 = *(code **)(puVar39 + 0x31d20);\n      puVar29[5] = 0;\n      (*pcVar40)(puVar28,uVar20);\n      goto LAB_000219e8;\n    }" ({ "{") (if_statement "if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;" (if "if") (parenthesized_expression "((uVar7 & 0x20000) == 0)" (( "(") (binary_expression "(uVar7 & 0x20000) == 0" (parenthesized_expression "(uVar7 & 0x20000)" (( "(") (binary_expression "uVar7 & 0x20000" (identifier "uVar7") (& "&") (number_literal "0x20000")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021ac8;" (goto "goto") (statement_identifier "LAB_00021ac8") (; ";"))) (labeled_statement "LAB_00021954:\n      uVar42 = uVar42 | 0x20;" (statement_identifier "LAB_00021954") (: ":") (expression_statement "uVar42 = uVar42 | 0x20;" (assignment_expression "uVar42 = uVar42 | 0x20" (identifier "uVar42") (= "=") (binary_expression "uVar42 | 0x20" (identifier "uVar42") (| "|") (number_literal "0x20"))) (; ";"))) (labeled_statement "LAB_00021958:\n      if (uVar31 != uVar42) goto LAB_00021d04;" (statement_identifier "LAB_00021958") (: ":") (if_statement "if (uVar31 != uVar42) goto LAB_00021d04;" (if "if") (parenthesized_expression "(uVar31 != uVar42)" (( "(") (binary_expression "uVar31 != uVar42" (identifier "uVar31") (!= "!=") (identifier "uVar42")) () ")")) (goto_statement "goto LAB_00021d04;" (goto "goto") (statement_identifier "LAB_00021d04") (; ";")))) (expression_statement "iVar9 = puVar29[1];" (assignment_expression "iVar9 = puVar29[1]" (identifier "iVar9") (= "=") (subscript_expression "puVar29[1]" (identifier "puVar29") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "iVar32 = puVar29[2];" (assignment_expression "iVar32 = puVar29[2]" (identifier "iVar32") (= "=") (subscript_expression "puVar29[2]" (identifier "puVar29") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (uVar16 != 0) {\n        iVar32 = iVar32 << 1;\n      }" (if "if") (parenthesized_expression "(uVar16 != 0)" (( "(") (binary_expression "uVar16 != 0" (identifier "uVar16") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar32 = iVar32 << 1;\n      }" ({ "{") (expression_statement "iVar32 = iVar32 << 1;" (assignment_expression "iVar32 = iVar32 << 1" (identifier "iVar32") (= "=") (binary_expression "iVar32 << 1" (identifier "iVar32") (<< "<<") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (iVar32 < 0) {\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }" (if "if") (parenthesized_expression "(iVar32 < 0)" (( "(") (binary_expression "iVar32 < 0" (identifier "iVar32") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);\n      }" ({ "{") (expression_statement "iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);" (assignment_expression "iVar9 = iVar9 - iVar32 * (piVar35[3] + -1)" (identifier "iVar9") (= "=") (binary_expression "iVar9 - iVar32 * (piVar35[3] + -1)" (identifier "iVar9") (- "-") (binary_expression "iVar32 * (piVar35[3] + -1)" (identifier "iVar32") (* "*") (parenthesized_expression "(piVar35[3] + -1)" (( "(") (binary_expression "piVar35[3] + -1" (subscript_expression "piVar35[3]" (identifier "piVar35") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "-1")) () ")"))))) (; ";")) (} "}"))) (expression_statement "puVar29[6] = iVar9;" (assignment_expression "puVar29[6] = iVar9" (subscript_expression "puVar29[6]" (identifier "puVar29") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "puVar29[7] = iVar32;" (assignment_expression "puVar29[7] = iVar32" (subscript_expression "puVar29[7]" (identifier "puVar29") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar32")) (; ";")) (if_statement "if (uVar6 == 0) {\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }\n      else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (uVar36 != 2) break;\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;\n      }" ({ "{") (if_statement "if (uVar36 != 2) break;" (if "if") (parenthesized_expression "(uVar36 != 2)" (( "(") (binary_expression "uVar36 != 2" (identifier "uVar36") (!= "!=") (number_literal "2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);" (assignment_expression "uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4)" (identifier "uVar20") (= "=") (call_expression "(**(code **)(puVar39 + 0x31f08))(puVar28,iVar4)" (parenthesized_expression "(**(code **)(puVar39 + 0x31f08))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31f08)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31f08)" (* "*") (cast_expression "(code **)(puVar39 + 0x31f08)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31f08)" (( "(") (binary_expression "puVar39 + 0x31f08" (identifier "puVar39") (+ "+") (number_literal "0x31f08")) () ")"))))) () ")")) (argument_list "(puVar28,iVar4)" (( "(") (identifier "puVar28") (, ",") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);" (assignment_expression "uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20)" (identifier "uVar20") (= "=") (call_expression "(**(code **)(puVar39 + 0x31d04))(puVar28,uVar20)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d04))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31d04)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31d04)" (* "*") (cast_expression "(code **)(puVar39 + 0x31d04)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31d04)" (( "(") (binary_expression "puVar39 + 0x31d04" (identifier "puVar39") (+ "+") (number_literal "0x31d04")) () ")"))))) () ")")) (argument_list "(puVar28,uVar20)" (( "(") (identifier "puVar28") (, ",") (identifier "uVar20") () ")")))) (; ";")) (expression_statement "puVar29[5] = uVar20;" (assignment_expression "puVar29[5] = uVar20" (subscript_expression "puVar29[5]" (identifier "puVar29") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;" (assignment_expression "iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18" (identifier "iVar4") (= "=") (binary_expression "*(int *)(puVar39 + 0x31a6c) + 0x1d18" (pointer_expression "*(int *)(puVar39 + 0x31a6c)" (* "*") (cast_expression "(int *)(puVar39 + 0x31a6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar39 + 0x31a6c)" (( "(") (binary_expression "puVar39 + 0x31a6c" (identifier "puVar39") (+ "+") (number_literal "0x31a6c")) () ")")))) (+ "+") (number_literal "0x1d18"))) (; ";")) (} "}")) (else_clause "else {\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }" (else "else") (compound_statement "{\n        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);\n        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);\n        puVar29[5] = uVar20;\n        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;\n      }" ({ "{") (expression_statement "uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);" (assignment_expression "uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4)" (identifier "uVar20") (= "=") (call_expression "(**(code **)(puVar39 + 0x31f08))(puVar28,iVar4)" (parenthesized_expression "(**(code **)(puVar39 + 0x31f08))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31f08)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31f08)" (* "*") (cast_expression "(code **)(puVar39 + 0x31f08)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31f08)" (( "(") (binary_expression "puVar39 + 0x31f08" (identifier "puVar39") (+ "+") (number_literal "0x31f08")) () ")"))))) () ")")) (argument_list "(puVar28,iVar4)" (( "(") (identifier "puVar28") (, ",") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);" (assignment_expression "uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20)" (identifier "uVar20") (= "=") (call_expression "(**(code **)(puVar39 + 0x31d04))(puVar28,uVar20)" (parenthesized_expression "(**(code **)(puVar39 + 0x31d04))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31d04)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31d04)" (* "*") (cast_expression "(code **)(puVar39 + 0x31d04)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31d04)" (( "(") (binary_expression "puVar39 + 0x31d04" (identifier "puVar39") (+ "+") (number_literal "0x31d04")) () ")"))))) () ")")) (argument_list "(puVar28,uVar20)" (( "(") (identifier "puVar28") (, ",") (identifier "uVar20") () ")")))) (; ";")) (expression_statement "puVar29[5] = uVar20;" (assignment_expression "puVar29[5] = uVar20" (subscript_expression "puVar29[5]" (identifier "puVar29") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (expression_statement "iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;" (assignment_expression "iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484" (identifier "iVar4") (= "=") (binary_expression "*(int *)(puVar39 + 0x31a6c) + 0x2484" (pointer_expression "*(int *)(puVar39 + 0x31a6c)" (* "*") (cast_expression "(int *)(puVar39 + 0x31a6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar39 + 0x31a6c)" (( "(") (binary_expression "puVar39 + 0x31a6c" (identifier "puVar39") (+ "+") (number_literal "0x31a6c")) () ")")))) (+ "+") (number_literal "0x2484"))) (; ";")) (} "}")))) (expression_statement "iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);" (assignment_expression "iVar4 = FUN_0001a610(piVar35,iVar4,puVar29)" (identifier "iVar4") (= "=") (call_expression "FUN_0001a610(piVar35,iVar4,puVar29)" (identifier "FUN_0001a610") (argument_list "(piVar35,iVar4,puVar29)" (( "(") (identifier "piVar35") (, ",") (identifier "iVar4") (, ",") (identifier "puVar29") () ")")))) (; ";")) (expression_statement "pcVar40 = *(code **)(puVar39 + 0x31d20);" (assignment_expression "pcVar40 = *(code **)(puVar39 + 0x31d20)" (identifier "pcVar40") (= "=") (pointer_expression "*(code **)(puVar39 + 0x31d20)" (* "*") (cast_expression "(code **)(puVar39 + 0x31d20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31d20)" (( "(") (binary_expression "puVar39 + 0x31d20" (identifier "puVar39") (+ "+") (number_literal "0x31d20")) () ")"))))) (; ";")) (expression_statement "puVar29[5] = 0;" (assignment_expression "puVar29[5] = 0" (subscript_expression "puVar29[5]" (identifier "puVar29") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "(*pcVar40)(puVar28,uVar20);" (call_expression "(*pcVar40)(puVar28,uVar20)" (parenthesized_expression "(*pcVar40)" (( "(") (pointer_expression "*pcVar40" (* "*") (identifier "pcVar40")) () ")")) (argument_list "(puVar28,uVar20)" (( "(") (identifier "puVar28") (, ",") (identifier "uVar20") () ")"))) (; ";")) (goto_statement "goto LAB_000219e8;" (goto "goto") (statement_identifier "LAB_000219e8") (; ";")) (} "}"))) (if_statement "if ((uVar31 & 0x20) != 0) {\n      uVar42 = uVar42 | 0x20;\n    }" (if "if") (parenthesized_expression "((uVar31 & 0x20) != 0)" (( "(") (binary_expression "(uVar31 & 0x20) != 0" (parenthesized_expression "(uVar31 & 0x20)" (( "(") (binary_expression "uVar31 & 0x20" (identifier "uVar31") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar42 = uVar42 | 0x20;\n    }" ({ "{") (expression_statement "uVar42 = uVar42 | 0x20;" (assignment_expression "uVar42 = uVar42 | 0x20" (identifier "uVar42") (= "=") (binary_expression "uVar42 | 0x20" (identifier "uVar42") (| "|") (number_literal "0x20"))) (; ";")) (} "}"))) (if_statement "if ((uVar7 & 0x20000) == 0) {\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }" (if "if") (parenthesized_expression "((uVar7 & 0x20000) == 0)" (( "(") (binary_expression "(uVar7 & 0x20000) == 0" (parenthesized_expression "(uVar7 & 0x20000)" (( "(") (binary_expression "uVar7 & 0x20000" (identifier "uVar7") (& "&") (number_literal "0x20000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;\n      if (uVar36 != 2) goto LAB_00021954;\n    }" ({ "{") (labeled_statement "LAB_00021ac8:\n      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;" (statement_identifier "LAB_00021ac8") (: ":") (if_statement "if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;" (if "if") (parenthesized_expression "((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0))" (( "(") (binary_expression "(-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)" (parenthesized_expression "(-1 < (int)(uVar7 << 7))" (( "(") (binary_expression "-1 < (int)(uVar7 << 7)" (number_literal "-1") (< "<") (cast_expression "(int)(uVar7 << 7)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar7 << 7)" (( "(") (binary_expression "uVar7 << 7" (identifier "uVar7") (<< "<<") (number_literal "7")) () ")")))) () ")")) (|| "||") (parenthesized_expression "((puVar28[0x4a] & 0x80) != 0)" (( "(") (binary_expression "(puVar28[0x4a] & 0x80) != 0" (parenthesized_expression "(puVar28[0x4a] & 0x80)" (( "(") (binary_expression "puVar28[0x4a] & 0x80" (subscript_expression "puVar28[0x4a]" (identifier "puVar28") ([ "[") (number_literal "0x4a") (] "]")) (& "&") (number_literal "0x80")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_00021958;" (goto "goto") (statement_identifier "LAB_00021958") (; ";")))) (if_statement "if (uVar36 != 2) goto LAB_00021954;" (if "if") (parenthesized_expression "(uVar36 != 2)" (( "(") (binary_expression "uVar36 != 2" (identifier "uVar36") (!= "!=") (number_literal "2")) () ")")) (goto_statement "goto LAB_00021954;" (goto "goto") (statement_identifier "LAB_00021954") (; ";"))) (} "}"))) (expression_statement "(**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);" (call_expression "(**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340)" (parenthesized_expression "(**(code **)(puVar39 + 0x31e08))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31e08)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31e08)" (* "*") (cast_expression "(code **)(puVar39 + 0x31e08)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31e08)" (( "(") (binary_expression "puVar39 + 0x31e08" (identifier "puVar39") (+ "+") (number_literal "0x31e08")) () ")"))))) () ")")) (argument_list "(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340)" (( "(") (identifier "puVar28") (, ",") (binary_expression "*(int *)(puVar39 + 0x31a18) + -0x340" (pointer_expression "*(int *)(puVar39 + 0x31a18)" (* "*") (cast_expression "(int *)(puVar39 + 0x31a18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar39 + 0x31a18)" (( "(") (binary_expression "puVar39 + 0x31a18" (identifier "puVar39") (+ "+") (number_literal "0x31a18")) () ")")))) (+ "+") (number_literal "-0x340")) () ")"))) (; ";")) (labeled_statement "LAB_00021afc:\n    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);" (statement_identifier "LAB_00021afc") (: ":") (expression_statement "iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);" (assignment_expression "iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000)" (identifier "iVar9") (= "=") (call_expression "FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000)" (identifier "FUN_00016f88") (argument_list "(&local_80,iVar34,puVar28[0xe6],100000)" (( "(") (pointer_expression "&local_80" (& "&") (identifier "local_80")) (, ",") (identifier "iVar34") (, ",") (subscript_expression "puVar28[0xe6]" (identifier "puVar28") ([ "[") (number_literal "0xe6") (] "]")) (, ",") (number_literal "100000") () ")")))) (; ";"))) (if_statement "if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }" (if "if") (parenthesized_expression "((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0))" (( "(") (binary_expression "(iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)" (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar9 = FUN_00017f48(local_80), iVar9 != 0)" (( "(") (comma_expression "iVar9 = FUN_00017f48(local_80), iVar9 != 0" (assignment_expression "iVar9 = FUN_00017f48(local_80)" (identifier "iVar9") (= "=") (call_expression "FUN_00017f48(local_80)" (identifier "FUN_00017f48") (argument_list "(local_80)" (( "(") (identifier "local_80") () ")")))) (, ",") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      uVar7 = uVar42 & 4;\n      if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }\n      goto LAB_00021734;\n    }" ({ "{") (expression_statement "uVar7 = uVar42 & 4;" (assignment_expression "uVar7 = uVar42 & 4" (identifier "uVar7") (= "=") (binary_expression "uVar42 & 4" (identifier "uVar42") (& "&") (number_literal "4"))) (; ";")) (if_statement "if (uVar26 == 1) {\n        uVar26 = 0;\n        uVar36 = 2;\n      }" (if "if") (parenthesized_expression "(uVar26 == 1)" (( "(") (binary_expression "uVar26 == 1" (identifier "uVar26") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        uVar26 = 0;\n        uVar36 = 2;\n      }" ({ "{") (expression_statement "uVar26 = 0;" (assignment_expression "uVar26 = 0" (identifier "uVar26") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar36 = 2;" (assignment_expression "uVar36 = 2" (identifier "uVar36") (= "=") (number_literal "2")) (; ";")) (} "}"))) (goto_statement "goto LAB_00021734;" (goto "goto") (statement_identifier "LAB_00021734") (; ";")) (} "}"))) (expression_statement "uVar36 = 0;" (assignment_expression "uVar36 = 0" (identifier "uVar36") (= "=") (number_literal "0")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (while_statement "while( true ) {\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iVar34 = iVar34 + -1;\n    iVar4 = 1;\n    if (iVar34 < 0) break;\n    iVar9 = puVar29[6];\n    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }\n  }" ({ "{") (expression_statement "iVar34 = iVar34 + -1;" (assignment_expression "iVar34 = iVar34 + -1" (identifier "iVar34") (= "=") (binary_expression "iVar34 + -1" (identifier "iVar34") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" (identifier "iVar4") (= "=") (number_literal "1")) (; ";")) (if_statement "if (iVar34 < 0) break;" (if "if") (parenthesized_expression "(iVar34 < 0)" (( "(") (binary_expression "iVar34 < 0" (identifier "iVar34") (< "<") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar9 = puVar29[6];" (assignment_expression "iVar9 = puVar29[6]" (identifier "iVar9") (= "=") (subscript_expression "puVar29[6]" (identifier "puVar29") ([ "[") (number_literal "6") (] "]"))) (; ";")) (for_statement "for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }" (for "for") (( "(") (assignment_expression "iVar4 = piVar35[3]" (identifier "iVar4") (= "=") (subscript_expression "piVar35[3]" (identifier "piVar35") ([ "[") (number_literal "3") (] "]"))) (; ";") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);\n      iVar9 = iVar9 + iVar32;\n    }" ({ "{") (expression_statement "(**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);" (call_expression "(**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0)" (parenthesized_expression "(**(code **)(puVar39 + 0x31da0))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31da0)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31da0)" (* "*") (cast_expression "(code **)(puVar39 + 0x31da0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31da0)" (( "(") (binary_expression "puVar39 + 0x31da0" (identifier "puVar39") (+ "+") (number_literal "0x31da0")) () ")"))))) () ")")) (argument_list "(puVar28,iVar9,0)" (( "(") (identifier "puVar28") (, ",") (identifier "iVar9") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar9 = iVar9 + iVar32;" (assignment_expression "iVar9 = iVar9 + iVar32" (identifier "iVar9") (= "=") (binary_expression "iVar9 + iVar32" (identifier "iVar9") (+ "+") (identifier "iVar32"))) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000219e8:\n  if (local_74 == *piVar5) {\n    return iVar4;\n  }" (statement_identifier "LAB_000219e8") (: ":") (if_statement "if (local_74 == *piVar5) {\n    return iVar4;\n  }" (if "if") (parenthesized_expression "(local_74 == *piVar5)" (( "(") (binary_expression "local_74 == *piVar5" (identifier "local_74") (== "==") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) (compound_statement "{\n    return iVar4;\n  }" ({ "{") (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}")))) (labeled_statement "LAB_00021ce8:\n  (**(code **)(puVar39 + 0x31e80))();" (statement_identifier "LAB_00021ce8") (: ":") (expression_statement "(**(code **)(puVar39 + 0x31e80))();" (call_expression "(**(code **)(puVar39 + 0x31e80))()" (parenthesized_expression "(**(code **)(puVar39 + 0x31e80))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31e80)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31e80)" (* "*") (cast_expression "(code **)(puVar39 + 0x31e80)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31e80)" (( "(") (binary_expression "puVar39 + 0x31e80" (identifier "puVar39") (+ "+") (number_literal "0x31e80")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (labeled_statement "LAB_00021cf4:\n  (**(code **)(puVar39 + 0x31e08))();" (statement_identifier "LAB_00021cf4") (: ":") (expression_statement "(**(code **)(puVar39 + 0x31e08))();" (call_expression "(**(code **)(puVar39 + 0x31e08))()" (parenthesized_expression "(**(code **)(puVar39 + 0x31e08))" (( "(") (pointer_expression "**(code **)(puVar39 + 0x31e08)" (* "*") (pointer_expression "*(code **)(puVar39 + 0x31e08)" (* "*") (cast_expression "(code **)(puVar39 + 0x31e08)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31e08)" (( "(") (binary_expression "puVar39 + 0x31e08" (identifier "puVar39") (+ "+") (number_literal "0x31e08")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";"))) (labeled_statement "LAB_00021d04:\n  pcVar40 = *(code **)(puVar39 + 0x31e08);" (statement_identifier "LAB_00021d04") (: ":") (expression_statement "pcVar40 = *(code **)(puVar39 + 0x31e08);" (assignment_expression "pcVar40 = *(code **)(puVar39 + 0x31e08)" (identifier "pcVar40") (= "=") (pointer_expression "*(code **)(puVar39 + 0x31e08)" (* "*") (cast_expression "(code **)(puVar39 + 0x31e08)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar39 + 0x31e08)" (( "(") (binary_expression "puVar39 + 0x31e08" (identifier "puVar39") (+ "+") (number_literal "0x31e08")) () ")"))))) (; ";"))) (expression_statement "(*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318);" (call_expression "(*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318)" (parenthesized_expression "(*pcVar40)" (( "(") (pointer_expression "*pcVar40" (* "*") (identifier "pcVar40")) () ")")) (argument_list "(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318)" (( "(") (identifier "puVar28") (, ",") (binary_expression "*(int *)(puVar39 + 0x31a18) + -0x318" (pointer_expression "*(int *)(puVar39 + 0x31a18)" (* "*") (cast_expression "(int *)(puVar39 + 0x31a18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar39 + 0x31a18)" (( "(") (binary_expression "puVar39 + 0x31a18" (identifier "puVar39") (+ "+") (number_literal "0x31a18")) () ")")))) (+ "+") (number_literal "-0x318")) () ")"))) (; ";")) (expression_statement "piVar5 = (int *)*puVar28;" (assignment_expression "piVar5 = (int *)*puVar28" (identifier "piVar5") (= "=") (cast_expression "(int *)*puVar28" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar28" (* "*") (identifier "puVar28")))) (; ";")) (expression_statement "iVar4 = piVar5[2];" (assignment_expression "iVar4 = piVar5[2]" (identifier "iVar4") (= "=") (subscript_expression "piVar5[2]" (identifier "piVar5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar29 = *(undefined4 **)*piVar5;" (assignment_expression "puVar29 = *(undefined4 **)*piVar5" (identifier "puVar29") (= "=") (pointer_expression "*(undefined4 **)*piVar5" (* "*") (cast_expression "(undefined4 **)*piVar5" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))))) (; ";")) (expression_statement "iVar34 = ((undefined4 *)*piVar5)[1];" (assignment_expression "iVar34 = ((undefined4 *)*piVar5)[1]" (identifier "iVar34") (= "=") (subscript_expression "((undefined4 *)*piVar5)[1]" (parenthesized_expression "((undefined4 *)*piVar5)" (( "(") (cast_expression "(undefined4 *)*piVar5" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar42 = piVar5[3];" (assignment_expression "uVar42 = piVar5[3]" (identifier "uVar42") (= "=") (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if ((puVar29[0x4b] & 0x600000) == 0) {\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }\n  else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }" (if "if") (parenthesized_expression "((puVar29[0x4b] & 0x600000) == 0)" (( "(") (binary_expression "(puVar29[0x4b] & 0x600000) == 0" (parenthesized_expression "(puVar29[0x4b] & 0x600000)" (( "(") (binary_expression "puVar29[0x4b] & 0x600000" (subscript_expression "puVar29[0x4b]" (identifier "puVar29") ([ "[") (number_literal "0x4b") (] "]")) (& "&") (number_literal "0x600000")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);\nLAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);\nLAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);\n  }" ({ "{") (labeled_statement "LAB_00022424:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);" (statement_identifier "LAB_00022424") (: ":") (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x316f4)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x316f4)" (* "*") (cast_expression "(code **)(pcVar40 + 0x316f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x316f4)" (( "(") (binary_expression "pcVar40 + 0x316f4" (identifier "pcVar40") (+ "+") (number_literal "0x316f4")) () ")"))))) () ")")) (argument_list "(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0)" (( "(") (identifier "puVar29") (, ",") (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x2f0" (pointer_expression "*(int *)(pcVar40 + 0x31304)" (* "*") (cast_expression "(int *)(pcVar40 + 0x31304)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x31304)" (( "(") (binary_expression "pcVar40 + 0x31304" (identifier "pcVar40") (+ "+") (number_literal "0x31304")) () ")")))) (+ "+") (number_literal "-0x2f0")) () ")"))) (; ";"))) (labeled_statement "LAB_00022438:\n    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);" (statement_identifier "LAB_00022438") (: ":") (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x316f4)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x316f4)" (* "*") (cast_expression "(code **)(pcVar40 + 0x316f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x316f4)" (( "(") (binary_expression "pcVar40 + 0x316f4" (identifier "pcVar40") (+ "+") (number_literal "0x316f4")) () ")"))))) () ")")) (argument_list "(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278)" (( "(") (identifier "puVar29") (, ",") (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x278" (pointer_expression "*(int *)(pcVar40 + 0x31304)" (* "*") (cast_expression "(int *)(pcVar40 + 0x31304)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x31304)" (( "(") (binary_expression "pcVar40 + 0x31304" (identifier "pcVar40") (+ "+") (number_literal "0x31304")) () ")")))) (+ "+") (number_literal "-0x278")) () ")"))) (; ";"))) (labeled_statement "LAB_0002244c:\n    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;" (statement_identifier "LAB_0002244c") (: ":") (expression_statement "iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290" (identifier "iVar9") (= "=") (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x290" (pointer_expression "*(int *)(pcVar40 + 0x31304)" (* "*") (cast_expression "(int *)(pcVar40 + 0x31304)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x31304)" (( "(") (binary_expression "pcVar40 + 0x31304" (identifier "pcVar40") (+ "+") (number_literal "0x31304")) () ")")))) (+ "+") (number_literal "-0x290"))) (; ";"))) (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x316f4)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x316f4)" (* "*") (cast_expression "(code **)(pcVar40 + 0x316f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x316f4)" (( "(") (binary_expression "pcVar40 + 0x316f4" (identifier "pcVar40") (+ "+") (number_literal "0x316f4")) () ")"))))) () ")")) (argument_list "(puVar29,iVar9)" (( "(") (identifier "puVar29") (, ",") (identifier "iVar9") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }" (else "else") (compound_statement "{\n    if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }\n    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);\n    if (iVar9 != 2) goto LAB_00022470;\n    uVar6 = piVar5[4];\n    iVar9 = *(int *)(pcVar40 + 0x31304);\n    if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }\n  }" ({ "{") (if_statement "if ((puVar29[0x4b] & 0x80) != 0) {\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }" (if "if") (parenthesized_expression "((puVar29[0x4b] & 0x80) != 0)" (( "(") (binary_expression "(puVar29[0x4b] & 0x80) != 0" (parenthesized_expression "(puVar29[0x4b] & 0x80)" (( "(") (binary_expression "puVar29[0x4b] & 0x80" (subscript_expression "puVar29[0x4b]" (identifier "puVar29") ([ "[") (number_literal "0x4b") (] "]")) (& "&") (number_literal "0x80")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);\n      goto LAB_00022424;\n    }" ({ "{") (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x316f4)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x316f4)" (* "*") (cast_expression "(code **)(pcVar40 + 0x316f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x316f4)" (( "(") (binary_expression "pcVar40 + 0x316f4" (identifier "pcVar40") (+ "+") (number_literal "0x316f4")) () ")"))))) () ")")) (argument_list "(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc)" (( "(") (identifier "puVar29") (, ",") (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x2dc" (pointer_expression "*(int *)(pcVar40 + 0x31304)" (* "*") (cast_expression "(int *)(pcVar40 + 0x31304)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x31304)" (( "(") (binary_expression "pcVar40 + 0x31304" (identifier "pcVar40") (+ "+") (number_literal "0x31304")) () ")")))) (+ "+") (number_literal "-0x2dc")) () ")"))) (; ";")) (goto_statement "goto LAB_00022424;" (goto "goto") (statement_identifier "LAB_00022424") (; ";")) (} "}"))) (expression_statement "iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);" (assignment_expression "iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34)" (identifier "iVar9") (= "=") (call_expression "(**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316b4))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x316b4)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x316b4)" (* "*") (cast_expression "(code **)(pcVar40 + 0x316b4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x316b4)" (( "(") (binary_expression "pcVar40 + 0x316b4" (identifier "pcVar40") (+ "+") (number_literal "0x316b4")) () ")"))))) () ")")) (argument_list "(puVar29,iVar34)" (( "(") (identifier "puVar29") (, ",") (identifier "iVar34") () ")")))) (; ";")) (if_statement "if (iVar9 != 2) goto LAB_00022470;" (if "if") (parenthesized_expression "(iVar9 != 2)" (( "(") (binary_expression "iVar9 != 2" (identifier "iVar9") (!= "!=") (number_literal "2")) () ")")) (goto_statement "goto LAB_00022470;" (goto "goto") (statement_identifier "LAB_00022470") (; ";"))) (expression_statement "uVar6 = piVar5[4];" (assignment_expression "uVar6 = piVar5[4]" (identifier "uVar6") (= "=") (subscript_expression "piVar5[4]" (identifier "piVar5") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "iVar9 = *(int *)(pcVar40 + 0x31304);" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x31304)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(pcVar40 + 0x31304)" (* "*") (cast_expression "(int *)(pcVar40 + 0x31304)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x31304)" (( "(") (binary_expression "pcVar40 + 0x31304" (identifier "pcVar40") (+ "+") (number_literal "0x31304")) () ")"))))) (; ";")) (if_statement "if ((uVar6 & 5) != 1) {\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }" (if "if") (parenthesized_expression "((uVar6 & 5) != 1)" (( "(") (binary_expression "(uVar6 & 5) != 1" (parenthesized_expression "(uVar6 & 5)" (( "(") (binary_expression "uVar6 & 5" (identifier "uVar6") (& "&") (number_literal "5")) () ")")) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n      if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }\n      local_e8 = 7;\n      if (uVar16 == 1) goto LAB_00021dd0;\n      goto LAB_0002244c;\n    }" ({ "{") (expression_statement "uVar16 = (uint)*(byte *)(puVar29 + 0x7f);" (assignment_expression "uVar16 = (uint)*(byte *)(puVar29 + 0x7f)" (identifier "uVar16") (= "=") (binary_expression "(uint)*(byte *)(puVar29 + 0x7f)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(puVar29 + 0x7f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 0x7f)" (( "(") (binary_expression "puVar29 + 0x7f" (identifier "puVar29") (+ "+") (number_literal "0x7f")) () ")"))))) (; ";")) (if_statement "if (uVar16 == 0) {\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }" (if "if") (parenthesized_expression "(uVar16 == 0)" (( "(") (binary_expression "uVar16 == 0" (identifier "uVar16") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_e8 = 1;\nLAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);\n        if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }\n        if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }\n        goto LAB_00022438;\n      }" ({ "{") (expression_statement "local_e8 = 1;" (assignment_expression "local_e8 = 1" (identifier "local_e8") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_00021dd0:\n        cVar15 = *(char *)(iVar34 + 0x18);" (statement_identifier "LAB_00021dd0") (: ":") (expression_statement "cVar15 = *(char *)(iVar34 + 0x18);" (assignment_expression "cVar15 = *(char *)(iVar34 + 0x18)" (identifier "cVar15") (= "=") (pointer_expression "*(char *)(iVar34 + 0x18)" (* "*") (cast_expression "(char *)(iVar34 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + 0x18)" (( "(") (binary_expression "iVar34 + 0x18" (identifier "iVar34") (+ "+") (number_literal "0x18")) () ")"))))) (; ";"))) (if_statement "if (cVar15 == '\b') {\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }" (if "if") (parenthesized_expression "(cVar15 == '\b')" (( "(") (binary_expression "cVar15 == '\b'" (identifier "cVar15") (== "==") (char_literal "'\b'" (' "'") (escape_sequence "\b") (' "'"))) () ")")) (compound_statement "{\n          iVar34 = puVar28[6];\n          iVar9 = puVar28[7];\n          iVar25 = *(int *)(pcVar40 + 0x31454);\n          iVar32 = *(int *)(pcVar40 + 0x31458);\n          local_ec = 1;\n          uVar6 = 0;\n          if (uVar16 == 1) goto LAB_00022214;\nLAB_000220b0:\n          uVar16 = 0;\n          uVar31 = 0;\n          local_f8 = 1;\n          iVar10 = 1;\nLAB_000220c4:\n          iVar33 = puVar28[4];\n          if (iVar33 == 0) goto LAB_000222bc;\n          do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );\n        }" ({ "{") (expression_statement "iVar34 = puVar28[6];" (assignment_expression "iVar34 = puVar28[6]" (identifier "iVar34") (= "=") (subscript_expression "puVar28[6]" (identifier "puVar28") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "iVar9 = puVar28[7];" (assignment_expression "iVar9 = puVar28[7]" (identifier "iVar9") (= "=") (subscript_expression "puVar28[7]" (identifier "puVar28") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "iVar25 = *(int *)(pcVar40 + 0x31454);" (assignment_expression "iVar25 = *(int *)(pcVar40 + 0x31454)" (identifier "iVar25") (= "=") (pointer_expression "*(int *)(pcVar40 + 0x31454)" (* "*") (cast_expression "(int *)(pcVar40 + 0x31454)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x31454)" (( "(") (binary_expression "pcVar40 + 0x31454" (identifier "pcVar40") (+ "+") (number_literal "0x31454")) () ")"))))) (; ";")) (expression_statement "iVar32 = *(int *)(pcVar40 + 0x31458);" (assignment_expression "iVar32 = *(int *)(pcVar40 + 0x31458)" (identifier "iVar32") (= "=") (pointer_expression "*(int *)(pcVar40 + 0x31458)" (* "*") (cast_expression "(int *)(pcVar40 + 0x31458)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x31458)" (( "(") (binary_expression "pcVar40 + 0x31458" (identifier "pcVar40") (+ "+") (number_literal "0x31458")) () ")"))))) (; ";")) (expression_statement "local_ec = 1;" (assignment_expression "local_ec = 1" (identifier "local_ec") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar16 == 1) goto LAB_00022214;" (if "if") (parenthesized_expression "(uVar16 == 1)" (( "(") (binary_expression "uVar16 == 1" (identifier "uVar16") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00022214;" (goto "goto") (statement_identifier "LAB_00022214") (; ";"))) (labeled_statement "LAB_000220b0:\n          uVar16 = 0;" (statement_identifier "LAB_000220b0") (: ":") (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" (identifier "uVar31") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_f8 = 1;" (assignment_expression "local_f8 = 1" (identifier "local_f8") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" (identifier "iVar10") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_000220c4:\n          iVar33 = puVar28[4];" (statement_identifier "LAB_000220c4") (: ":") (expression_statement "iVar33 = puVar28[4];" (assignment_expression "iVar33 = puVar28[4]" (identifier "iVar33") (= "=") (subscript_expression "puVar28[4]" (identifier "puVar28") ([ "[") (number_literal "4") (] "]"))) (; ";"))) (if_statement "if (iVar33 == 0) goto LAB_000222bc;" (if "if") (parenthesized_expression "(iVar33 == 0)" (( "(") (binary_expression "iVar33 == 0" (identifier "iVar33") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000222bc;" (goto "goto") (statement_identifier "LAB_000222bc") (; ";"))) (do_statement "do {\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          } while( true );" (do "do") (compound_statement "{\n            bVar14 = *(byte *)(iVar33 + 1);\n            iVar33 = *(int *)(pcVar40 + 0x31450);\n            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);\n            if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }\n            while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }\n          }" ({ "{") (expression_statement "bVar14 = *(byte *)(iVar33 + 1);" (assignment_expression "bVar14 = *(byte *)(iVar33 + 1)" (identifier "bVar14") (= "=") (pointer_expression "*(byte *)(iVar33 + 1)" (* "*") (cast_expression "(byte *)(iVar33 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + 1)" (( "(") (binary_expression "iVar33 + 1" (identifier "iVar33") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "iVar33 = *(int *)(pcVar40 + 0x31450);" (assignment_expression "iVar33 = *(int *)(pcVar40 + 0x31450)" (identifier "iVar33") (= "=") (pointer_expression "*(int *)(pcVar40 + 0x31450)" (* "*") (cast_expression "(int *)(pcVar40 + 0x31450)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x31450)" (( "(") (binary_expression "pcVar40 + 0x31450" (identifier "pcVar40") (+ "+") (number_literal "0x31450")) () ")"))))) (; ";")) (expression_statement "uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);" (assignment_expression "uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2)" (identifier "uVar12") (= "=") (pointer_expression "*(ushort *)(iVar33 + (uint)bVar14 * 2)" (* "*") (cast_expression "(ushort *)(iVar33 + (uint)bVar14 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + (uint)bVar14 * 2)" (( "(") (binary_expression "iVar33 + (uint)bVar14 * 2" (identifier "iVar33") (+ "+") (binary_expression "(uint)bVar14 * 2" (cast_expression "(uint)bVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar14")) (* "*") (number_literal "2"))) () ")"))))) (; ";")) (if_statement "if (uVar16 < uVar42) {\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }" (if "if") (parenthesized_expression "(uVar16 < uVar42)" (( "(") (binary_expression "uVar16 < uVar42" (identifier "uVar16") (< "<") (identifier "uVar42")) () ")")) (compound_statement "{\n              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n              do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);\n            }" ({ "{") (expression_statement "pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);" (assignment_expression "pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(iVar34 + uVar16 * iVar9 + iVar4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + uVar16 * iVar9 + iVar4)" (( "(") (binary_expression "iVar34 + uVar16 * iVar9 + iVar4" (binary_expression "iVar34 + uVar16 * iVar9" (identifier "iVar34") (+ "+") (binary_expression "uVar16 * iVar9" (identifier "uVar16") (* "*") (identifier "iVar9"))) (+ "+") (identifier "iVar4")) () ")")))) (; ";")) (do_statement "do {\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              } while (uVar16 < uVar42);" (do "do") (compound_statement "{\n                pbVar27 = (byte *)puVar28[5];\n                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }\n                uVar16 = uVar16 + local_f8;\n                pbVar8 = pbVar8 + local_f8 * iVar9;\n              }" ({ "{") (expression_statement "pbVar27 = (byte *)puVar28[5];" (assignment_expression "pbVar27 = (byte *)puVar28[5]" (identifier "pbVar27") (= "=") (cast_expression "(byte *)puVar28[5]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar28[5]" (identifier "puVar28") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "(**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);" (call_expression "(**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x3168c))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x3168c)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x3168c)" (* "*") (cast_expression "(code **)(pcVar40 + 0x3168c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x3168c)" (( "(") (binary_expression "pcVar40 + 0x3168c" (identifier "pcVar40") (+ "+") (number_literal "0x3168c")) () ")"))))) () ")")) (argument_list "(puVar29,pbVar27,0)" (( "(") (identifier "puVar29") (, ",") (identifier "pbVar27") (, ",") (number_literal "0") () ")"))) (; ";")) (for_statement "for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                    pbVar22 = pbVar22 + iVar10) {\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }" (for "for") (( "(") (assignment_expression "pbVar22 = pbVar8 + (uVar31 - iVar4)" (identifier "pbVar22") (= "=") (binary_expression "pbVar8 + (uVar31 - iVar4)" (identifier "pbVar8") (+ "+") (parenthesized_expression "(uVar31 - iVar4)" (( "(") (binary_expression "uVar31 - iVar4" (identifier "uVar31") (- "-") (identifier "iVar4")) () ")")))) (; ";") (binary_expression "pbVar22 < pbVar8" (identifier "pbVar22") (< "<") (identifier "pbVar8")) (; ";") (assignment_expression "pbVar22 = pbVar22 + iVar10" (identifier "pbVar22") (= "=") (binary_expression "pbVar22 + iVar10" (identifier "pbVar22") (+ "+") (identifier "iVar10"))) () ")") (compound_statement "{\n                  uVar6 = (uint)pbVar27[1];\n                  if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }\n                  pbVar27 = pbVar27 + 2;\n                }" ({ "{") (expression_statement "uVar6 = (uint)pbVar27[1];" (assignment_expression "uVar6 = (uint)pbVar27[1]" (identifier "uVar6") (= "=") (cast_expression "(uint)pbVar27[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar27[1]" (identifier "pbVar27") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (uVar6 == 0) {\n                    *pbVar22 = bVar14;\n                  }\n                  else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    *pbVar22 = bVar14;\n                  }" ({ "{") (expression_statement "*pbVar22 = bVar14;" (assignment_expression "*pbVar22 = bVar14" (pointer_expression "*pbVar22" (* "*") (identifier "pbVar22")) (= "=") (identifier "bVar14")) (; ";")) (} "}")) (else_clause "else {\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }" (else "else") (compound_statement "{\n                    bVar13 = *pbVar27;\n                    if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }\n                    *pbVar22 = bVar13;\n                  }" ({ "{") (expression_statement "bVar13 = *pbVar27;" (assignment_expression "bVar13 = *pbVar27" (identifier "bVar13") (= "=") (pointer_expression "*pbVar27" (* "*") (identifier "pbVar27"))) (; ";")) (if_statement "if (uVar6 != 0xff) {\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }" (if "if") (parenthesized_expression "(uVar6 != 0xff)" (( "(") (binary_expression "uVar6 != 0xff" (identifier "uVar6") (!= "!=") (number_literal "0xff")) () ")")) (compound_statement "{\n                      uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;\n                      uVar36 = uVar6 >> 0xf;\n                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                    }" ({ "{") (expression_statement "uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;" (assignment_expression "uVar6 = (0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6" (identifier "uVar6") (= "=") (binary_expression "(0xff - uVar6) * (uint)uVar12 +\n                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6" (binary_expression "(0xff - uVar6) * (uint)uVar12" (parenthesized_expression "(0xff - uVar6)" (( "(") (binary_expression "0xff - uVar6" (number_literal "0xff") (- "-") (identifier "uVar6")) () ")")) (* "*") (cast_expression "(uint)uVar12" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar12"))) (+ "+") (binary_expression "*(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6" (pointer_expression "*(ushort *)(iVar33 + (uint)bVar13 * 2)" (* "*") (cast_expression "(ushort *)(iVar33 + (uint)bVar13 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + (uint)bVar13 * 2)" (( "(") (binary_expression "iVar33 + (uint)bVar13 * 2" (identifier "iVar33") (+ "+") (binary_expression "(uint)bVar13 * 2" (cast_expression "(uint)bVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar13")) (* "*") (number_literal "2"))) () ")")))) (* "*") (identifier "uVar6")))) (; ";")) (expression_statement "uVar36 = uVar6 >> 0xf;" (assignment_expression "uVar36 = uVar6 >> 0xf" (identifier "uVar36") (= "=") (binary_expression "uVar6 >> 0xf" (identifier "uVar6") (>> ">>") (number_literal "0xf"))) (; ";")) (expression_statement "bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);" (assignment_expression "bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" (identifier "bVar13") (= "=") (call_expression "(byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" (( "(") (binary_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8" (binary_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +\n                                      (uint)*(ushort *)(iVar32 + uVar36 * 2)" (parenthesized_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)" (( "(") (binary_expression "(uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc" (binary_expression "(uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36)" (binary_expression "(uVar6 & 0x7fff) * (uint)" (parenthesized_expression "(uVar6 & 0x7fff)" (( "(") (binary_expression "uVar6 & 0x7fff" (identifier "uVar6") (& "&") (number_literal "0x7fff")) () ")")) (* "*") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)(iVar25 + uVar36)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar25 + uVar36)" (( "(") (binary_expression "iVar25 + uVar36" (identifier "iVar25") (+ "+") (identifier "uVar36")) () ")")))) (>> ">>") (number_literal "0xc")) () ")")) (+ "+") (binary_expression "(uint)*(ushort *)(iVar32 + uVar36 * 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar32 + uVar36 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar32 + uVar36 * 2)" (( "(") (binary_expression "iVar32 + uVar36 * 2" (identifier "iVar32") (+ "+") (binary_expression "uVar36 * 2" (identifier "uVar36") (* "*") (number_literal "2"))) () ")"))))) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (} "}"))) (expression_statement "*pbVar22 = bVar13;" (assignment_expression "*pbVar22 = bVar13" (pointer_expression "*pbVar22" (* "*") (identifier "pbVar22")) (= "=") (identifier "bVar13")) (; ";")) (} "}")))) (expression_statement "pbVar27 = pbVar27 + 2;" (assignment_expression "pbVar27 = pbVar27 + 2" (identifier "pbVar27") (= "=") (binary_expression "pbVar27 + 2" (identifier "pbVar27") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "uVar16 = uVar16 + local_f8;" (assignment_expression "uVar16 = uVar16 + local_f8" (identifier "uVar16") (= "=") (binary_expression "uVar16 + local_f8" (identifier "uVar16") (+ "+") (identifier "local_f8"))) (; ";")) (expression_statement "pbVar8 = pbVar8 + local_f8 * iVar9;" (assignment_expression "pbVar8 = pbVar8 + local_f8 * iVar9" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + local_f8 * iVar9" (identifier "pbVar8") (+ "+") (binary_expression "local_f8 * iVar9" (identifier "local_f8") (* "*") (identifier "iVar9")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar16 < uVar42)" (( "(") (binary_expression "uVar16 < uVar42" (identifier "uVar16") (< "<") (identifier "uVar42")) () ")")) (; ";")) (} "}"))) (while_statement "while( true ) {\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);\n              uVar31 = uVar31 & 7;\n              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);\n              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n              if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }\n              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n              iVar33 = puVar28[4];\n              if (iVar33 != 0) break;\nLAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }\n            }" ({ "{") (do_statement "do {\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);" (do "do") (compound_statement "{\n                if (local_e8 == local_ec) {\n                  return 1;\n                }\n                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n                uVar31 = local_ec + 1;\n                uVar6 = local_ec;\n                local_ec = uVar31;\n                if (uVar16 != 1) goto LAB_000220b0;\nLAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);\n                if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }\n              }" ({ "{") (if_statement "if (local_e8 == local_ec) {\n                  return 1;\n                }" (if "if") (parenthesized_expression "(local_e8 == local_ec)" (( "(") (binary_expression "local_e8 == local_ec" (identifier "local_e8") (== "==") (identifier "local_ec")) () ")")) (compound_statement "{\n                  return 1;\n                }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "uVar16 = (uint)*(byte *)(puVar29 + 0x7f);" (assignment_expression "uVar16 = (uint)*(byte *)(puVar29 + 0x7f)" (identifier "uVar16") (= "=") (binary_expression "(uint)*(byte *)(puVar29 + 0x7f)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(puVar29 + 0x7f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 0x7f)" (( "(") (binary_expression "puVar29 + 0x7f" (identifier "puVar29") (+ "+") (number_literal "0x7f")) () ")"))))) (; ";")) (expression_statement "uVar31 = local_ec + 1;" (assignment_expression "uVar31 = local_ec + 1" (identifier "uVar31") (= "=") (binary_expression "local_ec + 1" (identifier "local_ec") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar6 = local_ec;" (assignment_expression "uVar6 = local_ec" (identifier "uVar6") (= "=") (identifier "local_ec")) (; ";")) (expression_statement "local_ec = uVar31;" (assignment_expression "local_ec = uVar31" (identifier "local_ec") (= "=") (identifier "uVar31")) (; ";")) (if_statement "if (uVar16 != 1) goto LAB_000220b0;" (if "if") (parenthesized_expression "(uVar16 != 1)" (( "(") (binary_expression "uVar16 != 1" (identifier "uVar16") (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_000220b0;" (goto "goto") (statement_identifier "LAB_000220b0") (; ";"))) (labeled_statement "LAB_00022214:\n                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);" (statement_identifier "LAB_00022214") (: ":") (expression_statement "uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);" (assignment_expression "uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f)" (identifier "uVar31") (= "=") (binary_expression "(uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f)" (parenthesized_expression "(uVar6 & 1)" (( "(") (binary_expression "uVar6 & 1" (identifier "uVar6") (& "&") (number_literal "1")) () ")")) (<< "<<") (parenthesized_expression "(3U - ((int)local_ec >> 1) & 0x1f)" (( "(") (binary_expression "3U - ((int)local_ec >> 1) & 0x1f" (binary_expression "3U - ((int)local_ec >> 1)" (number_literal "3U") (- "-") (parenthesized_expression "((int)local_ec >> 1)" (( "(") (binary_expression "(int)local_ec >> 1" (cast_expression "(int)local_ec" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_ec")) (>> ">>") (number_literal "1")) () ")"))) (& "&") (number_literal "0x1f")) () ")")))) (; ";"))) (if_statement "if (uVar6 < 2) {\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }\n                else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }" (if "if") (parenthesized_expression "(uVar6 < 2)" (( "(") (binary_expression "uVar6 < 2" (identifier "uVar6") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n                  uVar16 = ~uVar31 & 7;\n                  uVar36 = 3;\n                }" ({ "{") (expression_statement "uVar16 = ~uVar31 & 7;" (assignment_expression "uVar16 = ~uVar31 & 7" (identifier "uVar16") (= "=") (binary_expression "~uVar31 & 7" (unary_expression "~uVar31" (~ "~") (identifier "uVar31")) (& "&") (number_literal "7"))) (; ";")) (expression_statement "uVar36 = 3;" (assignment_expression "uVar36 = 3" (identifier "uVar36") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else {\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }" (else "else") (compound_statement "{\n                  uVar36 = (int)(8 - local_ec) >> 1;\n                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);\n                }" ({ "{") (expression_statement "uVar36 = (int)(8 - local_ec) >> 1;" (assignment_expression "uVar36 = (int)(8 - local_ec) >> 1" (identifier "uVar36") (= "=") (binary_expression "(int)(8 - local_ec) >> 1" (cast_expression "(int)(8 - local_ec)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(8 - local_ec)" (( "(") (binary_expression "8 - local_ec" (number_literal "8") (- "-") (identifier "local_ec")) () ")"))) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);" (assignment_expression "uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7)" (identifier "uVar16") (= "=") (binary_expression "((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7)" (parenthesized_expression "((uVar16 << (uVar36 & 0x1f)) + -1)" (( "(") (binary_expression "(uVar16 << (uVar36 & 0x1f)) + -1" (parenthesized_expression "(uVar16 << (uVar36 & 0x1f))" (( "(") (binary_expression "uVar16 << (uVar36 & 0x1f)" (identifier "uVar16") (<< "<<") (parenthesized_expression "(uVar36 & 0x1f)" (( "(") (binary_expression "uVar36 & 0x1f" (identifier "uVar36") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (+ "+") (number_literal "-1")) () ")")) (- "-") (parenthesized_expression "(uVar31 & 7)" (( "(") (binary_expression "uVar31 & 7" (identifier "uVar31") (& "&") (number_literal "7")) () ")")))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "(uVar16 + iVar4 >> (uVar36 & 0x1f) == 0)" (( "(") (binary_expression "uVar16 + iVar4 >> (uVar36 & 0x1f) == 0" (binary_expression "uVar16 + iVar4 >> (uVar36 & 0x1f)" (binary_expression "uVar16 + iVar4" (identifier "uVar16") (+ "+") (identifier "iVar4")) (>> ">>") (parenthesized_expression "(uVar36 & 0x1f)" (( "(") (binary_expression "uVar36 & 0x1f" (identifier "uVar36") (& "&") (number_literal "0x1f")) () ")"))) (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar31 = uVar31 & 7;" (assignment_expression "uVar31 = uVar31 & 7" (identifier "uVar31") (= "=") (binary_expression "uVar31 & 7" (identifier "uVar31") (& "&") (number_literal "7"))) (; ";")) (expression_statement "iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);" (assignment_expression "iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU)" (identifier "iVar10") (= "=") (binary_expression "1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU)" (number_literal "1") (<< "<<") (parenthesized_expression "((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU)" (( "(") (binary_expression "(int)(8 - (uVar6 + 1)) >> 1 & 0x1fU" (binary_expression "(int)(8 - (uVar6 + 1)) >> 1" (cast_expression "(int)(8 - (uVar6 + 1))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(8 - (uVar6 + 1))" (( "(") (binary_expression "8 - (uVar6 + 1)" (number_literal "8") (- "-") (parenthesized_expression "(uVar6 + 1)" (( "(") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1")) () ")"))) () ")"))) (>> ">>") (number_literal "1")) (& "&") (number_literal "0x1fU")) () ")")))) (; ";")) (expression_statement "uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;" (assignment_expression "uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7" (identifier "uVar16") (= "=") (binary_expression "(~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7" (binary_expression "(~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f)" (parenthesized_expression "(~uVar6 & 1)" (( "(") (binary_expression "~uVar6 & 1" (unary_expression "~uVar6" (~ "~") (identifier "uVar6")) (& "&") (number_literal "1")) () ")")) (<< "<<") (parenthesized_expression "(3U - ((int)uVar6 >> 1) & 0x1f)" (( "(") (binary_expression "3U - ((int)uVar6 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar6 >> 1)" (number_literal "3U") (- "-") (parenthesized_expression "((int)uVar6 >> 1)" (( "(") (binary_expression "(int)uVar6 >> 1" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "1")) () ")"))) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "7"))) (; ";")) (if_statement "if (uVar6 < 3) {\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }" (if "if") (parenthesized_expression "(uVar6 < 3)" (( "(") (binary_expression "uVar6 < 3" (identifier "uVar6") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n                local_f8 = 8;\n                goto LAB_000220c4;\n              }" ({ "{") (expression_statement "local_f8 = 8;" (assignment_expression "local_f8 = 8" (identifier "local_f8") (= "=") (number_literal "8")) (; ";")) (goto_statement "goto LAB_000220c4;" (goto "goto") (statement_identifier "LAB_000220c4") (; ";")) (} "}"))) (expression_statement "local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);" (assignment_expression "local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU)" (identifier "local_f8") (= "=") (binary_expression "8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU)" (number_literal "8") (>> ">>") (parenthesized_expression "((int)(uVar6 - 1) >> 1 & 0x1fU)" (( "(") (binary_expression "(int)(uVar6 - 1) >> 1 & 0x1fU" (binary_expression "(int)(uVar6 - 1) >> 1" (cast_expression "(int)(uVar6 - 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar6 - 1)" (( "(") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1")) () ")"))) (>> ">>") (number_literal "1")) (& "&") (number_literal "0x1fU")) () ")")))) (; ";")) (expression_statement "iVar33 = puVar28[4];" (assignment_expression "iVar33 = puVar28[4]" (identifier "iVar33") (= "=") (subscript_expression "puVar28[4]" (identifier "puVar28") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (iVar33 != 0) break;" (if "if") (parenthesized_expression "(iVar33 != 0)" (( "(") (binary_expression "iVar33 != 0" (identifier "iVar33") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_000222bc:\n              if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }" (statement_identifier "LAB_000222bc") (: ":") (if_statement "if (uVar16 < uVar42) {\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }" (if "if") (parenthesized_expression "(uVar16 < uVar42)" (( "(") (binary_expression "uVar16 < uVar42" (identifier "uVar16") (< "<") (identifier "uVar42")) () ")")) (compound_statement "{\n                iVar33 = *(int *)(pcVar40 + 0x31450);\n                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);\n                do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);\n              }" ({ "{") (expression_statement "iVar33 = *(int *)(pcVar40 + 0x31450);" (assignment_expression "iVar33 = *(int *)(pcVar40 + 0x31450)" (identifier "iVar33") (= "=") (pointer_expression "*(int *)(pcVar40 + 0x31450)" (* "*") (cast_expression "(int *)(pcVar40 + 0x31450)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x31450)" (( "(") (binary_expression "pcVar40 + 0x31450" (identifier "pcVar40") (+ "+") (number_literal "0x31450")) () ")"))))) (; ";")) (expression_statement "pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);" (assignment_expression "pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(iVar34 + uVar16 * iVar9 + iVar4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar34 + uVar16 * iVar9 + iVar4)" (( "(") (binary_expression "iVar34 + uVar16 * iVar9 + iVar4" (binary_expression "iVar34 + uVar16 * iVar9" (identifier "iVar34") (+ "+") (binary_expression "uVar16 * iVar9" (identifier "uVar16") (* "*") (identifier "iVar9"))) (+ "+") (identifier "iVar4")) () ")")))) (; ";")) (do_statement "do {\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                } while (uVar16 < uVar42);" (do "do") (compound_statement "{\n                  pbVar27 = (byte *)puVar28[5];\n                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);\n                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }\n                  uVar16 = uVar16 + local_f8;\n                  pbVar8 = pbVar8 + local_f8 * iVar9;\n                }" ({ "{") (expression_statement "pbVar27 = (byte *)puVar28[5];" (assignment_expression "pbVar27 = (byte *)puVar28[5]" (identifier "pbVar27") (= "=") (cast_expression "(byte *)puVar28[5]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar28[5]" (identifier "puVar28") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "(**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);" (call_expression "(**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x3168c))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x3168c)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x3168c)" (* "*") (cast_expression "(code **)(pcVar40 + 0x3168c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x3168c)" (( "(") (binary_expression "pcVar40 + 0x3168c" (identifier "pcVar40") (+ "+") (number_literal "0x3168c")) () ")"))))) () ")")) (argument_list "(puVar29,pbVar27,0)" (( "(") (identifier "puVar29") (, ",") (identifier "pbVar27") (, ",") (number_literal "0") () ")"))) (; ";")) (for_statement "for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;\n                      pbVar22 = pbVar22 + iVar10) {\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }" (for "for") (( "(") (assignment_expression "pbVar22 = pbVar8 + (uVar31 - iVar4)" (identifier "pbVar22") (= "=") (binary_expression "pbVar8 + (uVar31 - iVar4)" (identifier "pbVar8") (+ "+") (parenthesized_expression "(uVar31 - iVar4)" (( "(") (binary_expression "uVar31 - iVar4" (identifier "uVar31") (- "-") (identifier "iVar4")) () ")")))) (; ";") (binary_expression "pbVar22 < pbVar8" (identifier "pbVar22") (< "<") (identifier "pbVar8")) (; ";") (assignment_expression "pbVar22 = pbVar22 + iVar10" (identifier "pbVar22") (= "=") (binary_expression "pbVar22 + iVar10" (identifier "pbVar22") (+ "+") (identifier "iVar10"))) () ")") (compound_statement "{\n                    uVar6 = (uint)pbVar27[1];\n                    if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }\n                    pbVar27 = pbVar27 + 2;\n                  }" ({ "{") (expression_statement "uVar6 = (uint)pbVar27[1];" (assignment_expression "uVar6 = (uint)pbVar27[1]" (identifier "uVar6") (= "=") (cast_expression "(uint)pbVar27[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar27[1]" (identifier "pbVar27") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (uVar6 != 0) {\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }" (if "if") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      bVar14 = *pbVar27;\n                      if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }\n                      *pbVar22 = bVar14;\n                    }" ({ "{") (expression_statement "bVar14 = *pbVar27;" (assignment_expression "bVar14 = *pbVar27" (identifier "bVar14") (= "=") (pointer_expression "*pbVar27" (* "*") (identifier "pbVar27"))) (; ";")) (if_statement "if (uVar6 != 0xff) {\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }" (if "if") (parenthesized_expression "(uVar6 != 0xff)" (( "(") (binary_expression "uVar6 != 0xff" (identifier "uVar6") (!= "!=") (number_literal "0xff")) () ")")) (compound_statement "{\n                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;\n                        uVar36 = uVar6 >> 0xf;\n                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);\n                      }" ({ "{") (expression_statement "uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;" (assignment_expression "uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6" (identifier "uVar6") (= "=") (binary_expression "(uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +\n                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6" (binary_expression "(uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6)" (binary_expression "(uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar33 + (uint)*pbVar22 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + (uint)*pbVar22 * 2)" (( "(") (binary_expression "iVar33 + (uint)*pbVar22 * 2" (identifier "iVar33") (+ "+") (binary_expression "(uint)*pbVar22 * 2" (binary_expression "(uint)*pbVar22" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar22")) (* "*") (number_literal "2"))) () ")")))) (* "*") (parenthesized_expression "(0xff - uVar6)" (( "(") (binary_expression "0xff - uVar6" (number_literal "0xff") (- "-") (identifier "uVar6")) () ")"))) (+ "+") (binary_expression "*(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6" (pointer_expression "*(ushort *)(iVar33 + (uint)bVar14 * 2)" (* "*") (cast_expression "(ushort *)(iVar33 + (uint)bVar14 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar33 + (uint)bVar14 * 2)" (( "(") (binary_expression "iVar33 + (uint)bVar14 * 2" (identifier "iVar33") (+ "+") (binary_expression "(uint)bVar14 * 2" (cast_expression "(uint)bVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar14")) (* "*") (number_literal "2"))) () ")")))) (* "*") (identifier "uVar6")))) (; ";")) (expression_statement "uVar36 = uVar6 >> 0xf;" (assignment_expression "uVar36 = uVar6 >> 0xf" (identifier "uVar36") (= "=") (binary_expression "uVar6 >> 0xf" (identifier "uVar6") (>> ">>") (number_literal "0xf"))) (; ";")) (expression_statement "bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);" (assignment_expression "bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" (identifier "bVar14") (= "=") (call_expression "(byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8)" (( "(") (binary_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8" (binary_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)\n                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2)" (parenthesized_expression "((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)" (( "(") (binary_expression "(uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc" (binary_expression "(uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36)" (binary_expression "(uVar6 & 0x7fff) * (uint)" (parenthesized_expression "(uVar6 & 0x7fff)" (( "(") (binary_expression "uVar6 & 0x7fff" (identifier "uVar6") (& "&") (number_literal "0x7fff")) () ")")) (* "*") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)(iVar25 + uVar36)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar25 + uVar36)" (( "(") (binary_expression "iVar25 + uVar36" (identifier "iVar25") (+ "+") (identifier "uVar36")) () ")")))) (>> ">>") (number_literal "0xc")) () ")")) (+ "+") (binary_expression "(uint)*(ushort *)(iVar32 + uVar36 * 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar32 + uVar36 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar32 + uVar36 * 2)" (( "(") (binary_expression "iVar32 + uVar36 * 2" (identifier "iVar32") (+ "+") (binary_expression "uVar36 * 2" (identifier "uVar36") (* "*") (number_literal "2"))) () ")"))))) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (} "}"))) (expression_statement "*pbVar22 = bVar14;" (assignment_expression "*pbVar22 = bVar14" (pointer_expression "*pbVar22" (* "*") (identifier "pbVar22")) (= "=") (identifier "bVar14")) (; ";")) (} "}"))) (expression_statement "pbVar27 = pbVar27 + 2;" (assignment_expression "pbVar27 = pbVar27 + 2" (identifier "pbVar27") (= "=") (binary_expression "pbVar27 + 2" (identifier "pbVar27") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "uVar16 = uVar16 + local_f8;" (assignment_expression "uVar16 = uVar16 + local_f8" (identifier "uVar16") (= "=") (binary_expression "uVar16 + local_f8" (identifier "uVar16") (+ "+") (identifier "local_f8"))) (; ";")) (expression_statement "pbVar8 = pbVar8 + local_f8 * iVar9;" (assignment_expression "pbVar8 = pbVar8 + local_f8 * iVar9" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + local_f8 * iVar9" (identifier "pbVar8") (+ "+") (binary_expression "local_f8 * iVar9" (identifier "local_f8") (* "*") (identifier "iVar9")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar16 < uVar42)" (( "(") (binary_expression "uVar16 < uVar42" (identifier "uVar16") (< "<") (identifier "uVar42")) () ")")) (; ";")) (} "}")))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (if_statement "if (cVar15 == '\x10') {\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }" (if "if") (parenthesized_expression "(cVar15 == '\x10')" (( "(") (binary_expression "cVar15 == '\x10'" (identifier "cVar15") (== "==") (char_literal "'\x10'" (' "'") (escape_sequence "\x10") (' "'"))) () ")")) (compound_statement "{\n          iVar32 = puVar28[6];\n          iVar9 = (uVar6 & 1) + 1;\n          uVar36 = uVar6 & 0x21 ^ 0x21;\n          iVar34 = ((int)puVar28[7] / 2) * 2;\n          local_f4 = 1;\n          uVar31 = 0;\n          if (uVar16 != 1) goto LAB_00021ecc;\nLAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);\n          if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }\n          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }\n          do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );\n        }" ({ "{") (expression_statement "iVar32 = puVar28[6];" (assignment_expression "iVar32 = puVar28[6]" (identifier "iVar32") (= "=") (subscript_expression "puVar28[6]" (identifier "puVar28") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "iVar9 = (uVar6 & 1) + 1;" (assignment_expression "iVar9 = (uVar6 & 1) + 1" (identifier "iVar9") (= "=") (binary_expression "(uVar6 & 1) + 1" (parenthesized_expression "(uVar6 & 1)" (( "(") (binary_expression "uVar6 & 1" (identifier "uVar6") (& "&") (number_literal "1")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar36 = uVar6 & 0x21 ^ 0x21;" (assignment_expression "uVar36 = uVar6 & 0x21 ^ 0x21" (identifier "uVar36") (= "=") (binary_expression "uVar6 & 0x21 ^ 0x21" (binary_expression "uVar6 & 0x21" (identifier "uVar6") (& "&") (number_literal "0x21")) (^ "^") (number_literal "0x21"))) (; ";")) (expression_statement "iVar34 = ((int)puVar28[7] / 2) * 2;" (assignment_expression "iVar34 = ((int)puVar28[7] / 2) * 2" (identifier "iVar34") (= "=") (binary_expression "((int)puVar28[7] / 2) * 2" (parenthesized_expression "((int)puVar28[7] / 2)" (( "(") (binary_expression "(int)puVar28[7] / 2" (cast_expression "(int)puVar28[7]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar28[7]" (identifier "puVar28") ([ "[") (number_literal "7") (] "]"))) (/ "/") (number_literal "2")) () ")")) (* "*") (number_literal "2"))) (; ";")) (expression_statement "local_f4 = 1;" (assignment_expression "local_f4 = 1" (identifier "local_f4") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" (identifier "uVar31") (= "=") (number_literal "0")) (; ";")) (if_statement "if (uVar16 != 1) goto LAB_00021ecc;" (if "if") (parenthesized_expression "(uVar16 != 1)" (( "(") (binary_expression "uVar16 != 1" (identifier "uVar16") (!= "!=") (number_literal "1")) () ")")) (goto_statement "goto LAB_00021ecc;" (goto "goto") (statement_identifier "LAB_00021ecc") (; ";"))) (labeled_statement "LAB_00021e54:\n          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);" (statement_identifier "LAB_00021e54") (: ":") (expression_statement "uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);" (assignment_expression "uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f)" (identifier "uVar26") (= "=") (binary_expression "(uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f)" (parenthesized_expression "(uVar31 & 1)" (( "(") (binary_expression "uVar31 & 1" (identifier "uVar31") (& "&") (number_literal "1")) () ")")) (<< "<<") (parenthesized_expression "(3U - ((int)local_f4 >> 1) & 0x1f)" (( "(") (binary_expression "3U - ((int)local_f4 >> 1) & 0x1f" (binary_expression "3U - ((int)local_f4 >> 1)" (number_literal "3U") (- "-") (parenthesized_expression "((int)local_f4 >> 1)" (( "(") (binary_expression "(int)local_f4 >> 1" (cast_expression "(int)local_f4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_f4")) (>> ">>") (number_literal "1")) () ")"))) (& "&") (number_literal "0x1f")) () ")")))) (; ";"))) (if_statement "if (uVar31 < 2) {\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }\n          else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }" (if "if") (parenthesized_expression "(uVar31 < 2)" (( "(") (binary_expression "uVar31 < 2" (identifier "uVar31") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n            uVar16 = ~uVar26 & 7;\n            uVar7 = 3;\n          }" ({ "{") (expression_statement "uVar16 = ~uVar26 & 7;" (assignment_expression "uVar16 = ~uVar26 & 7" (identifier "uVar16") (= "=") (binary_expression "~uVar26 & 7" (unary_expression "~uVar26" (~ "~") (identifier "uVar26")) (& "&") (number_literal "7"))) (; ";")) (expression_statement "uVar7 = 3;" (assignment_expression "uVar7 = 3" (identifier "uVar7") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else {\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }" (else "else") (compound_statement "{\n            uVar7 = (int)(8 - local_f4) >> 1;\n            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);\n          }" ({ "{") (expression_statement "uVar7 = (int)(8 - local_f4) >> 1;" (assignment_expression "uVar7 = (int)(8 - local_f4) >> 1" (identifier "uVar7") (= "=") (binary_expression "(int)(8 - local_f4) >> 1" (cast_expression "(int)(8 - local_f4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(8 - local_f4)" (( "(") (binary_expression "8 - local_f4" (number_literal "8") (- "-") (identifier "local_f4")) () ")"))) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);" (assignment_expression "uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7)" (identifier "uVar16") (= "=") (binary_expression "((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7)" (parenthesized_expression "((uVar16 << (uVar7 & 0x1f)) + -1)" (( "(") (binary_expression "(uVar16 << (uVar7 & 0x1f)) + -1" (parenthesized_expression "(uVar16 << (uVar7 & 0x1f))" (( "(") (binary_expression "uVar16 << (uVar7 & 0x1f)" (identifier "uVar16") (<< "<<") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (+ "+") (number_literal "-1")) () ")")) (- "-") (parenthesized_expression "(uVar26 & 7)" (( "(") (binary_expression "uVar26 & 7" (identifier "uVar26") (& "&") (number_literal "7")) () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }" (if "if") (parenthesized_expression "(uVar16 + iVar4 >> (uVar7 & 0x1f) != 0)" (( "(") (binary_expression "uVar16 + iVar4 >> (uVar7 & 0x1f) != 0" (binary_expression "uVar16 + iVar4 >> (uVar7 & 0x1f)" (binary_expression "uVar16 + iVar4" (identifier "uVar16") (+ "+") (identifier "iVar4")) (>> ">>") (parenthesized_expression "(uVar7 & 0x1f)" (( "(") (binary_expression "uVar7 & 0x1f" (identifier "uVar7") (& "&") (number_literal "0x1f")) () ")"))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;\n            iVar10 = (uVar26 & 7) * iVar9;\n            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);\n            if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }\n            local_100 = 8;\n            goto LAB_00021edc;\n          }" ({ "{") (expression_statement "uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;" (assignment_expression "uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7" (identifier "uVar16") (= "=") (binary_expression "(~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7" (binary_expression "(~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f)" (parenthesized_expression "(~uVar31 & 1)" (( "(") (binary_expression "~uVar31 & 1" (unary_expression "~uVar31" (~ "~") (identifier "uVar31")) (& "&") (number_literal "1")) () ")")) (<< "<<") (parenthesized_expression "(3U - ((int)uVar31 >> 1) & 0x1f)" (( "(") (binary_expression "3U - ((int)uVar31 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar31 >> 1)" (number_literal "3U") (- "-") (parenthesized_expression "((int)uVar31 >> 1)" (( "(") (binary_expression "(int)uVar31 >> 1" (cast_expression "(int)uVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar31")) (>> ">>") (number_literal "1")) () ")"))) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "7"))) (; ";")) (expression_statement "iVar10 = (uVar26 & 7) * iVar9;" (assignment_expression "iVar10 = (uVar26 & 7) * iVar9" (identifier "iVar10") (= "=") (binary_expression "(uVar26 & 7) * iVar9" (parenthesized_expression "(uVar26 & 7)" (( "(") (binary_expression "uVar26 & 7" (identifier "uVar26") (& "&") (number_literal "7")) () ")")) (* "*") (identifier "iVar9"))) (; ";")) (expression_statement "iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);" (assignment_expression "iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU)" (identifier "iVar25") (= "=") (binary_expression "iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU)" (identifier "iVar9") (<< "<<") (parenthesized_expression "((int)(8 - local_f4) >> 1 & 0x1fU)" (( "(") (binary_expression "(int)(8 - local_f4) >> 1 & 0x1fU" (binary_expression "(int)(8 - local_f4) >> 1" (cast_expression "(int)(8 - local_f4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(8 - local_f4)" (( "(") (binary_expression "8 - local_f4" (number_literal "8") (- "-") (identifier "local_f4")) () ")"))) (>> ">>") (number_literal "1")) (& "&") (number_literal "0x1fU")) () ")")))) (; ";")) (if_statement "if (2 < uVar31) {\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }" (if "if") (parenthesized_expression "(2 < uVar31)" (( "(") (binary_expression "2 < uVar31" (number_literal "2") (< "<") (identifier "uVar31")) () ")")) (compound_statement "{\n              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);\n              goto LAB_00021edc;\n            }" ({ "{") (expression_statement "local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);" (assignment_expression "local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU)" (identifier "local_100") (= "=") (binary_expression "8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU)" (number_literal "8") (>> ">>") (parenthesized_expression "((int)(uVar31 - 1) >> 1 & 0x1fU)" (( "(") (binary_expression "(int)(uVar31 - 1) >> 1 & 0x1fU" (binary_expression "(int)(uVar31 - 1) >> 1" (cast_expression "(int)(uVar31 - 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar31 - 1)" (( "(") (binary_expression "uVar31 - 1" (identifier "uVar31") (- "-") (number_literal "1")) () ")"))) (>> ">>") (number_literal "1")) (& "&") (number_literal "0x1fU")) () ")")))) (; ";")) (goto_statement "goto LAB_00021edc;" (goto "goto") (statement_identifier "LAB_00021edc") (; ";")) (} "}"))) (expression_statement "local_100 = 8;" (assignment_expression "local_100 = 8" (identifier "local_100") (= "=") (number_literal "8")) (; ";")) (goto_statement "goto LAB_00021edc;" (goto "goto") (statement_identifier "LAB_00021edc") (; ";")) (} "}"))) (do_statement "do {\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          } while( true );" (do "do") (compound_statement "{\n            if (local_e8 == local_f4) {\n              return 1;\n            }\n            while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }\n          }" ({ "{") (if_statement "if (local_e8 == local_f4) {\n              return 1;\n            }" (if "if") (parenthesized_expression "(local_e8 == local_f4)" (( "(") (binary_expression "local_e8 == local_f4" (identifier "local_e8") (== "==") (identifier "local_f4")) () ")")) (compound_statement "{\n              return 1;\n            }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (while_statement "while( true ) {\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);\n              uVar26 = local_f4 + 1;\n              uVar31 = local_f4;\n              local_f4 = uVar26;\n              if (uVar16 == 1) goto LAB_00021e54;\nLAB_00021ecc:\n              uVar16 = 0;\n              iVar10 = 0;\n              local_100 = 1;\n              iVar25 = iVar9;\nLAB_00021edc:\n              if (uVar42 <= uVar16) break;\n              puVar21 = (ushort *)puVar28[5];\n              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;\n              pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);\n              if (local_e8 == local_f4) {\n                return 1;\n              }\n            }" ({ "{") (expression_statement "uVar16 = (uint)*(byte *)(puVar29 + 0x7f);" (assignment_expression "uVar16 = (uint)*(byte *)(puVar29 + 0x7f)" (identifier "uVar16") (= "=") (binary_expression "(uint)*(byte *)(puVar29 + 0x7f)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(puVar29 + 0x7f)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 0x7f)" (( "(") (binary_expression "puVar29 + 0x7f" (identifier "puVar29") (+ "+") (number_literal "0x7f")) () ")"))))) (; ";")) (expression_statement "uVar26 = local_f4 + 1;" (assignment_expression "uVar26 = local_f4 + 1" (identifier "uVar26") (= "=") (binary_expression "local_f4 + 1" (identifier "local_f4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar31 = local_f4;" (assignment_expression "uVar31 = local_f4" (identifier "uVar31") (= "=") (identifier "local_f4")) (; ";")) (expression_statement "local_f4 = uVar26;" (assignment_expression "local_f4 = uVar26" (identifier "local_f4") (= "=") (identifier "uVar26")) (; ";")) (if_statement "if (uVar16 == 1) goto LAB_00021e54;" (if "if") (parenthesized_expression "(uVar16 == 1)" (( "(") (binary_expression "uVar16 == 1" (identifier "uVar16") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00021e54;" (goto "goto") (statement_identifier "LAB_00021e54") (; ";"))) (labeled_statement "LAB_00021ecc:\n              uVar16 = 0;" (statement_identifier "LAB_00021ecc") (: ":") (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" (identifier "uVar16") (= "=") (number_literal "0")) (; ";"))) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_100 = 1;" (assignment_expression "local_100 = 1" (identifier "local_100") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar25 = iVar9;" (assignment_expression "iVar25 = iVar9" (identifier "iVar25") (= "=") (identifier "iVar9")) (; ";")) (labeled_statement "LAB_00021edc:\n              if (uVar42 <= uVar16) break;" (statement_identifier "LAB_00021edc") (: ":") (if_statement "if (uVar42 <= uVar16) break;" (if "if") (parenthesized_expression "(uVar42 <= uVar16)" (( "(") (binary_expression "uVar42 <= uVar16" (identifier "uVar42") (<= "<=") (identifier "uVar16")) () ")")) (break_statement "break;" (break "break") (; ";")))) (expression_statement "puVar21 = (ushort *)puVar28[5];" (assignment_expression "puVar21 = (ushort *)puVar28[5]" (identifier "puVar21") (= "=") (cast_expression "(ushort *)puVar28[5]" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar28[5]" (identifier "puVar28") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;" (assignment_expression "uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2" (identifier "uVar31") (= "=") (binary_expression "iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2" (binary_expression "iVar32 + iVar34 * uVar16" (identifier "iVar32") (+ "+") (binary_expression "iVar34 * uVar16" (identifier "iVar34") (* "*") (identifier "uVar16"))) (+ "+") (binary_expression "iVar4 * iVar9 * 2" (binary_expression "iVar4 * iVar9" (identifier "iVar4") (* "*") (identifier "iVar9")) (* "*") (number_literal "2")))) (; ";")) (expression_statement "pcVar41 = *(code **)(pcVar40 + 0x3168c);" (assignment_expression "pcVar41 = *(code **)(pcVar40 + 0x3168c)" (identifier "pcVar41") (= "=") (pointer_expression "*(code **)(pcVar40 + 0x3168c)" (* "*") (cast_expression "(code **)(pcVar40 + 0x3168c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x3168c)" (( "(") (binary_expression "pcVar40 + 0x3168c" (identifier "pcVar40") (+ "+") (number_literal "0x3168c")) () ")"))))) (; ";")) (do_statement "do {\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              } while (uVar16 < uVar42);" (do "do") (compound_statement "{\n                (*pcVar41)(puVar29,puVar21,0);\n                puVar21 = (ushort *)puVar28[5];\n                puVar23 = puVar21;\n                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }\n                uVar16 = uVar16 + local_100;\n                uVar31 = uVar31 + iVar34 * local_100;\n                pcVar41 = *(code **)(pcVar40 + 0x3168c);\n              }" ({ "{") (expression_statement "(*pcVar41)(puVar29,puVar21,0);" (call_expression "(*pcVar41)(puVar29,puVar21,0)" (parenthesized_expression "(*pcVar41)" (( "(") (pointer_expression "*pcVar41" (* "*") (identifier "pcVar41")) () ")")) (argument_list "(puVar29,puVar21,0)" (( "(") (identifier "puVar29") (, ",") (identifier "puVar21") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "puVar21 = (ushort *)puVar28[5];" (assignment_expression "puVar21 = (ushort *)puVar28[5]" (identifier "puVar21") (= "=") (cast_expression "(ushort *)puVar28[5]" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar28[5]" (identifier "puVar28") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "puVar23 = puVar21;" (assignment_expression "puVar23 = puVar21" (identifier "puVar23") (= "=") (identifier "puVar21")) (; ";")) (for_statement "for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;\n                    uVar26 = uVar26 + iVar25 * 2) {\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }" (for "for") (( "(") (assignment_expression "uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31" (identifier "uVar26") (= "=") (binary_expression "iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31" (binary_expression "iVar10 * 2 + iVar4 * iVar9 * -2" (binary_expression "iVar10 * 2" (identifier "iVar10") (* "*") (number_literal "2")) (+ "+") (binary_expression "iVar4 * iVar9 * -2" (binary_expression "iVar4 * iVar9" (identifier "iVar4") (* "*") (identifier "iVar9")) (* "*") (number_literal "-2"))) (+ "+") (identifier "uVar31"))) (; ";") (binary_expression "uVar26 < uVar31" (identifier "uVar26") (< "<") (identifier "uVar31")) (; ";") (assignment_expression "uVar26 = uVar26 + iVar25 * 2" (identifier "uVar26") (= "=") (binary_expression "uVar26 + iVar25 * 2" (identifier "uVar26") (+ "+") (binary_expression "iVar25 * 2" (identifier "iVar25") (* "*") (number_literal "2")))) () ")") (compound_statement "{\n                  uVar2 = puVar23[1];\n                  uVar7 = (uint)uVar2;\n                  uVar12 = *puVar23;\n                  if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }\n                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;\n                  if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }\n                  puVar23 = puVar23 + 2;\n                }" ({ "{") (expression_statement "uVar2 = puVar23[1];" (assignment_expression "uVar2 = puVar23[1]" (identifier "uVar2") (= "=") (subscript_expression "puVar23[1]" (identifier "puVar23") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar7 = (uint)uVar2;" (assignment_expression "uVar7 = (uint)uVar2" (identifier "uVar7") (= "=") (cast_expression "(uint)uVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "uVar2"))) (; ";")) (expression_statement "uVar12 = *puVar23;" (assignment_expression "uVar12 = *puVar23" (identifier "uVar12") (= "=") (pointer_expression "*puVar23" (* "*") (identifier "puVar23"))) (; ";")) (if_statement "if (uVar7 == 0) {\n                    uVar12 = 0;\n                  }\n                  else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }" (if "if") (parenthesized_expression "(uVar7 == 0)" (( "(") (binary_expression "uVar7 == 0" (identifier "uVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    uVar12 = 0;\n                  }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }" (else "else") (if_statement "if (uVar7 != 0xffff) {\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }" (if "if") (parenthesized_expression "(uVar7 != 0xffff)" (( "(") (binary_expression "uVar7 != 0xffff" (identifier "uVar7") (!= "!=") (number_literal "0xffff")) () ")")) (compound_statement "{\n                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);\n                  }" ({ "{") (expression_statement "uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10);" (assignment_expression "uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10)" (identifier "uVar12") (= "=") (call_expression "(ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10)" (parenthesized_expression "(ushort)" (( "(") (identifier "ushort") () ")")) (argument_list "((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10)" (( "(") (binary_expression "(uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1) >> 0x10" (call_expression "(uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1)" (( "(") (binary_expression "(int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20) << 1" (cast_expression "(int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20)" (( "(") (binary_expression "(ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001\n                                                  >> 0x20" (binary_expression "(ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001" (call_expression "(ulonglong)(uVar7 * uVar12 + 0x7fff)" (parenthesized_expression "(ulonglong)" (( "(") (identifier "ulonglong") () ")")) (argument_list "(uVar7 * uVar12 + 0x7fff)" (( "(") (binary_expression "uVar7 * uVar12 + 0x7fff" (binary_expression "uVar7 * uVar12" (identifier "uVar7") (* "*") (identifier "uVar12")) (+ "+") (number_literal "0x7fff")) () ")"))) (* "*") (number_literal "0x80008001")) (>> ">>") (number_literal "0x20")) () ")"))) (<< "<<") (number_literal "1")) () ")"))) (>> ">>") (number_literal "0x10")) () ")")))) (; ";")) (} "}"))))) (expression_statement "*(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;" (assignment_expression "*(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12" (pointer_expression "*(ushort *)((uint)(uVar36 == 0) * 2 + uVar26)" (* "*") (cast_expression "(ushort *)((uint)(uVar36 == 0) * 2 + uVar26)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(uVar36 == 0) * 2 + uVar26)" (( "(") (binary_expression "(uint)(uVar36 == 0) * 2 + uVar26" (binary_expression "(uint)(uVar36 == 0) * 2" (call_expression "(uint)(uVar36 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar36 == 0)" (( "(") (binary_expression "uVar36 == 0" (identifier "uVar36") (== "==") (number_literal "0")) () ")"))) (* "*") (number_literal "2")) (+ "+") (identifier "uVar26")) () ")")))) (= "=") (identifier "uVar12")) (; ";")) (if_statement "if ((uVar6 & 1) != 0) {\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }" (if "if") (parenthesized_expression "((uVar6 & 1) != 0)" (( "(") (binary_expression "(uVar6 & 1) != 0" (parenthesized_expression "(uVar6 & 1)" (( "(") (binary_expression "uVar6 & 1" (identifier "uVar6") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;\n                  }" ({ "{") (expression_statement "*(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;" (assignment_expression "*(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2" (pointer_expression "*(ushort *)((uint)(uVar36 != 0) * 2 + uVar26)" (* "*") (cast_expression "(ushort *)((uint)(uVar36 != 0) * 2 + uVar26)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)(uVar36 != 0) * 2 + uVar26)" (( "(") (binary_expression "(uint)(uVar36 != 0) * 2 + uVar26" (binary_expression "(uint)(uVar36 != 0) * 2" (call_expression "(uint)(uVar36 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar36 != 0)" (( "(") (binary_expression "uVar36 != 0" (identifier "uVar36") (!= "!=") (number_literal "0")) () ")"))) (* "*") (number_literal "2")) (+ "+") (identifier "uVar26")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (} "}"))) (expression_statement "puVar23 = puVar23 + 2;" (assignment_expression "puVar23 = puVar23 + 2" (identifier "puVar23") (= "=") (binary_expression "puVar23 + 2" (identifier "puVar23") (+ "+") (number_literal "2"))) (; ";")) (} "}"))) (expression_statement "uVar16 = uVar16 + local_100;" (assignment_expression "uVar16 = uVar16 + local_100" (identifier "uVar16") (= "=") (binary_expression "uVar16 + local_100" (identifier "uVar16") (+ "+") (identifier "local_100"))) (; ";")) (expression_statement "uVar31 = uVar31 + iVar34 * local_100;" (assignment_expression "uVar31 = uVar31 + iVar34 * local_100" (identifier "uVar31") (= "=") (binary_expression "uVar31 + iVar34 * local_100" (identifier "uVar31") (+ "+") (binary_expression "iVar34 * local_100" (identifier "iVar34") (* "*") (identifier "local_100")))) (; ";")) (expression_statement "pcVar41 = *(code **)(pcVar40 + 0x3168c);" (assignment_expression "pcVar41 = *(code **)(pcVar40 + 0x3168c)" (identifier "pcVar41") (= "=") (pointer_expression "*(code **)(pcVar40 + 0x3168c)" (* "*") (cast_expression "(code **)(pcVar40 + 0x3168c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x3168c)" (( "(") (binary_expression "pcVar40 + 0x3168c" (identifier "pcVar40") (+ "+") (number_literal "0x3168c")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar16 < uVar42)" (( "(") (binary_expression "uVar16 < uVar42" (identifier "uVar16") (< "<") (identifier "uVar42")) () ")")) (; ";")) (if_statement "if (local_e8 == local_f4) {\n                return 1;\n              }" (if "if") (parenthesized_expression "(local_e8 == local_f4)" (( "(") (binary_expression "local_e8 == local_f4" (identifier "local_e8") (== "==") (identifier "local_f4")) () ")")) (compound_statement "{\n                return 1;\n              }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_00022438;" (goto "goto") (statement_identifier "LAB_00022438") (; ";")) (} "}"))) (expression_statement "local_e8 = 7;" (assignment_expression "local_e8 = 7" (identifier "local_e8") (= "=") (number_literal "7")) (; ";")) (if_statement "if (uVar16 == 1) goto LAB_00021dd0;" (if "if") (parenthesized_expression "(uVar16 == 1)" (( "(") (binary_expression "uVar16 == 1" (identifier "uVar16") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00021dd0;" (goto "goto") (statement_identifier "LAB_00021dd0") (; ";"))) (goto_statement "goto LAB_0002244c;" (goto "goto") (statement_identifier "LAB_0002244c") (; ";")) (} "}"))) (} "}")))) (expression_statement "(**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0);" (call_expression "(**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x316f4))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x316f4)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x316f4)" (* "*") (cast_expression "(code **)(pcVar40 + 0x316f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x316f4)" (( "(") (binary_expression "pcVar40 + 0x316f4" (identifier "pcVar40") (+ "+") (number_literal "0x316f4")) () ")"))))) () ")")) (argument_list "(puVar29,iVar9 + -0x2b0)" (( "(") (identifier "puVar29") (, ",") (binary_expression "iVar9 + -0x2b0" (identifier "iVar9") (+ "+") (number_literal "-0x2b0")) () ")"))) (; ";")) (labeled_statement "LAB_00022470:\n  pcVar41 = *(code **)(pcVar40 + 0x316f4);" (statement_identifier "LAB_00022470") (: ":") (expression_statement "pcVar41 = *(code **)(pcVar40 + 0x316f4);" (assignment_expression "pcVar41 = *(code **)(pcVar40 + 0x316f4)" (identifier "pcVar41") (= "=") (pointer_expression "*(code **)(pcVar40 + 0x316f4)" (* "*") (cast_expression "(code **)(pcVar40 + 0x316f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x316f4)" (( "(") (binary_expression "pcVar40 + 0x316f4" (identifier "pcVar40") (+ "+") (number_literal "0x316f4")) () ")"))))) (; ";"))) (expression_statement "(*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8);" (call_expression "(*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8)" (parenthesized_expression "(*pcVar41)" (( "(") (pointer_expression "*pcVar41" (* "*") (identifier "pcVar41")) () ")")) (argument_list "(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8)" (( "(") (identifier "puVar29") (, ",") (binary_expression "*(int *)(pcVar40 + 0x31304) + -0x2c8" (pointer_expression "*(int *)(pcVar40 + 0x31304)" (* "*") (cast_expression "(int *)(pcVar40 + 0x31304)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x31304)" (( "(") (binary_expression "pcVar40 + 0x31304" (identifier "pcVar40") (+ "+") (number_literal "0x31304")) () ")")))) (+ "+") (number_literal "-0x2c8")) () ")"))) (; ";")) (expression_statement "puVar17 = (undefined4 *)*puVar29;" (assignment_expression "puVar17 = (undefined4 *)*puVar29" (identifier "puVar17") (= "=") (cast_expression "(undefined4 *)*puVar29" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar29" (* "*") (identifier "puVar29")))) (; ";")) (expression_statement "puVar28 = *(undefined4 **)*puVar17;" (assignment_expression "puVar28 = *(undefined4 **)*puVar17" (identifier "puVar28") (= "=") (pointer_expression "*(undefined4 **)*puVar17" (* "*") (cast_expression "(undefined4 **)*puVar17" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17"))))) (; ";")) (expression_statement "cVar15 = *(char *)(puVar28 + 0x7f);" (assignment_expression "cVar15 = *(char *)(puVar28 + 0x7f)" (identifier "cVar15") (= "=") (pointer_expression "*(char *)(puVar28 + 0x7f)" (* "*") (cast_expression "(char *)(puVar28 + 0x7f)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x7f)" (( "(") (binary_expression "puVar28 + 0x7f" (identifier "puVar28") (+ "+") (number_literal "0x7f")) () ")"))))) (; ";")) (if_statement "if (cVar15 == '\0') {\n    local_154 = 1;\n  }\n  else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }" (if "if") (parenthesized_expression "(cVar15 == '\0')" (( "(") (binary_expression "cVar15 == '\0'" (identifier "cVar15") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_154 = 1;\n  }" ({ "{") (expression_statement "local_154 = 1;" (assignment_expression "local_154 = 1" (identifier "local_154") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }" (else "else") (compound_statement "{\n    local_154 = 7;\n    if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }\n  }" ({ "{") (expression_statement "local_154 = 7;" (assignment_expression "local_154 = 7" (identifier "local_154") (= "=") (number_literal "7")) (; ";")) (if_statement "if (cVar15 != '\x01') {\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }" (if "if") (parenthesized_expression "(cVar15 != '\x01')" (( "(") (binary_expression "cVar15 != '\x01'" (identifier "cVar15") (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n      pcVar40 = *(code **)(pcVar41 + 0x30f88);\n      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);\n      piVar5 = (int *)*puVar28;\n      uVar20 = *(undefined4 *)*piVar5;\n      iVar4 = ((undefined4 *)*piVar5)[1];\n      FUN_0001e55c(uVar20);\n      if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }\n      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);\n      if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }\n      iVar9 = *(int *)(pcVar40 + 0x3084c);\nLAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );\n    }" ({ "{") (expression_statement "pcVar40 = *(code **)(pcVar41 + 0x30f88);" (assignment_expression "pcVar40 = *(code **)(pcVar41 + 0x30f88)" (identifier "pcVar40") (= "=") (pointer_expression "*(code **)(pcVar41 + 0x30f88)" (* "*") (cast_expression "(code **)(pcVar41 + 0x30f88)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar41 + 0x30f88)" (( "(") (binary_expression "pcVar41 + 0x30f88" (identifier "pcVar41") (+ "+") (number_literal "0x30f88")) () ")"))))) (; ";")) (expression_statement "(*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);" (call_expression "(*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290)" (parenthesized_expression "(*pcVar40)" (( "(") (pointer_expression "*pcVar40" (* "*") (identifier "pcVar40")) () ")")) (argument_list "(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290)" (( "(") (identifier "puVar28") (, ",") (binary_expression "*(int *)(pcVar41 + 0x30b98) + -0x290" (pointer_expression "*(int *)(pcVar41 + 0x30b98)" (* "*") (cast_expression "(int *)(pcVar41 + 0x30b98)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar41 + 0x30b98)" (( "(") (binary_expression "pcVar41 + 0x30b98" (identifier "pcVar41") (+ "+") (number_literal "0x30b98")) () ")")))) (+ "+") (number_literal "-0x290")) () ")"))) (; ";")) (expression_statement "piVar5 = (int *)*puVar28;" (assignment_expression "piVar5 = (int *)*puVar28" (identifier "piVar5") (= "=") (cast_expression "(int *)*puVar28" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar28" (* "*") (identifier "puVar28")))) (; ";")) (expression_statement "uVar20 = *(undefined4 *)*piVar5;" (assignment_expression "uVar20 = *(undefined4 *)*piVar5" (identifier "uVar20") (= "=") (pointer_expression "*(undefined4 *)*piVar5" (* "*") (cast_expression "(undefined4 *)*piVar5" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))))) (; ";")) (expression_statement "iVar4 = ((undefined4 *)*piVar5)[1];" (assignment_expression "iVar4 = ((undefined4 *)*piVar5)[1]" (identifier "iVar4") (= "=") (subscript_expression "((undefined4 *)*piVar5)[1]" (parenthesized_expression "((undefined4 *)*piVar5)" (( "(") (cast_expression "(undefined4 *)*piVar5" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "FUN_0001e55c(uVar20);" (call_expression "FUN_0001e55c(uVar20)" (identifier "FUN_0001e55c") (argument_list "(uVar20)" (( "(") (identifier "uVar20") () ")"))) (; ";")) (if_statement "if (puVar28[10] == 0) {\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }\n      else {\n        iVar34 = 0;\n      }" (if "if") (parenthesized_expression "(puVar28[10] == 0)" (( "(") (binary_expression "puVar28[10] == 0" (subscript_expression "puVar28[10]" (identifier "puVar28") ([ "[") (number_literal "10") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);\n      }" ({ "{") (expression_statement "iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);" (assignment_expression "iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20)" (identifier "iVar34") (= "=") (call_expression "(**(code **)(pcVar40 + 0x30c58))(uVar20)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30c58))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x30c58)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x30c58)" (* "*") (cast_expression "(code **)(pcVar40 + 0x30c58)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x30c58)" (( "(") (binary_expression "pcVar40 + 0x30c58" (identifier "pcVar40") (+ "+") (number_literal "0x30c58")) () ")"))))) () ")")) (argument_list "(uVar20)" (( "(") (identifier "uVar20") () ")")))) (; ";")) (} "}")) (else_clause "else {\n        iVar34 = 0;\n      }" (else "else") (compound_statement "{\n        iVar34 = 0;\n      }" ({ "{") (expression_statement "iVar34 = 0;" (assignment_expression "iVar34 = 0" (identifier "iVar34") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "(**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);" (call_expression "(**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30d48))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x30d48)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x30d48)" (* "*") (cast_expression "(code **)(pcVar40 + 0x30d48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x30d48)" (( "(") (binary_expression "pcVar40 + 0x30d48" (identifier "pcVar40") (+ "+") (number_literal "0x30d48")) () ")"))))) () ")")) (argument_list "(uVar20,iVar4)" (( "(") (identifier "uVar20") (, ",") (identifier "iVar4") () ")"))) (; ";")) (if_statement "if ((uint)puVar28[10] < 5) {\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }" (if "if") (parenthesized_expression "((uint)puVar28[10] < 5)" (( "(") (binary_expression "(uint)puVar28[10] < 5" (cast_expression "(uint)puVar28[10]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar28[10]" (identifier "puVar28") ([ "[") (number_literal "10") (] "]"))) (< "<") (number_literal "5")) () ")")) (compound_statement "{\n                    \n                    \n        iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();\n        return iVar4;\n      }" ({ "{") (expression_statement "iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();" (assignment_expression "iVar4 = (*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))()" (identifier "iVar4") (= "=") (call_expression "(*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))()" (parenthesized_expression "(*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))" (( "(") (pointer_expression "*(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820)" (* "*") (parenthesized_expression "(pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820)" (( "(") (binary_expression "pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820" (binary_expression "pcVar40 +\n                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4)" (identifier "pcVar40") (+ "+") (pointer_expression "*(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4)" (* "*") (cast_expression "(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4)" (( "(") (binary_expression "*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4" (binary_expression "*(int *)(pcVar40 + 0x3084c) + 0x164" (pointer_expression "*(int *)(pcVar40 + 0x3084c)" (* "*") (cast_expression "(int *)(pcVar40 + 0x3084c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x3084c)" (( "(") (binary_expression "pcVar40 + 0x3084c" (identifier "pcVar40") (+ "+") (number_literal "0x3084c")) () ")")))) (+ "+") (number_literal "0x164")) (+ "+") (binary_expression "puVar28[10] * 4" (subscript_expression "puVar28[10]" (identifier "puVar28") ([ "[") (number_literal "10") (] "]")) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (number_literal "0x38820")) () ")"))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}"))) (expression_statement "iVar9 = *(int *)(pcVar40 + 0x3084c);" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x3084c)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(pcVar40 + 0x3084c)" (* "*") (cast_expression "(int *)(pcVar40 + 0x3084c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x3084c)" (( "(") (binary_expression "pcVar40 + 0x3084c" (identifier "pcVar40") (+ "+") (number_literal "0x3084c")) () ")"))))) (; ";")) (labeled_statement "LAB_00022980:\n      do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );" (statement_identifier "LAB_00022980") (: ":") (do_statement "do {\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      } while( true );" (do "do") (compound_statement "{\n        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);\n        if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }\n        iVar9 = *(int *)(pcVar40 + 0x3084c);\n        if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }\n      }" ({ "{") (expression_statement "(**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);" (call_expression "(**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30c3c))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x30c3c)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x30c3c)" (* "*") (cast_expression "(code **)(pcVar40 + 0x30c3c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x30c3c)" (( "(") (binary_expression "pcVar40 + 0x30c3c" (identifier "pcVar40") (+ "+") (number_literal "0x30c3c")) () ")"))))) () ")")) (argument_list "(uVar20,iVar9 + -0x260)" (( "(") (identifier "uVar20") (, ",") (binary_expression "iVar9 + -0x260" (identifier "iVar9") (+ "+") (number_literal "-0x260")) () ")"))) (; ";")) (if_statement "if (*(char *)(iVar4 + 0x19) != '\x03') {\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x19) != '\x03')" (( "(") (binary_expression "*(char *)(iVar4 + 0x19) != '\x03'" (pointer_expression "*(char *)(iVar4 + 0x19)" (* "*") (cast_expression "(char *)(iVar4 + 0x19)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x19)" (( "(") (binary_expression "iVar4 + 0x19" (identifier "iVar4") (+ "+") (number_literal "0x19")) () ")")))) (!= "!=") (char_literal "'\x03'" (' "'") (escape_sequence "\x03") (' "'"))) () ")")) (compound_statement "{\n          iVar9 = *(int *)(pcVar40 + 0x3084c);\n          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;\n        }" ({ "{") (expression_statement "iVar9 = *(int *)(pcVar40 + 0x3084c);" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x3084c)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(pcVar40 + 0x3084c)" (* "*") (cast_expression "(int *)(pcVar40 + 0x3084c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x3084c)" (( "(") (binary_expression "pcVar40 + 0x3084c" (identifier "pcVar40") (+ "+") (number_literal "0x3084c")) () ")"))))) (; ";")) (if_statement "if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x19) != '\0')" (( "(") (binary_expression "*(char *)(iVar4 + 0x19) != '\0'" (pointer_expression "*(char *)(iVar4 + 0x19)" (* "*") (cast_expression "(char *)(iVar4 + 0x19)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x19)" (( "(") (binary_expression "iVar4 + 0x19" (identifier "iVar4") (+ "+") (number_literal "0x19")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_00022980;" (goto "goto") (statement_identifier "LAB_00022980") (; ";"))) (} "}"))) (expression_statement "iVar9 = *(int *)(pcVar40 + 0x3084c);" (assignment_expression "iVar9 = *(int *)(pcVar40 + 0x3084c)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(pcVar40 + 0x3084c)" (* "*") (cast_expression "(int *)(pcVar40 + 0x3084c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x3084c)" (( "(") (binary_expression "pcVar40 + 0x3084c" (identifier "pcVar40") (+ "+") (number_literal "0x3084c")) () ")"))))) (; ";")) (if_statement "if (*(char *)(iVar4 + 0x18) == '\b') {\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x18) == '\b')" (( "(") (binary_expression "*(char *)(iVar4 + 0x18) == '\b'" (pointer_expression "*(char *)(iVar4 + 0x18)" (* "*") (cast_expression "(char *)(iVar4 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x18)" (( "(") (binary_expression "iVar4 + 0x18" (identifier "iVar4") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (char_literal "'\b'" (' "'") (escape_sequence "\b") (' "'"))) () ")")) (compound_statement "{\n          iVar32 = puVar28[2];\n          iVar9 = puVar28[1];\n          if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }\n          puVar28[6] = iVar9;\n          puVar28[7] = iVar32;\n          if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }\n          while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }\n          return 1;\n        }" ({ "{") (expression_statement "iVar32 = puVar28[2];" (assignment_expression "iVar32 = puVar28[2]" (identifier "iVar32") (= "=") (subscript_expression "puVar28[2]" (identifier "puVar28") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar9 = puVar28[1];" (assignment_expression "iVar9 = puVar28[1]" (identifier "iVar9") (= "=") (subscript_expression "puVar28[1]" (identifier "puVar28") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (iVar32 < 0) {\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }" (if "if") (parenthesized_expression "(iVar32 < 0)" (( "(") (binary_expression "iVar32 < 0" (identifier "iVar32") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);\n          }" ({ "{") (expression_statement "iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);" (assignment_expression "iVar9 = iVar9 - iVar32 * (piVar5[3] + -1)" (identifier "iVar9") (= "=") (binary_expression "iVar9 - iVar32 * (piVar5[3] + -1)" (identifier "iVar9") (- "-") (binary_expression "iVar32 * (piVar5[3] + -1)" (identifier "iVar32") (* "*") (parenthesized_expression "(piVar5[3] + -1)" (( "(") (binary_expression "piVar5[3] + -1" (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "-1")) () ")"))))) (; ";")) (} "}"))) (expression_statement "puVar28[6] = iVar9;" (assignment_expression "puVar28[6] = iVar9" (subscript_expression "puVar28[6]" (identifier "puVar28") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "iVar9")) (; ";")) (expression_statement "puVar28[7] = iVar32;" (assignment_expression "puVar28[7] = iVar32" (subscript_expression "puVar28[7]" (identifier "puVar28") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar32")) (; ";")) (if_statement "if (iVar34 == 0) {\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }" (if "if") (parenthesized_expression "(iVar34 == 0)" (( "(") (binary_expression "iVar34 == 0" (identifier "iVar34") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);\n            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);\n            puVar28[5] = uVar11;\n            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);\n            pcVar40 = *(code **)(pcVar40 + 0x30b54);\n            puVar28[5] = 0;\n            (*pcVar40)(uVar20,uVar11);\n            return iVar4;\n          }" ({ "{") (expression_statement "uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);" (assignment_expression "uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4)" (identifier "uVar11") (= "=") (call_expression "(**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30d3c))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x30d3c)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x30d3c)" (* "*") (cast_expression "(code **)(pcVar40 + 0x30d3c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x30d3c)" (( "(") (binary_expression "pcVar40 + 0x30d3c" (identifier "pcVar40") (+ "+") (number_literal "0x30d3c")) () ")"))))) () ")")) (argument_list "(uVar20,iVar4)" (( "(") (identifier "uVar20") (, ",") (identifier "iVar4") () ")")))) (; ";")) (expression_statement "uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);" (assignment_expression "uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11)" (identifier "uVar11") (= "=") (call_expression "(**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30b38))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x30b38)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x30b38)" (* "*") (cast_expression "(code **)(pcVar40 + 0x30b38)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x30b38)" (( "(") (binary_expression "pcVar40 + 0x30b38" (identifier "pcVar40") (+ "+") (number_literal "0x30b38")) () ")"))))) () ")")) (argument_list "(uVar20,uVar11)" (( "(") (identifier "uVar20") (, ",") (identifier "uVar11") () ")")))) (; ";")) (expression_statement "puVar28[5] = uVar11;" (assignment_expression "puVar28[5] = uVar11" (subscript_expression "puVar28[5]" (identifier "puVar28") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar11")) (; ";")) (expression_statement "iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);" (assignment_expression "iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28)" (identifier "iVar4") (= "=") (call_expression "FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28)" (identifier "FUN_0001a610") (argument_list "(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28)" (( "(") (identifier "piVar5") (, ",") (binary_expression "*(int *)(pcVar40 + 0x308a0) + 0x2aa0" (pointer_expression "*(int *)(pcVar40 + 0x308a0)" (* "*") (cast_expression "(int *)(pcVar40 + 0x308a0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar40 + 0x308a0)" (( "(") (binary_expression "pcVar40 + 0x308a0" (identifier "pcVar40") (+ "+") (number_literal "0x308a0")) () ")")))) (+ "+") (number_literal "0x2aa0")) (, ",") (identifier "puVar28") () ")")))) (; ";")) (expression_statement "pcVar40 = *(code **)(pcVar40 + 0x30b54);" (assignment_expression "pcVar40 = *(code **)(pcVar40 + 0x30b54)" (identifier "pcVar40") (= "=") (pointer_expression "*(code **)(pcVar40 + 0x30b54)" (* "*") (cast_expression "(code **)(pcVar40 + 0x30b54)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x30b54)" (( "(") (binary_expression "pcVar40 + 0x30b54" (identifier "pcVar40") (+ "+") (number_literal "0x30b54")) () ")"))))) (; ";")) (expression_statement "puVar28[5] = 0;" (assignment_expression "puVar28[5] = 0" (subscript_expression "puVar28[5]" (identifier "puVar28") ([ "[") (number_literal "5") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "(*pcVar40)(uVar20,uVar11);" (call_expression "(*pcVar40)(uVar20,uVar11)" (parenthesized_expression "(*pcVar40)" (( "(") (pointer_expression "*pcVar40" (* "*") (identifier "pcVar40")) () ")")) (argument_list "(uVar20,uVar11)" (( "(") (identifier "uVar20") (, ",") (identifier "uVar11") () ")"))) (; ";")) (return_statement "return iVar4;" (return "return") (identifier "iVar4") (; ";")) (} "}"))) (while_statement "while (iVar34 = iVar34 + -1, -1 < iVar34) {\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }" (while "while") (parenthesized_expression "(iVar34 = iVar34 + -1, -1 < iVar34)" (( "(") (comma_expression "iVar34 = iVar34 + -1, -1 < iVar34" (assignment_expression "iVar34 = iVar34 + -1" (identifier "iVar34") (= "=") (binary_expression "iVar34 + -1" (identifier "iVar34") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "-1 < iVar34" (number_literal "-1") (< "<") (identifier "iVar34"))) () ")")) (compound_statement "{\n            iVar9 = puVar28[6];\n            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }\n          }" ({ "{") (expression_statement "iVar9 = puVar28[6];" (assignment_expression "iVar9 = puVar28[6]" (identifier "iVar9") (= "=") (subscript_expression "puVar28[6]" (identifier "puVar28") ([ "[") (number_literal "6") (] "]"))) (; ";")) (for_statement "for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }" (for "for") (( "(") (assignment_expression "iVar4 = piVar5[3]" (identifier "iVar4") (= "=") (subscript_expression "piVar5[3]" (identifier "piVar5") ([ "[") (number_literal "3") (] "]"))) (; ";") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);\n              iVar9 = iVar9 + iVar32;\n            }" ({ "{") (expression_statement "(**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);" (call_expression "(**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0)" (parenthesized_expression "(**(code **)(pcVar40 + 0x30bd4))" (( "(") (pointer_expression "**(code **)(pcVar40 + 0x30bd4)" (* "*") (pointer_expression "*(code **)(pcVar40 + 0x30bd4)" (* "*") (cast_expression "(code **)(pcVar40 + 0x30bd4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar40 + 0x30bd4)" (( "(") (binary_expression "pcVar40 + 0x30bd4" (identifier "pcVar40") (+ "+") (number_literal "0x30bd4")) () ")"))))) () ")")) (argument_list "(uVar20,iVar9,0)" (( "(") (identifier "uVar20") (, ",") (identifier "iVar9") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "iVar9 = iVar9 + iVar32;" (assignment_expression "iVar9 = iVar9 + iVar32" (identifier "iVar9") (= "=") (binary_expression "iVar9 + iVar32" (identifier "iVar9") (+ "+") (identifier "iVar32"))) (; ";")) (} "}"))) (} "}"))) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}"))) (} "}")))) (expression_statement "uVar42 = puVar17[3];" (assignment_expression "uVar42 = puVar17[3]" (identifier "uVar42") (= "=") (subscript_expression "puVar17[3]" (identifier "puVar17") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "iVar34 = puVar17[2];" (assignment_expression "iVar34 = puVar17[2]" (identifier "iVar34") (= "=") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar4 = puVar29[7];" (assignment_expression "iVar4 = puVar29[7]" (identifier "iVar4") (= "=") (subscript_expression "puVar29[7]" (identifier "puVar29") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if ((puVar17[4] & 2) == 0) {\n    iVar9 = 1;\n    local_15c = iVar34;\n  }\n  else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }" (if "if") (parenthesized_expression "((puVar17[4] & 2) == 0)" (( "(") (binary_expression "(puVar17[4] & 2) == 0" (parenthesized_expression "(puVar17[4] & 2)" (( "(") (binary_expression "puVar17[4] & 2" (subscript_expression "puVar17[4]" (identifier "puVar17") ([ "[") (number_literal "4") (] "]")) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar9 = 1;\n    local_15c = iVar34;\n  }" ({ "{") (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_15c = iVar34;" (assignment_expression "local_15c = iVar34" (identifier "local_15c") (= "=") (identifier "iVar34")) (; ";")) (} "}")) (else_clause "else {\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }" (else "else") (compound_statement "{\n    iVar9 = 3;\n    local_15c = iVar34 * 3;\n  }" ({ "{") (expression_statement "iVar9 = 3;" (assignment_expression "iVar9 = 3" (identifier "iVar9") (= "=") (number_literal "3")) (; ";")) (expression_statement "local_15c = iVar34 * 3;" (assignment_expression "local_15c = iVar34 * 3" (identifier "local_15c") (= "=") (binary_expression "iVar34 * 3" (identifier "iVar34") (* "*") (number_literal "3"))) (; ";")) (} "}")))) (expression_statement "iVar25 = *(int *)(pcVar41 + 0x30ce4);" (assignment_expression "iVar25 = *(int *)(pcVar41 + 0x30ce4)" (identifier "iVar25") (= "=") (pointer_expression "*(int *)(pcVar41 + 0x30ce4)" (* "*") (cast_expression "(int *)(pcVar41 + 0x30ce4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar41 + 0x30ce4)" (( "(") (binary_expression "pcVar41 + 0x30ce4" (identifier "pcVar41") (+ "+") (number_literal "0x30ce4")) () ")"))))) (; ";")) (expression_statement "iVar32 = *(int *)(pcVar41 + 0x30ce8);" (assignment_expression "iVar32 = *(int *)(pcVar41 + 0x30ce8)" (identifier "iVar32") (= "=") (pointer_expression "*(int *)(pcVar41 + 0x30ce8)" (* "*") (cast_expression "(int *)(pcVar41 + 0x30ce8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar41 + 0x30ce8)" (( "(") (binary_expression "pcVar41 + 0x30ce8" (identifier "pcVar41") (+ "+") (number_literal "0x30ce8")) () ")"))))) (; ";")) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  } while( true );" (do "do") (compound_statement "{\n    uVar16 = uVar6 + 1;\n    if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }\n    if (local_154 == uVar16) {\n      return 1;\n    }\n    cVar15 = *(char *)(puVar28 + 0x7f);\n    uVar6 = uVar16;\n  }" ({ "{") (expression_statement "uVar16 = uVar6 + 1;" (assignment_expression "uVar16 = uVar6 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (cVar15 == '\x01') {\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }\n    else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }" (if "if") (parenthesized_expression "(cVar15 == '\x01')" (( "(") (binary_expression "cVar15 == '\x01'" (identifier "cVar15") (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (compound_statement "{\n      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);\n      if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }\n      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }\n    }" ({ "{") (expression_statement "uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);" (assignment_expression "uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f)" (identifier "uVar31") (= "=") (binary_expression "(uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f)" (parenthesized_expression "(uVar6 & 1)" (( "(") (binary_expression "uVar6 & 1" (identifier "uVar6") (& "&") (number_literal "1")) () ")")) (<< "<<") (parenthesized_expression "(3U - ((int)uVar16 >> 1) & 0x1f)" (( "(") (binary_expression "3U - ((int)uVar16 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar16 >> 1)" (number_literal "3U") (- "-") (parenthesized_expression "((int)uVar16 >> 1)" (( "(") (binary_expression "(int)uVar16 >> 1" (cast_expression "(int)uVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "1")) () ")"))) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (uVar6 < 2) {\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }\n      else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }" (if "if") (parenthesized_expression "(uVar6 < 2)" (( "(") (binary_expression "uVar6 < 2" (identifier "uVar6") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n        uVar36 = ~uVar31 & 7;\n        uVar26 = 3;\n      }" ({ "{") (expression_statement "uVar36 = ~uVar31 & 7;" (assignment_expression "uVar36 = ~uVar31 & 7" (identifier "uVar36") (= "=") (binary_expression "~uVar31 & 7" (unary_expression "~uVar31" (~ "~") (identifier "uVar31")) (& "&") (number_literal "7"))) (; ";")) (expression_statement "uVar26 = 3;" (assignment_expression "uVar26 = 3" (identifier "uVar26") (= "=") (number_literal "3")) (; ";")) (} "}")) (else_clause "else {\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }" (else "else") (compound_statement "{\n        uVar26 = (int)(8 - uVar16) >> 1;\n        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);\n      }" ({ "{") (expression_statement "uVar26 = (int)(8 - uVar16) >> 1;" (assignment_expression "uVar26 = (int)(8 - uVar16) >> 1" (identifier "uVar26") (= "=") (binary_expression "(int)(8 - uVar16) >> 1" (cast_expression "(int)(8 - uVar16)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(8 - uVar16)" (( "(") (binary_expression "8 - uVar16" (number_literal "8") (- "-") (identifier "uVar16")) () ")"))) (>> ">>") (number_literal "1"))) (; ";")) (expression_statement "uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);" (assignment_expression "uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7)" (identifier "uVar36") (= "=") (binary_expression "((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7)" (parenthesized_expression "((1 << (uVar26 & 0x1f)) + -1)" (( "(") (binary_expression "(1 << (uVar26 & 0x1f)) + -1" (parenthesized_expression "(1 << (uVar26 & 0x1f))" (( "(") (binary_expression "1 << (uVar26 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar26 & 0x1f)" (( "(") (binary_expression "uVar26 & 0x1f" (identifier "uVar26") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (+ "+") (number_literal "-1")) () ")")) (- "-") (parenthesized_expression "(uVar31 & 7)" (( "(") (binary_expression "uVar31 & 7" (identifier "uVar31") (& "&") (number_literal "7")) () ")")))) (; ";")) (} "}")))) (if_statement "if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }" (if "if") (parenthesized_expression "(uVar36 + iVar34 >> (uVar26 & 0x1f) != 0)" (( "(") (binary_expression "uVar36 + iVar34 >> (uVar26 & 0x1f) != 0" (binary_expression "uVar36 + iVar34 >> (uVar26 & 0x1f)" (binary_expression "uVar36 + iVar34" (identifier "uVar36") (+ "+") (identifier "iVar34")) (>> ">>") (parenthesized_expression "(uVar26 & 0x1f)" (( "(") (binary_expression "uVar26 & 0x1f" (identifier "uVar26") (& "&") (number_literal "0x1f")) () ")"))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        local_164 = (uVar31 & 7) * iVar9;\n        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);\n        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;\n        if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }\n        goto LAB_000225b8;\n      }" ({ "{") (expression_statement "local_164 = (uVar31 & 7) * iVar9;" (assignment_expression "local_164 = (uVar31 & 7) * iVar9" (identifier "local_164") (= "=") (binary_expression "(uVar31 & 7) * iVar9" (parenthesized_expression "(uVar31 & 7)" (( "(") (binary_expression "uVar31 & 7" (identifier "uVar31") (& "&") (number_literal "7")) () ")")) (* "*") (identifier "iVar9"))) (; ";")) (expression_statement "iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);" (assignment_expression "iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU)" (identifier "iVar10") (= "=") (binary_expression "iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU)" (identifier "iVar9") (<< "<<") (parenthesized_expression "((int)(8 - uVar16) >> 1 & 0x1fU)" (( "(") (binary_expression "(int)(8 - uVar16) >> 1 & 0x1fU" (binary_expression "(int)(8 - uVar16) >> 1" (cast_expression "(int)(8 - uVar16)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(8 - uVar16)" (( "(") (binary_expression "8 - uVar16" (number_literal "8") (- "-") (identifier "uVar16")) () ")"))) (>> ">>") (number_literal "1")) (& "&") (number_literal "0x1fU")) () ")")))) (; ";")) (expression_statement "uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;" (assignment_expression "uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7" (identifier "uVar31") (= "=") (binary_expression "(~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7" (binary_expression "(~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f)" (parenthesized_expression "(~uVar6 & 1)" (( "(") (binary_expression "~uVar6 & 1" (unary_expression "~uVar6" (~ "~") (identifier "uVar6")) (& "&") (number_literal "1")) () ")")) (<< "<<") (parenthesized_expression "(3U - ((int)uVar6 >> 1) & 0x1f)" (( "(") (binary_expression "3U - ((int)uVar6 >> 1) & 0x1f" (binary_expression "3U - ((int)uVar6 >> 1)" (number_literal "3U") (- "-") (parenthesized_expression "((int)uVar6 >> 1)" (( "(") (binary_expression "(int)uVar6 >> 1" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (>> ">>") (number_literal "1")) () ")"))) (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "7"))) (; ";")) (if_statement "if (uVar6 < 3) {\n          iVar33 = 8;\n        }\n        else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }" (if "if") (parenthesized_expression "(uVar6 < 3)" (( "(") (binary_expression "uVar6 < 3" (identifier "uVar6") (< "<") (number_literal "3")) () ")")) (compound_statement "{\n          iVar33 = 8;\n        }" ({ "{") (expression_statement "iVar33 = 8;" (assignment_expression "iVar33 = 8" (identifier "iVar33") (= "=") (number_literal "8")) (; ";")) (} "}")) (else_clause "else {\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }" (else "else") (compound_statement "{\n          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);\n        }" ({ "{") (expression_statement "iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);" (assignment_expression "iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU)" (identifier "iVar33") (= "=") (binary_expression "8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU)" (number_literal "8") (>> ">>") (parenthesized_expression "((int)(uVar6 - 1) >> 1 & 0x1fU)" (( "(") (binary_expression "(int)(uVar6 - 1) >> 1 & 0x1fU" (binary_expression "(int)(uVar6 - 1) >> 1" (cast_expression "(int)(uVar6 - 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar6 - 1)" (( "(") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1")) () ")"))) (>> ">>") (number_literal "1")) (& "&") (number_literal "0x1fU")) () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_000225b8;" (goto "goto") (statement_identifier "LAB_000225b8") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }" (else "else") (compound_statement "{\n      uVar31 = 0;\n      local_164 = 0;\n      iVar33 = 1;\n      iVar10 = iVar9;\nLAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }\n    }" ({ "{") (expression_statement "uVar31 = 0;" (assignment_expression "uVar31 = 0" (identifier "uVar31") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_164 = 0;" (assignment_expression "local_164 = 0" (identifier "local_164") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar33 = 1;" (assignment_expression "iVar33 = 1" (identifier "iVar33") (= "=") (number_literal "1")) (; ";")) (expression_statement "iVar10 = iVar9;" (assignment_expression "iVar10 = iVar9" (identifier "iVar10") (= "=") (identifier "iVar9")) (; ";")) (labeled_statement "LAB_000225b8:\n      if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }" (statement_identifier "LAB_000225b8") (: ":") (if_statement "if (uVar31 < uVar42) {\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }" (if "if") (parenthesized_expression "(uVar31 < uVar42)" (( "(") (binary_expression "uVar31 < uVar42" (identifier "uVar31") (< "<") (identifier "uVar42")) () ")")) (compound_statement "{\n        iVar30 = uVar31 * iVar4;\n        do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);\n      }" ({ "{") (expression_statement "iVar30 = uVar31 * iVar4;" (assignment_expression "iVar30 = uVar31 * iVar4" (identifier "iVar30") (= "=") (binary_expression "uVar31 * iVar4" (identifier "uVar31") (* "*") (identifier "iVar4"))) (; ";")) (do_statement "do {\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        } while (uVar31 < uVar42);" (do "do") (compound_statement "{\n          iVar37 = puVar29[5];\n          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);\n          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);\n          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);\n          if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }\nLAB_000226d4:\n          uVar31 = uVar31 + iVar33;\n          iVar30 = iVar30 + iVar33 * iVar4;\n        }" ({ "{") (expression_statement "iVar37 = puVar29[5];" (assignment_expression "iVar37 = puVar29[5]" (identifier "iVar37") (= "=") (subscript_expression "puVar29[5]" (identifier "puVar29") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "(**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);" (call_expression "(**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0)" (parenthesized_expression "(**(code **)(pcVar41 + 0x30f20))" (( "(") (pointer_expression "**(code **)(pcVar41 + 0x30f20)" (* "*") (pointer_expression "*(code **)(pcVar41 + 0x30f20)" (* "*") (cast_expression "(code **)(pcVar41 + 0x30f20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar41 + 0x30f20)" (( "(") (binary_expression "pcVar41 + 0x30f20" (identifier "pcVar41") (+ "+") (number_literal "0x30f20")) () ")"))))) () ")")) (argument_list "(puVar28,iVar37,0)" (( "(") (identifier "puVar28") (, ",") (identifier "iVar37") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);" (assignment_expression "pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c)" (identifier "pbVar27") (= "=") (cast_expression "(byte *)(puVar29[6] + iVar30 + local_15c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29[6] + iVar30 + local_15c)" (( "(") (binary_expression "puVar29[6] + iVar30 + local_15c" (binary_expression "puVar29[6] + iVar30" (subscript_expression "puVar29[6]" (identifier "puVar29") ([ "[") (number_literal "6") (] "]")) (+ "+") (identifier "iVar30")) (+ "+") (identifier "local_15c")) () ")")))) (; ";")) (expression_statement "pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);" (assignment_expression "pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164)" (identifier "pbVar8") (= "=") (cast_expression "(byte *)(puVar29[6] + iVar30 + local_164)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29[6] + iVar30 + local_164)" (( "(") (binary_expression "puVar29[6] + iVar30 + local_164" (binary_expression "puVar29[6] + iVar30" (subscript_expression "puVar29[6]" (identifier "puVar29") ([ "[") (number_literal "6") (] "]")) (+ "+") (identifier "iVar30")) (+ "+") (identifier "local_164")) () ")")))) (; ";")) (if_statement "if (pbVar8 < pbVar27) {\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }" (if "if") (parenthesized_expression "(pbVar8 < pbVar27)" (( "(") (binary_expression "pbVar8 < pbVar27" (identifier "pbVar8") (< "<") (identifier "pbVar27")) () ")")) (compound_statement "{\n            iVar38 = *(int *)(pcVar41 + 0x30cec);\n            pbVar22 = (byte *)(iVar37 + iVar9);\n            do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);\n          }" ({ "{") (expression_statement "iVar38 = *(int *)(pcVar41 + 0x30cec);" (assignment_expression "iVar38 = *(int *)(pcVar41 + 0x30cec)" (identifier "iVar38") (= "=") (pointer_expression "*(int *)(pcVar41 + 0x30cec)" (* "*") (cast_expression "(int *)(pcVar41 + 0x30cec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar41 + 0x30cec)" (( "(") (binary_expression "pcVar41 + 0x30cec" (identifier "pcVar41") (+ "+") (number_literal "0x30cec")) () ")"))))) (; ";")) (expression_statement "pbVar22 = (byte *)(iVar37 + iVar9);" (assignment_expression "pbVar22 = (byte *)(iVar37 + iVar9)" (identifier "pbVar22") (= "=") (cast_expression "(byte *)(iVar37 + iVar9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar37 + iVar9)" (( "(") (binary_expression "iVar37 + iVar9" (identifier "iVar37") (+ "+") (identifier "iVar9")) () ")")))) (; ";")) (do_statement "do {\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            } while (pbVar8 < pbVar27);" (do "do") (compound_statement "{\n              while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }\n              pbVar8 = pbVar8 + iVar10;\n              pbVar22 = pbVar22 + iVar9 + 1;\n            }" ({ "{") (while_statement "while( true ) {\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                uVar6 = (uint)*pbVar22;\n                pbVar18 = pbVar22 + -iVar9;\n                if (uVar6 == 0) break;\n                pbVar24 = pbVar8;\n                do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);\n                pbVar8 = pbVar8 + iVar10;\n                pbVar22 = pbVar22 + iVar9 + 1;\n                if (pbVar27 <= pbVar8) goto LAB_000226d4;\n              }" ({ "{") (expression_statement "uVar6 = (uint)*pbVar22;" (assignment_expression "uVar6 = (uint)*pbVar22" (identifier "uVar6") (= "=") (binary_expression "(uint)*pbVar22" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar22"))) (; ";")) (expression_statement "pbVar18 = pbVar22 + -iVar9;" (assignment_expression "pbVar18 = pbVar22 + -iVar9" (identifier "pbVar18") (= "=") (binary_expression "pbVar22 + -iVar9" (identifier "pbVar22") (+ "+") (unary_expression "-iVar9" (- "-") (identifier "iVar9")))) (; ";")) (if_statement "if (uVar6 == 0) break;" (if "if") (parenthesized_expression "(uVar6 == 0)" (( "(") (binary_expression "uVar6 == 0" (identifier "uVar6") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar24 = pbVar8;" (assignment_expression "pbVar24 = pbVar8" (identifier "pbVar24") (= "=") (identifier "pbVar8")) (; ";")) (do_statement "do {\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                } while (pbVar18 != pbVar22);" (do "do") (compound_statement "{\n                  bVar14 = *pbVar18;\n                  if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }\n                  pbVar18 = pbVar18 + 1;\n                  *pbVar24 = bVar14;\n                  pbVar24 = pbVar24 + 1;\n                }" ({ "{") (expression_statement "bVar14 = *pbVar18;" (assignment_expression "bVar14 = *pbVar18" (identifier "bVar14") (= "=") (pointer_expression "*pbVar18" (* "*") (identifier "pbVar18"))) (; ";")) (if_statement "if (uVar6 != 0xff) {\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }" (if "if") (parenthesized_expression "(uVar6 != 0xff)" (( "(") (binary_expression "uVar6 != 0xff" (identifier "uVar6") (!= "!=") (number_literal "0xff")) () ")")) (compound_statement "{\n                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;\n                    uVar26 = uVar36 >> 0xf;\n                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);\n                  }" ({ "{") (expression_statement "uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff;" (assignment_expression "uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff" (identifier "uVar36") (= "=") (binary_expression "(uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +\n                             (uint)bVar14 * 0xffff" (binary_expression "(uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6)" (binary_expression "(uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar25 + (uint)*pbVar24 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar25 + (uint)*pbVar24 * 2)" (( "(") (binary_expression "iVar25 + (uint)*pbVar24 * 2" (identifier "iVar25") (+ "+") (binary_expression "(uint)*pbVar24 * 2" (binary_expression "(uint)*pbVar24" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar24")) (* "*") (number_literal "2"))) () ")")))) (* "*") (parenthesized_expression "(0xff - uVar6)" (( "(") (binary_expression "0xff - uVar6" (number_literal "0xff") (- "-") (identifier "uVar6")) () ")"))) (+ "+") (binary_expression "(uint)bVar14 * 0xffff" (cast_expression "(uint)bVar14" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar14")) (* "*") (number_literal "0xffff")))) (; ";")) (expression_statement "uVar26 = uVar36 >> 0xf;" (assignment_expression "uVar26 = uVar36 >> 0xf" (identifier "uVar26") (= "=") (binary_expression "uVar36 >> 0xf" (identifier "uVar36") (>> ">>") (number_literal "0xf"))) (; ";")) (expression_statement "bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);" (assignment_expression "bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8)" (identifier "bVar14") (= "=") (call_expression "(byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8)" (( "(") (binary_expression "((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8" (binary_expression "((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +\n                                    (uint)*(ushort *)(iVar38 + uVar26 * 2)" (parenthesized_expression "((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc)" (( "(") (binary_expression "(uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc" (binary_expression "(uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26)" (binary_expression "(uVar36 & 0x7fff) * (uint)" (parenthesized_expression "(uVar36 & 0x7fff)" (( "(") (binary_expression "uVar36 & 0x7fff" (identifier "uVar36") (& "&") (number_literal "0x7fff")) () ")")) (* "*") (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")"))) (* "*") (cast_expression "(byte *)(iVar32 + uVar26)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar32 + uVar26)" (( "(") (binary_expression "iVar32 + uVar26" (identifier "iVar32") (+ "+") (identifier "uVar26")) () ")")))) (>> ">>") (number_literal "0xc")) () ")")) (+ "+") (binary_expression "(uint)*(ushort *)(iVar38 + uVar26 * 2)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(ushort *)(iVar38 + uVar26 * 2)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar38 + uVar26 * 2)" (( "(") (binary_expression "iVar38 + uVar26 * 2" (identifier "iVar38") (+ "+") (binary_expression "uVar26 * 2" (identifier "uVar26") (* "*") (number_literal "2"))) () ")"))))) (>> ">>") (number_literal "8")) () ")")))) (; ";")) (} "}"))) (expression_statement "pbVar18 = pbVar18 + 1;" (assignment_expression "pbVar18 = pbVar18 + 1" (identifier "pbVar18") (= "=") (binary_expression "pbVar18 + 1" (identifier "pbVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pbVar24 = bVar14;" (assignment_expression "*pbVar24 = bVar14" (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (= "=") (identifier "bVar14")) (; ";")) (expression_statement "pbVar24 = pbVar24 + 1;" (assignment_expression "pbVar24 = pbVar24 + 1" (identifier "pbVar24") (= "=") (binary_expression "pbVar24 + 1" (identifier "pbVar24") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar18 != pbVar22)" (( "(") (binary_expression "pbVar18 != pbVar22" (identifier "pbVar18") (!= "!=") (identifier "pbVar22")) () ")")) (; ";")) (expression_statement "pbVar8 = pbVar8 + iVar10;" (assignment_expression "pbVar8 = pbVar8 + iVar10" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + iVar10" (identifier "pbVar8") (+ "+") (identifier "iVar10"))) (; ";")) (expression_statement "pbVar22 = pbVar22 + iVar9 + 1;" (assignment_expression "pbVar22 = pbVar22 + iVar9 + 1" (identifier "pbVar22") (= "=") (binary_expression "pbVar22 + iVar9 + 1" (binary_expression "pbVar22 + iVar9" (identifier "pbVar22") (+ "+") (identifier "iVar9")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pbVar27 <= pbVar8) goto LAB_000226d4;" (if "if") (parenthesized_expression "(pbVar27 <= pbVar8)" (( "(") (binary_expression "pbVar27 <= pbVar8" (identifier "pbVar27") (<= "<=") (identifier "pbVar8")) () ")")) (goto_statement "goto LAB_000226d4;" (goto "goto") (statement_identifier "LAB_000226d4") (; ";"))) (} "}"))) (expression_statement "pbVar8 = pbVar8 + iVar10;" (assignment_expression "pbVar8 = pbVar8 + iVar10" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + iVar10" (identifier "pbVar8") (+ "+") (identifier "iVar10"))) (; ";")) (expression_statement "pbVar22 = pbVar22 + iVar9 + 1;" (assignment_expression "pbVar22 = pbVar22 + iVar9 + 1" (identifier "pbVar22") (= "=") (binary_expression "pbVar22 + iVar9 + 1" (binary_expression "pbVar22 + iVar9" (identifier "pbVar22") (+ "+") (identifier "iVar9")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar8 < pbVar27)" (( "(") (binary_expression "pbVar8 < pbVar27" (identifier "pbVar8") (< "<") (identifier "pbVar27")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_000226d4:\n          uVar31 = uVar31 + iVar33;" (statement_identifier "LAB_000226d4") (: ":") (expression_statement "uVar31 = uVar31 + iVar33;" (assignment_expression "uVar31 = uVar31 + iVar33" (identifier "uVar31") (= "=") (binary_expression "uVar31 + iVar33" (identifier "uVar31") (+ "+") (identifier "iVar33"))) (; ";"))) (expression_statement "iVar30 = iVar30 + iVar33 * iVar4;" (assignment_expression "iVar30 = iVar30 + iVar33 * iVar4" (identifier "iVar30") (= "=") (binary_expression "iVar30 + iVar33 * iVar4" (identifier "iVar30") (+ "+") (binary_expression "iVar33 * iVar4" (identifier "iVar33") (* "*") (identifier "iVar4")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar31 < uVar42)" (( "(") (binary_expression "uVar31 < uVar42" (identifier "uVar31") (< "<") (identifier "uVar42")) () ")")) (; ";")) (} "}")))) (} "}")))) (if_statement "if (local_154 == uVar16) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(local_154 == uVar16)" (( "(") (binary_expression "local_154 == uVar16" (identifier "local_154") (== "==") (identifier "uVar16")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "cVar15 = *(char *)(puVar28 + 0x7f);" (assignment_expression "cVar15 = *(char *)(puVar28 + 0x7f)" (identifier "cVar15") (= "=") (pointer_expression "*(char *)(puVar28 + 0x7f)" (* "*") (cast_expression "(char *)(puVar28 + 0x7f)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar28 + 0x7f)" (( "(") (binary_expression "puVar28 + 0x7f" (identifier "puVar28") (+ "+") (number_literal "0x7f")) () ")"))))) (; ";")) (expression_statement "uVar6 = uVar16;" (assignment_expression "uVar6 = uVar16" (identifier "uVar6") (= "=") (identifier "uVar16")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

void function_1(type_1 var_1,type_2 var_16,type_2 var_18)

{
  bool bVar1;
  type_3 uVar2;
  type_4 *puVar3;
  int var_20;
  int *piVar5;
  type_5 var_10;
  type_6 var_26;
  type_7 *var_7;
  void *pvVar9;
  int var_41;
  type_3 var_2;
  type_7 bVar12;
  type_7 var_3;
  type_8 *var_52;
  char var_38;
  type_6 var_12;
  type_8 *puVar16;
  type_7 *var_60;
  type_4 *var_21;
  type_8 uVar19;
  type_9 *function;
  type_3 *var_11;
  type_7 *var_40;
  int var_43;
  type_6 var_49;
  type_3 *var_50;
  type_7 *var_58;
  int var_42;
  type_6 var_33;
  type_7 *var_44;
  type_1 unaff_s0;
  type_1 png_ptr_00;
  type_8 *var_37;
  int var_54;
  type_6 var_23;
  int var_13;
  int var_39;
  type_2 unaff_s2;
  type_1 ppVar34;
  type_10 paVar35;
  type_6 var_25;
  int var_57;
  type_11 ppVar38;
  int var_34;
  int var_59;
  type_4 *var_22;
  type_12 *var_36;
  type_12 *var_53;
  type_6 var_8;
  int var_56;
  int var_55;
  type_6 var_61;
  int var_51;
  int var_45;
  type_6 var_48;
  type_6 var_47;
  type_6 var_46;
  type_6 var_28;
  type_3 uStack_7c;
  type_3 uStack_7a;
  type_3 uStack_78;
  int var_35;
  type_1 ppStack_70;
  type_4 *puStack_6c;
  type_2 ppStack_68;
  type_2 ppStack_64;
  type_13 row_info;
  
  puVar3 = PTR___stack_chk_guard_000534bc;
  var_20 = *(int *)PTR___stack_chk_guard_000534bc;
  if (var_1 != (type_1)0x0) {
    ppVar34 = var_1;
    if ((var_1->flags & 0x40) == 0) goto LAB_00021340;
LAB_00021100:
    var_2._0_1_ = var_1->pixel_depth;
    var_2._1_1_ = var_1->channels;
    var_3 = var_1->pixel_depth;
    row_info.width = var_1->iwidth;
    row_info.color_type = var_1->color_type;
    row_info._10_2_ = (type_3)((var_2 & 0xff) << 8) | var_2 >> 8;
    row_info.bit_depth = var_1->bit_depth;
    if (var_3 < 8) {
      row_info.rowbytes = var_3 * row_info.width + 7 >> 3;
    }
    else {
      row_info.rowbytes = (var_3 >> 3) * row_info.width;
    }
    unaff_s0 = var_1;
    unaff_s2 = var_18;
    if ((var_1->interlaced != '\0') && ((var_1->transformations & 2) != 0)) {
      if (var_1->pass < 6) {
                    /* WARNING: Could not emulate address calculation at 0x00021174 */
                    /* WARNING: Treating indirect jump as call */
        (*(type_12 *)(&_gp + *(int *)(var_4 + (type_6)var_1->pass * 4 + 0x14c)))();
        return;
      }
      if ((var_1->row_number & 1) == 0) {
        var_5(var_1);
        goto LAB_000212f4;
      }
    }
    if ((var_1->mode & 4) == 0) goto LAB_000215cc;
    *var_1->row_buf = 0xff;
    var_6(var_1,var_1->row_buf,row_info.rowbytes + 1);
    var_7 = var_1->row_buf;
    var_8 = (type_6)*var_7;
    if (var_8 != 0) {
      if (4 < var_8) goto LAB_000215e0;
      var_9(var_1,&row_info,var_7 + 1,var_1->prev_row + 1,var_8);
      var_7 = var_1->row_buf;
    }
    (*(type_12 *)PTR_memcpy_000534c4)(var_1->prev_row,var_7,row_info.rowbytes + 1);
    if ((((var_1->mng_features_permitted & 4) == 0) || (var_1->filter_type != '@')) ||
       ((row_info.color_type & 2) == 0)) {
LAB_00021248:
      var_10 = var_1->transformations;
    }
    else {
      var_11 = (type_3 *)(var_1->row_buf + 1);
      if (row_info.bit_depth != '\b') {
        if (row_info.bit_depth == '\x10') {
          if (row_info.color_type == '\x02') {
            var_13 = 6;
          }
          else {
            var_13 = 8;
            if (row_info.color_type != '\x06') goto LAB_00021248;
          }
          var_10 = 0;
          if (row_info.width != 0) {
            do {
              var_10 = var_10 + 1;
              var_12 = (type_6)var_11[1] + (type_6)*var_11 & 0xffff;
              var_8 = (type_6)var_11[1] + (type_6)var_11[2] & 0xffff;
              *(char *)((int)var_11 + 1) = (char)var_12;
              *(char *)((int)var_11 + 5) = (char)var_8;
              *(char *)var_11 = (char)(var_12 >> 8);
              *(char *)(var_11 + 2) = (char)(var_8 >> 8);
              var_11 = (type_3 *)((int)var_11 + var_13);
            } while (row_info.width != var_10);
            var_10 = var_1->transformations;
            goto LAB_0002124c;
          }
        }
        goto LAB_00021248;
      }
      if (row_info.color_type == '\x02') {
        var_13 = 3;
      }
      else {
        var_13 = 4;
        if (row_info.color_type != '\x06') goto LAB_00021248;
      }
      var_10 = 0;
      if (row_info.width == 0) goto LAB_00021248;
      do {
        var_2 = *var_11;
        var_10 = var_10 + 1;
        *(char *)var_11 = (char)var_2 + *(char *)var_11;
        *(char *)(var_11 + 1) = (char)var_2 + *(char *)(var_11 + 1);
        var_11 = (type_3 *)((int)var_11 + var_13);
      } while (row_info.width != var_10);
      var_10 = var_1->transformations;
    }
LAB_0002124c:
    if (var_10 != 0) {
      var_14(var_1,&row_info);
    }
    if (var_1->transformed_pixel_depth != '\0') {
      if (var_1->transformed_pixel_depth == row_info.pixel_depth) goto LAB_00021274;
      ppVar34 = var_1;
      (*(type_12 *)PTR_png_error_0005340c)(var_1,var_4 + -0x3c0);
LAB_00021340:
      var_15(ppVar34);
      goto LAB_00021100;
    }
    var_1->transformed_pixel_depth = row_info.pixel_depth;
    var_21 = var_4;
    if (var_1->maximum_pixel_depth < row_info.pixel_depth) goto LAB_000215f4;
LAB_00021274:
    if ((var_1->interlaced == '\0') || ((var_1->transformations & 2) == 0)) {
      if (var_16 != (type_2)0x0) {
        var_17(var_1,var_16,-1);
      }
      if (var_18 != (type_2)0x0) {
        var_17(var_1,var_18,-1);
      }
    }
    else {
      if (var_1->pass < 6) {
        var_19
                  (&row_info,var_1->row_buf + 1,(type_6)var_1->pass,var_1->transformations);
      }
      if (var_18 != (type_2)0x0) {
        var_17(var_1,var_18,1);
      }
      if (var_16 != (type_2)0x0) {
        var_17(var_1,var_16,0);
      }
    }
    var_5(var_1);
    if (var_1->read_row_fn != (type_14)0x0) {
      (*var_1->read_row_fn)(var_1,var_1->row_number,(int)var_1->pass);
    }
  }
LAB_000212f4:
  if (var_20 == *(int *)puVar3) {
    return;
  }
  (*(type_12 *)PTR___stack_chk_fail_00053484)();
  var_1 = unaff_s0;
  var_18 = unaff_s2;
LAB_000215cc:
  (*(type_12 *)PTR_png_error_0005340c)(var_1,var_4 + -0x3fc);
LAB_000215e0:
  var_21 = var_4 + -0x9d4;
  (*(type_12 *)PTR_png_error_0005340c)(var_1,var_21);
LAB_000215f4:
  ppVar34 = var_1;
  var_22 = PTR_png_error_0005340c;
  (*(type_12 *)PTR_png_error_0005340c)(var_1,var_21 + -0x3d8);
  piVar5 = *(int **)(var_22 + 0x31eb8);
  paVar35 = (type_10)ppVar34->jmp_buf_local[0].__jmpbuf[0].__pc;
  var_35 = *piVar5;
  puStack_6c = puVar3;
  var_23 = paVar35->format;
  var_12 = var_23 & 4;
  png_ptr_00 = paVar35->opaque->var_1;
  ppVar38 = paVar35->opaque->info_ptr;
  ppStack_70 = var_1;
  ppStack_68 = var_18;
  ppStack_64 = var_16;
  (**(type_12 **)(var_22 + 0x31d60))(png_ptr_00);
  var_10 = var_24(png_ptr_00);
  var_8 = var_10 & 0xfffffff7 ^ var_23;
  if ((var_8 & 2) == 0) {
    var_25 = 0;
    if ((var_10 & 4) != 0) goto LAB_000217f4;
LAB_000216e8:
    var_36 = *(type_12 **)(var_22 + 0x31d88);
  }
  else {
    if ((var_23 & 2) == 0) {
      (**(type_12 **)(var_22 + 0x31dac))(png_ptr_00,1,0xffffffff,0xffffffff);
      var_25 = var_10 & 1;
    }
    else {
      var_25 = 0;
      (**(type_12 **)(var_22 + 0x31d00))(png_ptr_00);
    }
    var_8 = var_8 & 0xfffffffd;
    if ((var_10 & 4) == 0) goto LAB_000216e8;
LAB_000217f4:
    var_36 = *(type_12 **)(var_22 + 0x31d88);
    if ((paVar35->flags & 4) == 0) {
      (*var_36)(png_ptr_00,0,100000);
      goto joined_r0x0002181c;
    }
  }
  (*var_36)(png_ptr_00,0,0xffffffff);
joined_r0x0002181c:
  if ((var_23 & 4) == 0) {
    var_33 = 0;
    var_20 = -1;
  }
  else {
    var_33 = var_10 & 1;
    var_20 = 100000;
  }
  if ((var_8 & 0x40) != 0) {
    var_33 = 2;
    var_8 = var_8 & 0xffffffbf;
  }
  if (var_25 != 0) goto LAB_00021afc;
  do {
    var_26 = var_8 & 4;
LAB_00021734:
    if (var_26 != 0) {
      if ((var_23 & 4) == 0) {
        (**(type_12 **)(var_22 + 0x31cc8))(png_ptr_00);
      }
      else {
        (**(type_12 **)(var_22 + 0x31cf8))(png_ptr_00);
      }
      var_8 = var_8 & 0xfffffffb;
    }
    if ((var_8 & 1) == 0) {
      var_10 = 0;
    }
    else {
      uVar19 = 0xffff;
      if ((var_10 & 1) == 0) {
        bVar1 = (var_23 & 0x20) != 0;
        if ((var_23 & 4) == 0) {
          uVar19 = 0xff;
        }
        if (bVar1) {
          var_8 = var_8 & 0xffffffdf;
        }
        var_10 = 0;
        (**(type_12 **)(var_22 + 0x31d8c))(png_ptr_00,uVar19,!bVar1);
        var_8 = var_8 & 0xfffffffe;
      }
      else if (var_25 == 0) {
        if ((var_23 & 4) == 0) {
          var_7 = (type_7 *)ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[2];
          if (var_7 == (type_7 *)0x0) {
            var_33 = 2;
            var_10 = 1;
            var_8 = var_8 & 0xfffffffe;
          }
          else {
            var_28 = var_27((short)(var_28 >> 0x10),(type_3)*var_7) & 0xffffff;
            var_10 = 0;
            uStack_7c = (type_3)var_7[1];
            uStack_7a = (type_3)var_7[2];
            uStack_78 = uStack_7c;
            (**(type_12 **)(var_22 + 0x31e58))(png_ptr_00,&var_28,1,0,0);
            var_8 = var_8 & 0xfffffffe;
          }
        }
        else {
          var_10 = 0;
          (**(type_12 **)(var_22 + 0x31d34))(png_ptr_00);
          var_8 = var_8 & 0xfffffffe;
        }
      }
      else {
        var_25 = 2;
        var_10 = 0;
        var_8 = var_8 & 0xfffffffe;
      }
    }
    (**(type_12 **)(var_22 + 0x31d88))(png_ptr_00,var_33,var_20);
    if ((var_8 & 0x10) != 0) {
      if ((var_23 & 2) == 0) {
        var_23 = var_23 & 0xffffffef;
        var_8 = var_8 & 0xffffffef;
      }
      else {
        (**(type_12 **)(var_22 + 0x31cec))(png_ptr_00);
        var_8 = var_8 & 0xffffffef;
      }
    }
    if ((var_8 & 0x20) != 0) {
      if ((var_23 & 1) == 0) {
        var_23 = var_23 & 0xffffffdf;
        var_8 = var_8 & 0xffffffdf;
      }
      else if (var_25 == 2) {
        var_8 = var_8 & 0xffffffdf;
      }
      else {
        (**(type_12 **)(var_22 + 0x31f04))(png_ptr_00);
        var_8 = var_8 & 0xffffffdf;
      }
    }
    if (var_8 != 0) {
      (**(type_12 **)(var_22 + 0x31e08))(png_ptr_00,*(int *)(var_22 + 0x31a18) + -0x390);
      goto LAB_00021ce8;
    }
    var_29(png_ptr_00);
    if ((var_10 == 0) && (var_25 != 2)) {
      var_20 = (**(type_12 **)(var_22 + 0x31e24))(png_ptr_00);
    }
    else {
      var_20 = 0;
    }
    (**(type_12 **)(var_22 + 0x31f14))(png_ptr_00,ppVar38);
    var_8 = ppVar38->color_type & 2;
    if ((ppVar38->color_type & 4) == 0) {
      if (var_10 != 0) goto LAB_00021cf4;
    }
    else if (var_10 == 0) {
      if (var_25 == 2) {
        if ((var_23 & 1) != 0) {
          var_8 = var_8 | 1;
        }
      }
      else {
        var_8 = var_8 | 1;
      }
    }
    if ((var_23 & 0x40) != 0) {
      var_8 = var_8 | 0x40;
    }
    if (ppVar38->bit_depth == '\x10') {
      var_8 = var_8 | 4;
    }
    var_26 = png_ptr_00->transformations;
    if ((var_26 & 1) != 0) {
      var_8 = var_8 | 0x10;
    }
    if (var_25 != 2) {
      if ((var_26 & 0x20000) == 0) goto LAB_00021ac8;
LAB_00021954:
      var_8 = var_8 | 0x20;
LAB_00021958:
      if (var_23 != var_8) goto LAB_00021d04;
      pvVar9 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__sp;
      var_13 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[0];
      if (var_12 != 0) {
        var_13 = var_13 << 1;
      }
      if (var_13 < 0) {
        pvVar9 = (void *)((int)pvVar9 - var_13 * (paVar35->height - 1));
      }
      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4] = (int)pvVar9;
      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[5] = var_13;
      if (var_10 == 0) {
        if (var_25 != 2) break;
        uVar19 = (**(type_12 **)(var_22 + 0x31f08))(png_ptr_00,ppVar38);
        var_20 = (**(type_12 **)(var_22 + 0x31d04))(png_ptr_00,uVar19);
        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = var_20;
        function = (type_9 *)(*(int *)(var_22 + 0x31a6c) + 0x1d18);
      }
      else {
        uVar19 = (**(type_12 **)(var_22 + 0x31f08))(png_ptr_00,ppVar38);
        var_20 = (**(type_12 **)(var_22 + 0x31d04))(png_ptr_00,uVar19);
        ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = var_20;
        function = (type_9 *)(*(int *)(var_22 + 0x31a6c) + 0x2484);
      }
      var_30(paVar35,function,ppVar34);
      var_36 = *(type_12 **)(var_22 + 0x31d20);
      ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[3] = 0;
      (*var_36)(png_ptr_00,var_20);
      goto LAB_000219e8;
    }
    if ((var_23 & 0x20) != 0) {
      var_8 = var_8 | 0x20;
    }
    if ((var_26 & 0x20000) == 0) {
LAB_00021ac8:
      if ((-1 < (int)(var_26 << 7)) || ((png_ptr_00->flags & 0x80) != 0)) goto LAB_00021958;
      if (var_25 != 2) goto LAB_00021954;
    }
    (**(type_12 **)(var_22 + 0x31e08))(png_ptr_00,*(int *)(var_22 + 0x31a18) + -0x340);
LAB_00021afc:
    var_13 = var_31((png_fixed_point_p)&var_28,var_20,(png_ptr_00->colorspace).gamma,100000);
    if ((var_13 == 0) || (var_13 = var_32(var_28), var_13 != 0)) {
      var_26 = var_8 & 4;
      if (var_33 == 1) {
        var_33 = 0;
        var_25 = 2;
      }
      goto LAB_00021734;
    }
    var_25 = 0;
  } while( true );
  while (var_20 = var_20 + -1, -1 < var_20) {
    var_34 = ppVar34->jmp_buf_local[0].__jmpbuf[0].__regs[4];
    for (var_10 = paVar35->height; var_10 != 0; var_10 = var_10 - 1) {
      (**(type_12 **)(var_22 + 0x31da0))(png_ptr_00,var_34,0);
      var_34 = var_34 + var_13;
    }
  }
LAB_000219e8:
  if (var_35 == *piVar5) {
    return;
  }
LAB_00021ce8:
  (**(type_12 **)(var_22 + 0x31e80))();
LAB_00021cf4:
  (**(type_12 **)(var_22 + 0x31e08))();
LAB_00021d04:
  var_36 = *(type_12 **)(var_22 + 0x31e08);
  (*var_36)(png_ptr_00,*(int *)(var_22 + 0x31a18) + -0x318);
  piVar5 = (int *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__pc;
  var_20 = piVar5[2];
  var_37 = *(type_8 **)*piVar5;
  var_13 = ((type_8 *)*piVar5)[1];
  var_8 = piVar5[3];
  if ((var_37[0x4b] & 0x600000) == 0) {
LAB_00022424:
    (**(type_12 **)(var_36 + 0x316f4))(var_37,*(int *)(var_36 + 0x31304) + -0x2f0);
LAB_00022438:
    (**(type_12 **)(var_36 + 0x316f4))(var_37,*(int *)(var_36 + 0x31304) + -0x278);
LAB_0002244c:
    var_34 = *(int *)(var_36 + 0x31304) + -0x290;
    (**(type_12 **)(var_36 + 0x316f4))(var_37,var_34);
  }
  else {
    if ((var_37[0x4b] & 0x80) != 0) {
      (**(type_12 **)(var_36 + 0x316f4))(var_37,*(int *)(var_36 + 0x31304) + -0x2dc);
      goto LAB_00022424;
    }
    var_34 = (**(type_12 **)(var_36 + 0x316b4))(var_37,var_13);
    if (var_34 != 2) goto LAB_00022470;
    var_12 = piVar5[4];
    var_34 = *(int *)(var_36 + 0x31304);
    if ((var_12 & 5) != 1) {
      var_23 = (type_6)*(type_7 *)(var_37 + 0x7f);
      if (var_23 == 0) {
        var_46 = 1;
LAB_00021dd0:
        var_38 = *(char *)(var_13 + 0x18);
        if (var_38 == '\b') {
          var_13 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];
          var_34 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5];
          var_42 = *(int *)(var_36 + 0x31454);
          var_43 = *(int *)(var_36 + 0x31458);
          var_47 = 1;
          var_12 = 0;
          if (var_23 == 1) goto LAB_00022214;
LAB_000220b0:
          var_23 = 0;
          var_25 = 0;
          var_45 = 1;
          var_41 = 1;
LAB_000220c4:
          var_39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];
          if (var_39 == 0) goto LAB_000222bc;
          do {
            var_3 = *(type_7 *)(var_39 + 1);
            var_39 = *(int *)(var_36 + 0x31450);
            var_2 = *(type_3 *)(var_39 + (type_6)var_3 * 2);
            if (var_23 < var_8) {
              var_7 = (type_7 *)(var_13 + var_23 * var_34 + var_20);
              do {
                var_44 = (type_7 *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];
                (**(type_12 **)(var_36 + 0x3168c))(var_37,var_44,0);
                for (var_40 = var_7 + (var_25 - var_20); var_40 < var_7;
                    var_40 = var_40 + var_41) {
                  var_12 = (type_6)var_44[1];
                  if (var_12 == 0) {
                    *var_40 = var_3;
                  }
                  else {
                    bVar12 = *var_44;
                    if (var_12 != 0xff) {
                      var_12 = (0xff - var_12) * (type_6)var_2 +
                               *(type_3 *)(var_39 + (type_6)bVar12 * 2) * var_12;
                      var_33 = var_12 >> 0xf;
                      bVar12 = (type_7)(((var_12 & 0x7fff) * (type_6)*(type_7 *)(var_42 + var_33) >> 0xc)
                                      + (type_6)*(type_3 *)(var_43 + var_33 * 2) >> 8);
                    }
                    *var_40 = bVar12;
                  }
                  var_44 = var_44 + 2;
                }
                var_23 = var_23 + var_45;
                var_7 = var_7 + var_45 * var_34;
              } while (var_23 < var_8);
            }
            while( true ) {
              do {
                if (var_46 == var_47) {
                  return;
                }
                var_23 = (type_6)*(type_7 *)(var_37 + 0x7f);
                var_25 = var_47 + 1;
                var_12 = var_47;
                var_47 = var_25;
                if (var_23 != 1) goto LAB_000220b0;
LAB_00022214:
                var_25 = (var_12 & 1) << (3U - ((int)var_47 >> 1) & 0x1f);
                if (var_12 < 2) {
                  var_23 = ~var_25 & 7;
                  var_33 = 3;
                }
                else {
                  var_33 = (int)(8 - var_47) >> 1;
                  var_23 = ((var_23 << (var_33 & 0x1f)) + -1) - (var_25 & 7);
                }
              } while (var_23 + var_20 >> (var_33 & 0x1f) == 0);
              var_25 = var_25 & 7;
              var_41 = 1 << ((int)(8 - (var_12 + 1)) >> 1 & 0x1fU);
              var_23 = (~var_12 & 1) << (3U - ((int)var_12 >> 1) & 0x1f) & 7;
              if (var_12 < 3) {
                var_45 = 8;
                goto LAB_000220c4;
              }
              var_45 = 8 >> ((int)(var_12 - 1) >> 1 & 0x1fU);
              var_39 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[2];
              if (var_39 != 0) break;
LAB_000222bc:
              if (var_23 < var_8) {
                var_39 = *(int *)(var_36 + 0x31450);
                var_7 = (type_7 *)(var_13 + var_23 * var_34 + var_20);
                do {
                  var_44 = (type_7 *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];
                  (**(type_12 **)(var_36 + 0x3168c))(var_37,var_44,0);
                  for (var_40 = var_7 + (var_25 - var_20); var_40 < var_7;
                      var_40 = var_40 + var_41) {
                    var_12 = (type_6)var_44[1];
                    if (var_12 != 0) {
                      var_3 = *var_44;
                      if (var_12 != 0xff) {
                        var_12 = (type_6)*(type_3 *)(var_39 + (type_6)*var_40 * 2) * (0xff - var_12) +
                                 *(type_3 *)(var_39 + (type_6)var_3 * 2) * var_12;
                        var_33 = var_12 >> 0xf;
                        var_3 = (type_7)(((var_12 & 0x7fff) * (type_6)*(type_7 *)(var_42 + var_33) >> 0xc
                                        ) + (type_6)*(type_3 *)(var_43 + var_33 * 2) >> 8);
                      }
                      *var_40 = var_3;
                    }
                    var_44 = var_44 + 2;
                  }
                  var_23 = var_23 + var_45;
                  var_7 = var_7 + var_45 * var_34;
                } while (var_23 < var_8);
              }
            }
          } while( true );
        }
        if (var_38 == '\x10') {
          var_43 = png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[4];
          var_34 = (var_12 & 1) + 1;
          var_33 = var_12 & 0x21 ^ 0x21;
          var_13 = (png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[5] / 2) * 2;
          var_48 = 1;
          var_25 = 0;
          if (var_23 != 1) goto LAB_00021ecc;
LAB_00021e54:
          var_26 = (var_25 & 1) << (3U - ((int)var_48 >> 1) & 0x1f);
          if (var_25 < 2) {
            var_23 = ~var_26 & 7;
            var_49 = 3;
          }
          else {
            var_49 = (int)(8 - var_48) >> 1;
            var_23 = ((var_23 << (var_49 & 0x1f)) + -1) - (var_26 & 7);
          }
          if (var_23 + var_20 >> (var_49 & 0x1f) != 0) {
            var_23 = (~var_25 & 1) << (3U - ((int)var_25 >> 1) & 0x1f) & 7;
            var_41 = (var_26 & 7) * var_34;
            var_42 = var_34 << ((int)(8 - var_48) >> 1 & 0x1fU);
            if (2 < var_25) {
              var_51 = 8 >> ((int)(var_25 - 1) >> 1 & 0x1fU);
              goto LAB_00021edc;
            }
            var_51 = 8;
            goto LAB_00021edc;
          }
          do {
            if (var_46 == var_48) {
              return;
            }
            while( true ) {
              var_23 = (type_6)*(type_7 *)(var_37 + 0x7f);
              var_26 = var_48 + 1;
              var_25 = var_48;
              var_48 = var_26;
              if (var_23 == 1) goto LAB_00021e54;
LAB_00021ecc:
              var_23 = 0;
              var_41 = 0;
              var_51 = 1;
              var_42 = var_34;
LAB_00021edc:
              if (var_8 <= var_23) break;
              var_11 = (type_3 *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];
              var_25 = var_43 + var_13 * var_23 + var_20 * var_34 * 2;
              var_53 = *(type_12 **)(var_36 + 0x3168c);
              do {
                (*var_53)(var_37,var_11,0);
                var_11 = (type_3 *)png_ptr_00->jmp_buf_local[0].__jmpbuf[0].__regs[3];
                var_50 = var_11;
                for (var_26 = var_41 * 2 + var_20 * var_34 * -2 + var_25; var_26 < var_25;
                    var_26 = var_26 + var_42 * 2) {
                  uVar2 = var_50[1];
                  var_49 = (type_6)uVar2;
                  var_2 = *var_50;
                  if (var_49 == 0) {
                    var_2 = 0;
                  }
                  else if (var_49 != 0xffff) {
                    var_2 = (type_3)((type_6)((int)((ulonglong)(var_49 * var_2 + 0x7fff) *
                                                   0x80008001 >> 0x20) << 1) >> 0x10);
                  }
                  *(type_3 *)((type_6)(var_33 == 0) * 2 + var_26) = var_2;
                  if ((var_12 & 1) != 0) {
                    *(type_3 *)((type_6)(var_33 != 0) * 2 + var_26) = uVar2;
                  }
                  var_50 = var_50 + 2;
                }
                var_23 = var_23 + var_51;
                var_25 = var_25 + var_13 * var_51;
                var_53 = *(type_12 **)(var_36 + 0x3168c);
              } while (var_23 < var_8);
              if (var_46 == var_48) {
                return;
              }
            }
          } while( true );
        }
        goto LAB_00022438;
      }
      var_46 = 7;
      if (var_23 == 1) goto LAB_00021dd0;
      goto LAB_0002244c;
    }
  }
  (**(type_12 **)(var_36 + 0x316f4))(var_37,var_34 + -0x2b0);
LAB_00022470:
  var_53 = *(type_12 **)(var_36 + 0x316f4);
  (*var_53)(var_37,*(int *)(var_36 + 0x31304) + -0x2c8);
  puVar16 = (type_8 *)*var_37;
  var_52 = *(type_8 **)*puVar16;
  var_38 = *(char *)(var_52 + 0x7f);
  if (var_38 == '\0') {
    var_61 = 1;
  }
  else {
    var_61 = 7;
    if (var_38 != '\x01') {
      var_36 = *(type_12 **)(var_53 + 0x30f88);
      (*var_36)(var_52,*(int *)(var_53 + 0x30b98) + -0x290);
      paVar35 = (type_10)*var_52;
      ppVar34 = paVar35->opaque->var_1;
      ppVar38 = paVar35->opaque->info_ptr;
      var_29(ppVar34);
      if (var_52[10] == 0) {
        var_20 = (**(type_12 **)(var_36 + 0x30c58))(ppVar34);
      }
      else {
        var_20 = 0;
      }
      (**(type_12 **)(var_36 + 0x30d48))(ppVar34,ppVar38);
      if ((type_6)var_52[10] < 5) {
                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        (*(var_36 + *(int *)(*(int *)(var_36 + 0x3084c) + 0x164 + var_52[10] * 4) + 0x38820))();
        return;
      }
      var_13 = *(int *)(var_36 + 0x3084c);
LAB_00022980:
      do {
        (**(type_12 **)(var_36 + 0x30c3c))(ppVar34,var_13 + -0x260);
        if (ppVar38->color_type != '\x03') {
          var_13 = *(int *)(var_36 + 0x3084c);
          if (ppVar38->color_type != '\0') goto LAB_00022980;
        }
        var_13 = *(int *)(var_36 + 0x3084c);
        if (ppVar38->bit_depth == '\b') {
          var_34 = var_52[2];
          var_13 = var_52[1];
          if (var_34 < 0) {
            var_13 = var_13 - var_34 * (paVar35->height - 1);
          }
          var_52[6] = var_13;
          var_52[7] = var_34;
          if (var_20 == 0) {
            uVar19 = (**(type_12 **)(var_36 + 0x30d3c))(ppVar34,ppVar38);
            uVar19 = (**(type_12 **)(var_36 + 0x30b38))(ppVar34,uVar19);
            var_52[5] = uVar19;
            var_30(paVar35,(type_9 *)(*(int *)(var_36 + 0x308a0) + 0x2aa0),
                             var_52);
            var_36 = *(type_12 **)(var_36 + 0x30b54);
            var_52[5] = 0;
            (*var_36)(ppVar34,uVar19);
            return;
          }
          while (var_20 = var_20 + -1, -1 < var_20) {
            var_13 = var_52[6];
            for (var_10 = paVar35->height; var_10 != 0; var_10 = var_10 - 1) {
              (**(type_12 **)(var_36 + 0x30bd4))(ppVar34,var_13,0);
              var_13 = var_13 + var_34;
            }
          }
          return;
        }
      } while( true );
    }
  }
  var_8 = puVar16[3];
  var_13 = puVar16[2];
  var_20 = var_37[7];
  if ((puVar16[4] & 2) == 0) {
    var_34 = 1;
    var_55 = var_13;
  }
  else {
    var_34 = 3;
    var_55 = var_13 * 3;
  }
  var_42 = *(int *)(var_53 + 0x30ce4);
  var_43 = *(int *)(var_53 + 0x30ce8);
  var_12 = 0;
  do {
    var_23 = var_12 + 1;
    if (var_38 == '\x01') {
      var_25 = (var_12 & 1) << (3U - ((int)var_23 >> 1) & 0x1f);
      if (var_12 < 2) {
        var_33 = ~var_25 & 7;
        var_26 = 3;
      }
      else {
        var_26 = (int)(8 - var_23) >> 1;
        var_33 = ((1 << (var_26 & 0x1f)) + -1) - (var_25 & 7);
      }
      if (var_33 + var_13 >> (var_26 & 0x1f) != 0) {
        var_56 = (var_25 & 7) * var_34;
        var_41 = var_34 << ((int)(8 - var_23) >> 1 & 0x1fU);
        var_25 = (~var_12 & 1) << (3U - ((int)var_12 >> 1) & 0x1f) & 7;
        if (var_12 < 3) {
          var_39 = 8;
        }
        else {
          var_39 = 8 >> ((int)(var_12 - 1) >> 1 & 0x1fU);
        }
        goto LAB_000225b8;
      }
    }
    else {
      var_25 = 0;
      var_56 = 0;
      var_39 = 1;
      var_41 = var_34;
LAB_000225b8:
      if (var_25 < var_8) {
        var_54 = var_25 * var_20;
        do {
          var_57 = var_37[5];
          (**(type_12 **)(var_53 + 0x30f20))(var_52,var_57,0);
          var_44 = (type_7 *)(var_37[6] + var_54 + var_55);
          var_7 = (type_7 *)(var_37[6] + var_54 + var_56);
          if (var_7 < var_44) {
            var_59 = *(int *)(var_53 + 0x30cec);
            var_40 = (type_7 *)(var_57 + var_34);
            do {
              while( true ) {
                var_12 = (type_6)*var_40;
                var_60 = var_40 + -var_34;
                if (var_12 == 0) break;
                var_58 = var_7;
                do {
                  var_3 = *var_60;
                  if (var_12 != 0xff) {
                    var_33 = (type_6)*(type_3 *)(var_42 + (type_6)*var_58 * 2) * (0xff - var_12) +
                             (type_6)var_3 * 0xffff;
                    var_26 = var_33 >> 0xf;
                    var_3 = (type_7)(((var_33 & 0x7fff) * (type_6)*(type_7 *)(var_43 + var_26) >> 0xc) +
                                    (type_6)*(type_3 *)(var_59 + var_26 * 2) >> 8);
                  }
                  var_60 = var_60 + 1;
                  *var_58 = var_3;
                  var_58 = var_58 + 1;
                } while (var_60 != var_40);
                var_7 = var_7 + var_41;
                var_40 = var_40 + var_34 + 1;
                if (var_44 <= var_7) goto LAB_000226d4;
              }
              var_7 = var_7 + var_41;
              var_40 = var_40 + var_34 + 1;
            } while (var_7 < var_44);
          }
LAB_000226d4:
          var_25 = var_25 + var_39;
          var_54 = var_54 + var_39 * var_20;
        } while (var_25 < var_8);
      }
    }
    if (var_61 == var_23) {
      return;
    }
    var_38 = *(char *)(var_52 + 0x7f);
    var_12 = var_23;
  } while( true );
}


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

int MASKED(undefined4 *param_1,int param_2,int param_3)

{
  bool bVar1;
  ushort uVar2;
  undefined *puVar3;
  int iVar4;
  int *piVar5;
  uint uVar6;
  uint uVar7;
  byte *pbVar8;
  int iVar9;
  int iVar10;
  ushort uVar12;
  byte bVar13;
  byte bVar14;
  char cVar15;
  undefined4 uVar11;
  uint uVar16;
  undefined4 *puVar17;
  byte *pbVar18;
  undefined *puVar19;
  undefined4 uVar20;
  ushort *puVar21;
  byte *pbVar22;
  ushort *puVar23;
  byte *pbVar24;
  int iVar25;
  uint uVar26;
  byte *pbVar27;
  undefined4 *unaff_s0;
  undefined4 *puVar28;
  undefined4 *puVar29;
  int iVar30;
  uint uVar31;
  int iVar32;
  int iVar33;
  int unaff_s2;
  int iVar34;
  int *piVar35;
  uint uVar36;
  int iVar37;
  int iVar38;
  undefined *puVar39;
  code *pcVar40;
  code *pcVar41;
  uint uVar42;
  int local_164;
  int local_15c;
  uint local_154;
  int local_100;
  int local_f8;
  uint local_f4;
  uint local_ec;
  uint local_e8;
  uint local_80;
  ushort local_7c;
  ushort local_7a;
  ushort local_78;
  int local_74;
  undefined4 *local_70;
  undefined *local_6c;
  int local_68;
  int local_64;
  int local_28;
  uint local_24;
  byte local_20;
  char local_1f;
  undefined2 local_1e;
  int local_1c;
  
  puVar3 = PTR___stack_chk_guard_000534bc;
  local_1c = *(int *)PTR___stack_chk_guard_000534bc;
  if (param_1 != (undefined4 *)0x0) {
    if ((param_1[0x4a] & 0x40) == 0) goto LAB_00021340;
LAB_00021100:
    bVar14 = *(byte *)((int)param_1 + 0x202);
    local_28 = param_1[0x71];
    local_20 = *(byte *)((int)param_1 + 0x1ff);
    local_1e = (ushort)((*(ushort *)((int)param_1 + 0x202) & 0xff) << 8) |
               *(ushort *)((int)param_1 + 0x202) >> 8;
    local_1f = *(char *)(param_1 + 0x80);
    if (bVar14 < 8) {
      local_24 = (uint)bVar14 * local_28 + 7 >> 3;
    }
    else {
      local_24 = (uint)(bVar14 >> 3) * local_28;
    }
    unaff_s0 = param_1;
    unaff_s2 = param_3;
    if ((*(char *)(param_1 + 0x7f) != '\0') && ((param_1[0x4b] & 2) != 0)) {
      if (*(byte *)((int)param_1 + 0x1fd) < 6) {
                    /* WARNING: Could not emulate address calculation at 0x00021174 */
                    /* WARNING: Treating indirect jump as call */
        iVar4 = (*(code *)(&_gp_1 + *(int *)(PTR_s_nt_0005301c +
                                            (uint)*(byte *)((int)param_1 + 0x1fd) * 4 + 0x14c)))();
        return iVar4;
      }
      if ((param_1[0x72] & 1) == 0) {
        FUN_00030a70(param_1);
        goto LAB_000212f4;
      }
    }
    if ((param_1[0x49] & 4) == 0) goto LAB_000215cc;
    *(undefined1 *)param_1[0x75] = 0xff;
    FUN_00030678(param_1,param_1[0x75],local_24 + 1);
    pbVar8 = (byte *)param_1[0x75];
    if (*pbVar8 != 0) {
      if (4 < *pbVar8) goto LAB_000215e0;
      FUN_000305d0(param_1,&local_28,pbVar8 + 1,param_1[0x74] + 1);
      pbVar8 = (byte *)param_1[0x75];
    }
    (*(code *)PTR_memcpy_000534c4)(param_1[0x74],pbVar8,local_24 + 1);
    if ((((param_1[0xc0] & 4) == 0) || (*(char *)(param_1 + 0xc1) != '@')) || ((local_20 & 2) == 0))
    {
LAB_00021248:
      iVar4 = param_1[0x4b];
    }
    else {
      puVar21 = (ushort *)(param_1[0x75] + 1);
      if (local_1f != '\b') {
        if (local_1f == '\x10') {
          if (local_20 == 2) {
            iVar4 = 6;
          }
          else {
            iVar4 = 8;
            if (local_20 != 6) goto LAB_00021248;
          }
          iVar34 = 0;
          if (local_28 != 0) {
            do {
              iVar34 = iVar34 + 1;
              uVar6 = (uint)puVar21[1] + (uint)*puVar21 & 0xffff;
              uVar42 = (uint)puVar21[1] + (uint)puVar21[2] & 0xffff;
              *(char *)((int)puVar21 + 1) = (char)uVar6;
              *(char *)((int)puVar21 + 5) = (char)uVar42;
              *(char *)puVar21 = (char)(uVar6 >> 8);
              *(char *)(puVar21 + 2) = (char)(uVar42 >> 8);
              puVar21 = (ushort *)((int)puVar21 + iVar4);
            } while (local_28 != iVar34);
            iVar4 = param_1[0x4b];
            goto LAB_0002124c;
          }
        }
        goto LAB_00021248;
      }
      if (local_20 == 2) {
        iVar4 = 3;
      }
      else {
        iVar4 = 4;
        if (local_20 != 6) goto LAB_00021248;
      }
      iVar34 = 0;
      if (local_28 == 0) goto LAB_00021248;
      do {
        uVar12 = *puVar21;
        iVar34 = iVar34 + 1;
        *(char *)puVar21 = (char)uVar12 + *(char *)puVar21;
        *(char *)(puVar21 + 1) = (char)uVar12 + *(char *)(puVar21 + 1);
        puVar21 = (ushort *)((int)puVar21 + iVar4);
      } while (local_28 != iVar34);
      iVar4 = param_1[0x4b];
    }
LAB_0002124c:
    if (iVar4 != 0) {
      FUN_000277a0(param_1,&local_28);
    }
    if (*(byte *)((int)param_1 + 0x207) != 0) {
      if (*(byte *)((int)param_1 + 0x207) == (byte)local_1e) goto LAB_00021274;
      (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3c0);
LAB_00021340:
      FUN_00030bc4();
      goto LAB_00021100;
    }
    *(byte *)((int)param_1 + 0x207) = (byte)local_1e;
    puVar19 = PTR_s_nt_0005301c;
    if (*(byte *)((int)param_1 + 0x206) < (byte)local_1e) goto LAB_000215f4;
LAB_00021274:
    if ((*(char *)(param_1 + 0x7f) == '\0') || ((param_1[0x4b] & 2) == 0)) {
      if (param_2 != 0) {
        FUN_0002fb24(param_1,param_2,0xffffffff);
      }
      if (param_3 != 0) {
        FUN_0002fb24(param_1,param_3,0xffffffff);
      }
    }
    else {
      if (*(byte *)((int)param_1 + 0x1fd) < 6) {
        FUN_0003010c(&local_28,param_1[0x75] + 1);
      }
      if (param_3 != 0) {
        FUN_0002fb24(param_1,param_3,1);
      }
      if (param_2 != 0) {
        FUN_0002fb24(param_1,param_2,0);
      }
    }
    FUN_00030a70(param_1);
    if ((code *)param_1[0x9c] != (code *)0x0) {
      (*(code *)param_1[0x9c])(param_1,param_1[0x72],*(undefined1 *)((int)param_1 + 0x1fd));
    }
  }
LAB_000212f4:
  iVar4 = *(int *)puVar3;
  if (local_1c == iVar4) {
    return iVar4;
  }
  (*(code *)PTR___stack_chk_fail_00053484)();
  param_1 = unaff_s0;
  param_3 = unaff_s2;
LAB_000215cc:
  (*(code *)PTR_png_error_0005340c)(param_1,PTR_s_nt_0005301c + -0x3fc);
LAB_000215e0:
  puVar19 = PTR_s_nt_0005301c + -0x9d4;
  (*(code *)PTR_png_error_0005340c)(param_1,puVar19);
LAB_000215f4:
  puVar29 = param_1;
  puVar39 = PTR_png_error_0005340c;
  (*(code *)PTR_png_error_0005340c)(param_1,puVar19 + -0x3d8);
  piVar5 = *(int **)(puVar39 + 0x31eb8);
  piVar35 = (int *)*puVar29;
  local_74 = *piVar5;
  local_6c = puVar3;
  uVar31 = piVar35[4];
  uVar16 = uVar31 & 4;
  puVar28 = *(undefined4 **)*piVar35;
  iVar4 = ((undefined4 *)*piVar35)[1];
  local_70 = param_1;
  local_68 = param_3;
  local_64 = param_2;
  (**(code **)(puVar39 + 0x31d60))(puVar28);
  uVar6 = FUN_0001e440(puVar28);
  uVar42 = uVar6 & 0xfffffff7 ^ uVar31;
  if ((uVar42 & 2) == 0) {
    uVar36 = 0;
    if ((uVar6 & 4) != 0) goto LAB_000217f4;
LAB_000216e8:
    pcVar40 = *(code **)(puVar39 + 0x31d88);
  }
  else {
    if ((uVar31 & 2) == 0) {
      (**(code **)(puVar39 + 0x31dac))(puVar28,1,0xffffffff,0xffffffff);
      uVar36 = uVar6 & 1;
    }
    else {
      uVar36 = 0;
      (**(code **)(puVar39 + 0x31d00))(puVar28);
    }
    uVar42 = uVar42 & 0xfffffffd;
    if ((uVar6 & 4) == 0) goto LAB_000216e8;
LAB_000217f4:
    pcVar40 = *(code **)(puVar39 + 0x31d88);
    if ((piVar35[5] & 4U) == 0) {
      (*pcVar40)(puVar28,0,100000);
      goto joined_r0x0002181c;
    }
  }
  (*pcVar40)(puVar28,0,0xffffffff);
joined_r0x0002181c:
  if ((uVar31 & 4) == 0) {
    uVar26 = 0;
    iVar34 = -1;
  }
  else {
    uVar26 = uVar6 & 1;
    iVar34 = 100000;
  }
  if ((uVar42 & 0x40) != 0) {
    uVar26 = 2;
    uVar42 = uVar42 & 0xffffffbf;
  }
  if (uVar36 != 0) goto LAB_00021afc;
  do {
    uVar7 = uVar42 & 4;
LAB_00021734:
    if (uVar7 != 0) {
      if ((uVar31 & 4) == 0) {
        (**(code **)(puVar39 + 0x31cc8))(puVar28);
      }
      else {
        (**(code **)(puVar39 + 0x31cf8))(puVar28);
      }
      uVar42 = uVar42 & 0xfffffffb;
    }
    if ((uVar42 & 1) == 0) {
      uVar6 = 0;
    }
    else {
      uVar20 = 0xffff;
      if ((uVar6 & 1) == 0) {
        bVar1 = (uVar31 & 0x20) != 0;
        if ((uVar31 & 4) == 0) {
          uVar20 = 0xff;
        }
        if (bVar1) {
          uVar42 = uVar42 & 0xffffffdf;
        }
        uVar6 = 0;
        (**(code **)(puVar39 + 0x31d8c))(puVar28,uVar20,!bVar1);
        uVar42 = uVar42 & 0xfffffffe;
      }
      else if (uVar36 == 0) {
        if ((uVar31 & 4) == 0) {
          pbVar8 = (byte *)puVar29[4];
          if (pbVar8 == (byte *)0x0) {
            uVar26 = 2;
            uVar6 = 1;
            uVar42 = uVar42 & 0xfffffffe;
          }
          else {
            local_80 = CONCAT22((short)(local_80 >> 0x10),(ushort)*pbVar8) & 0xffffff;
            uVar6 = 0;
            local_7c = (ushort)pbVar8[1];
            local_7a = (ushort)pbVar8[2];
            local_78 = local_7c;
            (**(code **)(puVar39 + 0x31e58))(puVar28,&local_80,1,0,0);
            uVar42 = uVar42 & 0xfffffffe;
          }
        }
        else {
          uVar6 = 0;
          (**(code **)(puVar39 + 0x31d34))(puVar28);
          uVar42 = uVar42 & 0xfffffffe;
        }
      }
      else {
        uVar36 = 2;
        uVar6 = 0;
        uVar42 = uVar42 & 0xfffffffe;
      }
    }
    (**(code **)(puVar39 + 0x31d88))(puVar28,uVar26,iVar34);
    if ((uVar42 & 0x10) != 0) {
      if ((uVar31 & 2) == 0) {
        uVar31 = uVar31 & 0xffffffef;
        uVar42 = uVar42 & 0xffffffef;
      }
      else {
        (**(code **)(puVar39 + 0x31cec))(puVar28);
        uVar42 = uVar42 & 0xffffffef;
      }
    }
    if ((uVar42 & 0x20) != 0) {
      if ((uVar31 & 1) == 0) {
        uVar31 = uVar31 & 0xffffffdf;
        uVar42 = uVar42 & 0xffffffdf;
      }
      else if (uVar36 == 2) {
        uVar42 = uVar42 & 0xffffffdf;
      }
      else {
        (**(code **)(puVar39 + 0x31f04))(puVar28);
        uVar42 = uVar42 & 0xffffffdf;
      }
    }
    if (uVar42 != 0) {
      (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x390);
      goto LAB_00021ce8;
    }
    FUN_0001e55c();
    if ((uVar6 == 0) && (uVar36 != 2)) {
      iVar34 = (**(code **)(puVar39 + 0x31e24))(puVar28);
    }
    else {
      iVar34 = 0;
    }
    (**(code **)(puVar39 + 0x31f14))(puVar28,iVar4);
    uVar42 = *(byte *)(iVar4 + 0x19) & 2;
    if ((*(byte *)(iVar4 + 0x19) & 4) == 0) {
      if (uVar6 != 0) goto LAB_00021cf4;
    }
    else if (uVar6 == 0) {
      if (uVar36 == 2) {
        if ((uVar31 & 1) != 0) {
          uVar42 = uVar42 | 1;
        }
      }
      else {
        uVar42 = uVar42 | 1;
      }
    }
    if ((uVar31 & 0x40) != 0) {
      uVar42 = uVar42 | 0x40;
    }
    if (*(char *)(iVar4 + 0x18) == '\x10') {
      uVar42 = uVar42 | 4;
    }
    uVar7 = puVar28[0x4b];
    if ((uVar7 & 1) != 0) {
      uVar42 = uVar42 | 0x10;
    }
    if (uVar36 != 2) {
      if ((uVar7 & 0x20000) == 0) goto LAB_00021ac8;
LAB_00021954:
      uVar42 = uVar42 | 0x20;
LAB_00021958:
      if (uVar31 != uVar42) goto LAB_00021d04;
      iVar9 = puVar29[1];
      iVar32 = puVar29[2];
      if (uVar16 != 0) {
        iVar32 = iVar32 << 1;
      }
      if (iVar32 < 0) {
        iVar9 = iVar9 - iVar32 * (piVar35[3] + -1);
      }
      puVar29[6] = iVar9;
      puVar29[7] = iVar32;
      if (uVar6 == 0) {
        if (uVar36 != 2) break;
        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);
        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);
        puVar29[5] = uVar20;
        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x1d18;
      }
      else {
        uVar20 = (**(code **)(puVar39 + 0x31f08))(puVar28,iVar4);
        uVar20 = (**(code **)(puVar39 + 0x31d04))(puVar28,uVar20);
        puVar29[5] = uVar20;
        iVar4 = *(int *)(puVar39 + 0x31a6c) + 0x2484;
      }
      iVar4 = FUN_0001a610(piVar35,iVar4,puVar29);
      pcVar40 = *(code **)(puVar39 + 0x31d20);
      puVar29[5] = 0;
      (*pcVar40)(puVar28,uVar20);
      goto LAB_000219e8;
    }
    if ((uVar31 & 0x20) != 0) {
      uVar42 = uVar42 | 0x20;
    }
    if ((uVar7 & 0x20000) == 0) {
LAB_00021ac8:
      if ((-1 < (int)(uVar7 << 7)) || ((puVar28[0x4a] & 0x80) != 0)) goto LAB_00021958;
      if (uVar36 != 2) goto LAB_00021954;
    }
    (**(code **)(puVar39 + 0x31e08))(puVar28,*(int *)(puVar39 + 0x31a18) + -0x340);
LAB_00021afc:
    iVar9 = FUN_00016f88(&local_80,iVar34,puVar28[0xe6],100000);
    if ((iVar9 == 0) || (iVar9 = FUN_00017f48(local_80), iVar9 != 0)) {
      uVar7 = uVar42 & 4;
      if (uVar26 == 1) {
        uVar26 = 0;
        uVar36 = 2;
      }
      goto LAB_00021734;
    }
    uVar36 = 0;
  } while( true );
  while( true ) {
    iVar34 = iVar34 + -1;
    iVar4 = 1;
    if (iVar34 < 0) break;
    iVar9 = puVar29[6];
    for (iVar4 = piVar35[3]; iVar4 != 0; iVar4 = iVar4 + -1) {
      (**(code **)(puVar39 + 0x31da0))(puVar28,iVar9,0);
      iVar9 = iVar9 + iVar32;
    }
  }
LAB_000219e8:
  if (local_74 == *piVar5) {
    return iVar4;
  }
LAB_00021ce8:
  (**(code **)(puVar39 + 0x31e80))();
LAB_00021cf4:
  (**(code **)(puVar39 + 0x31e08))();
LAB_00021d04:
  pcVar40 = *(code **)(puVar39 + 0x31e08);
  (*pcVar40)(puVar28,*(int *)(puVar39 + 0x31a18) + -0x318);
  piVar5 = (int *)*puVar28;
  iVar4 = piVar5[2];
  puVar29 = *(undefined4 **)*piVar5;
  iVar34 = ((undefined4 *)*piVar5)[1];
  uVar42 = piVar5[3];
  if ((puVar29[0x4b] & 0x600000) == 0) {
LAB_00022424:
    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2f0);
LAB_00022438:
    (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x278);
LAB_0002244c:
    iVar9 = *(int *)(pcVar40 + 0x31304) + -0x290;
    (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9);
  }
  else {
    if ((puVar29[0x4b] & 0x80) != 0) {
      (**(code **)(pcVar40 + 0x316f4))(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2dc);
      goto LAB_00022424;
    }
    iVar9 = (**(code **)(pcVar40 + 0x316b4))(puVar29,iVar34);
    if (iVar9 != 2) goto LAB_00022470;
    uVar6 = piVar5[4];
    iVar9 = *(int *)(pcVar40 + 0x31304);
    if ((uVar6 & 5) != 1) {
      uVar16 = (uint)*(byte *)(puVar29 + 0x7f);
      if (uVar16 == 0) {
        local_e8 = 1;
LAB_00021dd0:
        cVar15 = *(char *)(iVar34 + 0x18);
        if (cVar15 == '\b') {
          iVar34 = puVar28[6];
          iVar9 = puVar28[7];
          iVar25 = *(int *)(pcVar40 + 0x31454);
          iVar32 = *(int *)(pcVar40 + 0x31458);
          local_ec = 1;
          uVar6 = 0;
          if (uVar16 == 1) goto LAB_00022214;
LAB_000220b0:
          uVar16 = 0;
          uVar31 = 0;
          local_f8 = 1;
          iVar10 = 1;
LAB_000220c4:
          iVar33 = puVar28[4];
          if (iVar33 == 0) goto LAB_000222bc;
          do {
            bVar14 = *(byte *)(iVar33 + 1);
            iVar33 = *(int *)(pcVar40 + 0x31450);
            uVar12 = *(ushort *)(iVar33 + (uint)bVar14 * 2);
            if (uVar16 < uVar42) {
              pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);
              do {
                pbVar27 = (byte *)puVar28[5];
                (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);
                for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;
                    pbVar22 = pbVar22 + iVar10) {
                  uVar6 = (uint)pbVar27[1];
                  if (uVar6 == 0) {
                    *pbVar22 = bVar14;
                  }
                  else {
                    bVar13 = *pbVar27;
                    if (uVar6 != 0xff) {
                      uVar6 = (0xff - uVar6) * (uint)uVar12 +
                              *(ushort *)(iVar33 + (uint)bVar13 * 2) * uVar6;
                      uVar36 = uVar6 >> 0xf;
                      bVar13 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc) +
                                      (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);
                    }
                    *pbVar22 = bVar13;
                  }
                  pbVar27 = pbVar27 + 2;
                }
                uVar16 = uVar16 + local_f8;
                pbVar8 = pbVar8 + local_f8 * iVar9;
              } while (uVar16 < uVar42);
            }
            while( true ) {
              do {
                if (local_e8 == local_ec) {
                  return 1;
                }
                uVar16 = (uint)*(byte *)(puVar29 + 0x7f);
                uVar31 = local_ec + 1;
                uVar6 = local_ec;
                local_ec = uVar31;
                if (uVar16 != 1) goto LAB_000220b0;
LAB_00022214:
                uVar31 = (uVar6 & 1) << (3U - ((int)local_ec >> 1) & 0x1f);
                if (uVar6 < 2) {
                  uVar16 = ~uVar31 & 7;
                  uVar36 = 3;
                }
                else {
                  uVar36 = (int)(8 - local_ec) >> 1;
                  uVar16 = ((uVar16 << (uVar36 & 0x1f)) + -1) - (uVar31 & 7);
                }
              } while (uVar16 + iVar4 >> (uVar36 & 0x1f) == 0);
              uVar31 = uVar31 & 7;
              iVar10 = 1 << ((int)(8 - (uVar6 + 1)) >> 1 & 0x1fU);
              uVar16 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;
              if (uVar6 < 3) {
                local_f8 = 8;
                goto LAB_000220c4;
              }
              local_f8 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);
              iVar33 = puVar28[4];
              if (iVar33 != 0) break;
LAB_000222bc:
              if (uVar16 < uVar42) {
                iVar33 = *(int *)(pcVar40 + 0x31450);
                pbVar8 = (byte *)(iVar34 + uVar16 * iVar9 + iVar4);
                do {
                  pbVar27 = (byte *)puVar28[5];
                  (**(code **)(pcVar40 + 0x3168c))(puVar29,pbVar27,0);
                  for (pbVar22 = pbVar8 + (uVar31 - iVar4); pbVar22 < pbVar8;
                      pbVar22 = pbVar22 + iVar10) {
                    uVar6 = (uint)pbVar27[1];
                    if (uVar6 != 0) {
                      bVar14 = *pbVar27;
                      if (uVar6 != 0xff) {
                        uVar6 = (uint)*(ushort *)(iVar33 + (uint)*pbVar22 * 2) * (0xff - uVar6) +
                                *(ushort *)(iVar33 + (uint)bVar14 * 2) * uVar6;
                        uVar36 = uVar6 >> 0xf;
                        bVar14 = (byte)(((uVar6 & 0x7fff) * (uint)*(byte *)(iVar25 + uVar36) >> 0xc)
                                        + (uint)*(ushort *)(iVar32 + uVar36 * 2) >> 8);
                      }
                      *pbVar22 = bVar14;
                    }
                    pbVar27 = pbVar27 + 2;
                  }
                  uVar16 = uVar16 + local_f8;
                  pbVar8 = pbVar8 + local_f8 * iVar9;
                } while (uVar16 < uVar42);
              }
            }
          } while( true );
        }
        if (cVar15 == '\x10') {
          iVar32 = puVar28[6];
          iVar9 = (uVar6 & 1) + 1;
          uVar36 = uVar6 & 0x21 ^ 0x21;
          iVar34 = ((int)puVar28[7] / 2) * 2;
          local_f4 = 1;
          uVar31 = 0;
          if (uVar16 != 1) goto LAB_00021ecc;
LAB_00021e54:
          uVar26 = (uVar31 & 1) << (3U - ((int)local_f4 >> 1) & 0x1f);
          if (uVar31 < 2) {
            uVar16 = ~uVar26 & 7;
            uVar7 = 3;
          }
          else {
            uVar7 = (int)(8 - local_f4) >> 1;
            uVar16 = ((uVar16 << (uVar7 & 0x1f)) + -1) - (uVar26 & 7);
          }
          if (uVar16 + iVar4 >> (uVar7 & 0x1f) != 0) {
            uVar16 = (~uVar31 & 1) << (3U - ((int)uVar31 >> 1) & 0x1f) & 7;
            iVar10 = (uVar26 & 7) * iVar9;
            iVar25 = iVar9 << ((int)(8 - local_f4) >> 1 & 0x1fU);
            if (2 < uVar31) {
              local_100 = 8 >> ((int)(uVar31 - 1) >> 1 & 0x1fU);
              goto LAB_00021edc;
            }
            local_100 = 8;
            goto LAB_00021edc;
          }
          do {
            if (local_e8 == local_f4) {
              return 1;
            }
            while( true ) {
              uVar16 = (uint)*(byte *)(puVar29 + 0x7f);
              uVar26 = local_f4 + 1;
              uVar31 = local_f4;
              local_f4 = uVar26;
              if (uVar16 == 1) goto LAB_00021e54;
LAB_00021ecc:
              uVar16 = 0;
              iVar10 = 0;
              local_100 = 1;
              iVar25 = iVar9;
LAB_00021edc:
              if (uVar42 <= uVar16) break;
              puVar21 = (ushort *)puVar28[5];
              uVar31 = iVar32 + iVar34 * uVar16 + iVar4 * iVar9 * 2;
              pcVar41 = *(code **)(pcVar40 + 0x3168c);
              do {
                (*pcVar41)(puVar29,puVar21,0);
                puVar21 = (ushort *)puVar28[5];
                puVar23 = puVar21;
                for (uVar26 = iVar10 * 2 + iVar4 * iVar9 * -2 + uVar31; uVar26 < uVar31;
                    uVar26 = uVar26 + iVar25 * 2) {
                  uVar2 = puVar23[1];
                  uVar7 = (uint)uVar2;
                  uVar12 = *puVar23;
                  if (uVar7 == 0) {
                    uVar12 = 0;
                  }
                  else if (uVar7 != 0xffff) {
                    uVar12 = (ushort)((uint)((int)((ulonglong)(uVar7 * uVar12 + 0x7fff) * 0x80008001
                                                  >> 0x20) << 1) >> 0x10);
                  }
                  *(ushort *)((uint)(uVar36 == 0) * 2 + uVar26) = uVar12;
                  if ((uVar6 & 1) != 0) {
                    *(ushort *)((uint)(uVar36 != 0) * 2 + uVar26) = uVar2;
                  }
                  puVar23 = puVar23 + 2;
                }
                uVar16 = uVar16 + local_100;
                uVar31 = uVar31 + iVar34 * local_100;
                pcVar41 = *(code **)(pcVar40 + 0x3168c);
              } while (uVar16 < uVar42);
              if (local_e8 == local_f4) {
                return 1;
              }
            }
          } while( true );
        }
        goto LAB_00022438;
      }
      local_e8 = 7;
      if (uVar16 == 1) goto LAB_00021dd0;
      goto LAB_0002244c;
    }
  }
  (**(code **)(pcVar40 + 0x316f4))(puVar29,iVar9 + -0x2b0);
LAB_00022470:
  pcVar41 = *(code **)(pcVar40 + 0x316f4);
  (*pcVar41)(puVar29,*(int *)(pcVar40 + 0x31304) + -0x2c8);
  puVar17 = (undefined4 *)*puVar29;
  puVar28 = *(undefined4 **)*puVar17;
  cVar15 = *(char *)(puVar28 + 0x7f);
  if (cVar15 == '\0') {
    local_154 = 1;
  }
  else {
    local_154 = 7;
    if (cVar15 != '\x01') {
      pcVar40 = *(code **)(pcVar41 + 0x30f88);
      (*pcVar40)(puVar28,*(int *)(pcVar41 + 0x30b98) + -0x290);
      piVar5 = (int *)*puVar28;
      uVar20 = *(undefined4 *)*piVar5;
      iVar4 = ((undefined4 *)*piVar5)[1];
      FUN_0001e55c(uVar20);
      if (puVar28[10] == 0) {
        iVar34 = (**(code **)(pcVar40 + 0x30c58))(uVar20);
      }
      else {
        iVar34 = 0;
      }
      (**(code **)(pcVar40 + 0x30d48))(uVar20,iVar4);
      if ((uint)puVar28[10] < 5) {
                    /* WARNING: Could not recover jumptable at 0x00022870. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        iVar4 = (*(pcVar40 +
                  *(int *)(*(int *)(pcVar40 + 0x3084c) + 0x164 + puVar28[10] * 4) + 0x38820))();
        return iVar4;
      }
      iVar9 = *(int *)(pcVar40 + 0x3084c);
LAB_00022980:
      do {
        (**(code **)(pcVar40 + 0x30c3c))(uVar20,iVar9 + -0x260);
        if (*(char *)(iVar4 + 0x19) != '\x03') {
          iVar9 = *(int *)(pcVar40 + 0x3084c);
          if (*(char *)(iVar4 + 0x19) != '\0') goto LAB_00022980;
        }
        iVar9 = *(int *)(pcVar40 + 0x3084c);
        if (*(char *)(iVar4 + 0x18) == '\b') {
          iVar32 = puVar28[2];
          iVar9 = puVar28[1];
          if (iVar32 < 0) {
            iVar9 = iVar9 - iVar32 * (piVar5[3] + -1);
          }
          puVar28[6] = iVar9;
          puVar28[7] = iVar32;
          if (iVar34 == 0) {
            uVar11 = (**(code **)(pcVar40 + 0x30d3c))(uVar20,iVar4);
            uVar11 = (**(code **)(pcVar40 + 0x30b38))(uVar20,uVar11);
            puVar28[5] = uVar11;
            iVar4 = FUN_0001a610(piVar5,*(int *)(pcVar40 + 0x308a0) + 0x2aa0,puVar28);
            pcVar40 = *(code **)(pcVar40 + 0x30b54);
            puVar28[5] = 0;
            (*pcVar40)(uVar20,uVar11);
            return iVar4;
          }
          while (iVar34 = iVar34 + -1, -1 < iVar34) {
            iVar9 = puVar28[6];
            for (iVar4 = piVar5[3]; iVar4 != 0; iVar4 = iVar4 + -1) {
              (**(code **)(pcVar40 + 0x30bd4))(uVar20,iVar9,0);
              iVar9 = iVar9 + iVar32;
            }
          }
          return 1;
        }
      } while( true );
    }
  }
  uVar42 = puVar17[3];
  iVar34 = puVar17[2];
  iVar4 = puVar29[7];
  if ((puVar17[4] & 2) == 0) {
    iVar9 = 1;
    local_15c = iVar34;
  }
  else {
    iVar9 = 3;
    local_15c = iVar34 * 3;
  }
  iVar25 = *(int *)(pcVar41 + 0x30ce4);
  iVar32 = *(int *)(pcVar41 + 0x30ce8);
  uVar6 = 0;
  do {
    uVar16 = uVar6 + 1;
    if (cVar15 == '\x01') {
      uVar31 = (uVar6 & 1) << (3U - ((int)uVar16 >> 1) & 0x1f);
      if (uVar6 < 2) {
        uVar36 = ~uVar31 & 7;
        uVar26 = 3;
      }
      else {
        uVar26 = (int)(8 - uVar16) >> 1;
        uVar36 = ((1 << (uVar26 & 0x1f)) + -1) - (uVar31 & 7);
      }
      if (uVar36 + iVar34 >> (uVar26 & 0x1f) != 0) {
        local_164 = (uVar31 & 7) * iVar9;
        iVar10 = iVar9 << ((int)(8 - uVar16) >> 1 & 0x1fU);
        uVar31 = (~uVar6 & 1) << (3U - ((int)uVar6 >> 1) & 0x1f) & 7;
        if (uVar6 < 3) {
          iVar33 = 8;
        }
        else {
          iVar33 = 8 >> ((int)(uVar6 - 1) >> 1 & 0x1fU);
        }
        goto LAB_000225b8;
      }
    }
    else {
      uVar31 = 0;
      local_164 = 0;
      iVar33 = 1;
      iVar10 = iVar9;
LAB_000225b8:
      if (uVar31 < uVar42) {
        iVar30 = uVar31 * iVar4;
        do {
          iVar37 = puVar29[5];
          (**(code **)(pcVar41 + 0x30f20))(puVar28,iVar37,0);
          pbVar27 = (byte *)(puVar29[6] + iVar30 + local_15c);
          pbVar8 = (byte *)(puVar29[6] + iVar30 + local_164);
          if (pbVar8 < pbVar27) {
            iVar38 = *(int *)(pcVar41 + 0x30cec);
            pbVar22 = (byte *)(iVar37 + iVar9);
            do {
              while( true ) {
                uVar6 = (uint)*pbVar22;
                pbVar18 = pbVar22 + -iVar9;
                if (uVar6 == 0) break;
                pbVar24 = pbVar8;
                do {
                  bVar14 = *pbVar18;
                  if (uVar6 != 0xff) {
                    uVar36 = (uint)*(ushort *)(iVar25 + (uint)*pbVar24 * 2) * (0xff - uVar6) +
                             (uint)bVar14 * 0xffff;
                    uVar26 = uVar36 >> 0xf;
                    bVar14 = (byte)(((uVar36 & 0x7fff) * (uint)*(byte *)(iVar32 + uVar26) >> 0xc) +
                                    (uint)*(ushort *)(iVar38 + uVar26 * 2) >> 8);
                  }
                  pbVar18 = pbVar18 + 1;
                  *pbVar24 = bVar14;
                  pbVar24 = pbVar24 + 1;
                } while (pbVar18 != pbVar22);
                pbVar8 = pbVar8 + iVar10;
                pbVar22 = pbVar22 + iVar9 + 1;
                if (pbVar27 <= pbVar8) goto LAB_000226d4;
              }
              pbVar8 = pbVar8 + iVar10;
              pbVar22 = pbVar22 + iVar9 + 1;
            } while (pbVar8 < pbVar27);
          }
LAB_000226d4:
          uVar31 = uVar31 + iVar33;
          iVar30 = iVar30 + iVar33 * iVar4;
        } while (uVar31 < uVar42);
      }
    }
    if (local_154 == uVar16) {
      return 1;
    }
    cVar15 = *(char *)(puVar28 + 0x7f);
    uVar6 = uVar16;
  } while( true );
}

