
mp_limb_t mpn_mul_fft_internal
                    (mp_ptr op,mp_size_t pl,int k,mp_ptr *Ap,mp_ptr *Bp,mp_ptr A,mp_ptr B,
                    mp_size_t nprime,mp_size_t l,mp_size_t Mp,int **fft_l,mp_ptr T,int sqr)

{
  bool bVar1;
  uint uVar2;
  mp_limb_t *pmVar3;
  undefined *puVar4;
  undefined *puVar5;
  uint uVar6;
  int iVar7;
  uint uVar8;
  int iVar9;
  undefined4 uVar10;
  undefined4 uVar11;
  undefined4 uVar12;
  int *piVar13;
  int iVar14;
  code *pcVar15;
  code *pcVar16;
  mp_ptr pmVar17;
  mp_ptr pmVar18;
  uint *puVar19;
  uint *puVar20;
  mp_limb_t mVar21;
  mp_ptr pmVar22;
  mp_limb_t *pmVar23;
  int iVar24;
  int **ppiVar25;
  uint uVar26;
  mp_limb_t mVar27;
  mp_ptr pmVar28;
  int **ppiVar29;
  int iVar30;
  int *piVar31;
  uint *puVar32;
  int iVar33;
  mp_ptr pmVar34;
  mp_ptr *ppmVar35;
  mp_limb_t __gmp_c;
  int **ppiVar36;
  mp_ptr pmVar37;
  mp_ptr pmVar38;
  mp_ptr tp;
  int iVar39;
  mp_ptr *ppmVar40;
  uint *puVar41;
  int iVar42;
  int iVar43;
  mp_ptr *local_74;
  int local_68;
  tmp_reentrant_t *__tmp_marker;
  int local_2c;
  
  puVar5 = PTR___stack_chk_guard_00097540;
  iVar33 = 1 << (k & 0x1fU);
  ppiVar36 = (int **)(Mp + k * 4);
  local_2c = *(int *)PTR___stack_chk_guard_00097540;
  iVar30 = l << 1;
  mpn_fft_fft(Ap,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l);
  if (T == (mp_ptr)0x0) {
    mpn_fft_fft(Bp,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l);
    if (Ap == Bp) {
      T = (mp_ptr)&DAT_00000001;
      goto LAB_00040bb8;
    }
    iVar9 = 0x270;
    local_74 = Bp;
    if (0x26f < (int)B) goto LAB_00040bc8;
LAB_0004149c:
    __tmp_marker = (tmp_reentrant_t *)0x0;
    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,(int)B * 8);
    puVar41 = puVar19 + (int)B;
    if (0 < iVar33) {
      iVar9 = 0;
      pmVar28 = *Ap;
      pmVar17 = *local_74;
      if (Ap == local_74) goto LAB_000415dc;
LAB_000414fc:
      pmVar22 = pmVar28 + (int)B;
      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,pmVar17,pmVar28,B);
      mVar21 = *pmVar22;
      pmVar34 = pmVar17 + (int)B;
      if (mVar21 != 0) goto LAB_0004160c;
      do {
        pcVar15 = (code *)PTR___gmpn_sub_n_00097514;
        if (*pmVar34 != 0) goto LAB_00041640;
LAB_00041544:
        iVar7 = (*pcVar15)(pmVar28,puVar19,puVar41,B);
        if ((iVar7 == 0) || (mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0)) {
LAB_0004199c:
          mVar21 = 0;
        }
        else {
          mVar21 = 1;
          if (1 < (int)B) {
            mVar21 = pmVar28[1];
            pmVar28[1] = mVar21 + 1;
            if (mVar21 + 1 == 0) {
              pmVar17 = pmVar28 + 2;
              do {
                if (pmVar17 == pmVar22) {
                  mVar21 = 1;
                  goto LAB_000415b0;
                }
                mVar21 = *pmVar17;
                *pmVar17 = mVar21 + 1;
                pmVar17 = pmVar17 + 1;
              } while (mVar21 + 1 == 0);
            }
            goto LAB_0004199c;
          }
        }
LAB_000415b0:
        *pmVar22 = mVar21;
        iVar9 = iVar9 + 1;
        if (iVar33 == iVar9) goto LAB_00040f88;
        pmVar28 = Ap[iVar9];
        pmVar17 = local_74[iVar9];
        if (Ap != local_74) goto LAB_000414fc;
LAB_000415dc:
        pmVar22 = pmVar28 + (int)B;
        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,pmVar28,B);
        mVar21 = *pmVar22;
        pmVar34 = pmVar17 + (int)B;
      } while (mVar21 == 0);
LAB_0004160c:
      mVar21 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar17,B);
      if (*pmVar34 != 0) {
LAB_00041640:
        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B);
        mVar21 = iVar7 + mVar21 + *pmVar22;
      }
      pcVar15 = (code *)PTR___gmpn_sub_n_00097514;
      if ((((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))
          && (1 < (int)B << 1)) && (uVar6 = puVar19[1], puVar19[1] = uVar6 + 1, uVar6 + 1 == 0)) {
        puVar20 = puVar19 + 2;
        do {
          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;
          if (puVar20 == puVar19 + (int)B * 2) break;
          uVar6 = *puVar20;
          *puVar20 = uVar6 + 1;
          puVar20 = puVar20 + 1;
          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;
        } while (uVar6 + 1 == 0);
      }
      goto LAB_00041544;
    }
  }
  else {
LAB_00040bb8:
    iVar9 = 0x230;
    local_74 = Ap;
    if ((int)B < 0x230) goto LAB_0004149c;
LAB_00040bc8:
    __tmp_marker = (tmp_reentrant_t *)0x0;
    uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(B,T);
    iVar7 = 1 << (uVar6 & 0x1f);
    if ((iVar7 - 1U & (uint)B) != 0) {
      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)
                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1c1,
                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490);
      return mVar21;
    }
    iVar24 = iVar7;
    if (iVar7 < 0x20) {
      iVar24 = 0x20;
    }
    iVar42 = (int)B >> (uVar6 & 0x1f);
    if (iVar24 == 0) {
      trap(7);
    }
    iVar24 = ((int)((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24) / iVar24) * iVar24;
    iVar43 = iVar24;
    if (iVar24 < 0) {
      iVar43 = iVar24 + 0x1f;
    }
    uVar26 = iVar43 >> 5;
    if (iVar9 <= (int)uVar26) {
      while( true ) {
        uVar8 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T);
        iVar9 = 1 << (uVar8 & 0x1f);
        if ((iVar9 - 1U & uVar26) == 0) break;
        uVar26 = -iVar9 & (uVar26 + iVar9) - 1;
        iVar24 = uVar26 << 5;
      }
    }
    if ((int)B <= (int)uVar26) {
      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)
                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1d7,
                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c);
      return mVar21;
    }
    iVar9 = 4 << (uVar6 & 0x1f);
    uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);
    iVar43 = uVar26 + 1;
    uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);
    iVar24 = iVar24 >> (uVar6 & 0x1f);
    iVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)
                      (&__tmp_marker,(iVar43 * 2 << (uVar6 & 0x1f)) << 2);
    uVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar43 * 8);
    iVar43 = iVar9 + (iVar43 << (uVar6 & 0x1f)) * 4;
    ppiVar36 = (int **)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)
                                 (&__tmp_marker,(uVar6 + 1) * 4);
    piVar13 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)
                               (&__tmp_marker,8 << (uVar6 & 0x1f));
    if (-1 < (int)uVar6) {
      uVar8 = 0;
      ppiVar25 = ppiVar36;
      do {
        uVar2 = uVar8 & 0x1f;
        *ppiVar25 = piVar13;
        uVar8 = uVar8 + 1;
        piVar13 = (int *)((int)piVar13 + (4 << uVar2));
        ppiVar25 = ppiVar25 + 1;
      } while (uVar8 != uVar6 + 1);
    }
    mpn_fft_initl(ppiVar36,uVar6);
    if (0 < iVar33) {
      iVar14 = (iVar42 << (uVar6 & 0x1f)) + 1;
      pcVar15 = (code *)(PTR_LAB_00097078 + 0xad4);
      pcVar16 = (code *)(PTR_LAB_00097078 + -0x4ac);
      iVar39 = 0;
      do {
        ppmVar35 = Ap + iVar39;
        pmVar34 = *ppmVar35;
        pmVar28 = pmVar34 + (int)B;
        pmVar17 = pmVar34;
        if (*pmVar28 != 0) {
          do {
            mVar21 = *pmVar17;
            *pmVar17 = mVar21 - 1;
            pmVar17 = pmVar17 + 1;
          } while (mVar21 == 0);
          pmVar17 = pmVar34;
          pmVar22 = B;
          if (*pmVar28 == 0) {
            do {
              pmVar22 = (mp_ptr)((int)pmVar22 + -1);
              *pmVar17 = 0;
              pmVar17 = pmVar17 + 1;
            } while (pmVar22 != (mp_ptr)0x0);
            *pmVar28 = 1;
          }
          else {
            *pmVar28 = 0;
          }
        }
        if (Ap == local_74) {
          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);
        }
        else {
          pmVar28 = local_74[iVar39];
          pmVar22 = pmVar28 + (int)B;
          pmVar17 = pmVar28;
          if (*pmVar22 != 0) {
            do {
              mVar21 = *pmVar17;
              *pmVar17 = mVar21 - 1;
              pmVar17 = pmVar17 + 1;
            } while (mVar21 == 0);
            pmVar17 = B;
            if (*pmVar22 == 0) {
              do {
                pmVar17 = (mp_ptr)((int)pmVar17 + -1);
                *pmVar28 = 0;
                pmVar28 = pmVar28 + 1;
              } while (pmVar17 != (mp_ptr)0x0);
              *pmVar22 = 1;
            }
            else {
              *pmVar22 = 0;
            }
          }
          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);
          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);
        }
        iVar39 = iVar39 + 1;
        mVar21 = (*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,
                            uVar12,T);
        (*ppmVar35)[(int)B] = mVar21;
      } while (iVar33 != iVar39);
    }
  }
LAB_00040f88:
  if (__tmp_marker != (tmp_reentrant_t *)0x0) {
    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
  }
  iVar9 = (int)B + 1;
  ppiVar25 = fft_l + iVar9;
  mpn_fft_fftinv(Ap,iVar33,iVar30,(mp_size_t)B,(mp_ptr)fft_l);
  puVar4 = PTR_LAB_00097078;
  *Bp = (mp_ptr)ppiVar25;
  mpn_fft_mul_2exp_modF((mp_ptr)ppiVar25,*Ap,(int)B * 0x40 - k,(mp_size_t)B);
  ppiVar29 = ppiVar25 + (int)B;
  ppiVar36 = ppiVar25;
  if (*ppiVar29 != (int *)0x0) {
    do {
      piVar13 = *ppiVar36;
      *ppiVar36 = (int *)((int)piVar13 - 1);
      ppiVar36 = ppiVar36 + 1;
    } while (piVar13 == (int *)0x0);
    if (*ppiVar29 == (int *)0x0) {
      pmVar17 = B;
      if (B != (mp_ptr)0x0) {
        do {
          pmVar17 = (mp_ptr)((int)pmVar17 + -1);
          *ppiVar25 = (int *)0x0;
          ppiVar25 = ppiVar25 + 1;
        } while (pmVar17 != (mp_ptr)0x0);
      }
      *ppiVar29 = (int *)&DAT_00000001;
    }
    else {
      *ppiVar29 = (int *)0x0;
    }
  }
  if (1 < iVar33) {
    ppmVar40 = Ap + 1;
    iVar30 = (int)B * 0x40 - ((iVar33 + -1) * l + k);
    ppmVar35 = Bp;
    do {
      ppmVar35 = ppmVar35 + 1;
      pmVar28 = ppmVar40[-1];
      *ppmVar35 = pmVar28;
      (*(code *)(puVar4 + -0xa24))(pmVar28,*ppmVar40,iVar30,B);
      pmVar34 = pmVar28 + (int)B;
      pmVar17 = pmVar28;
      if (*pmVar34 != 0) {
        do {
          mVar21 = *pmVar17;
          *pmVar17 = mVar21 - 1;
          pmVar17 = pmVar17 + 1;
        } while (mVar21 == 0);
        if (*pmVar34 == 0) {
          pmVar17 = B;
          if (B != (mp_ptr)0x0) {
            do {
              pmVar17 = (mp_ptr)((int)pmVar17 + -1);
              *pmVar28 = 0;
              pmVar28 = pmVar28 + 1;
            } while (pmVar17 != (mp_ptr)0x0);
          }
          *pmVar34 = 1;
        }
        else {
          *pmVar34 = 0;
        }
      }
      ppmVar40 = ppmVar40 + 1;
      iVar30 = iVar30 + l;
    } while (ppmVar40 != (mp_ptr *)((int)Ap + (4 << (k & 0x1fU))));
  }
  local_74 = (mp_ptr *)(iVar33 - 1);
  ppiVar36 = fft_l;
  iVar30 = iVar9;
  if (B != (mp_ptr)0xffffffff) {
    do {
      iVar30 = iVar30 + -1;
      *ppiVar36 = (int *)0x0;
      ppiVar36 = ppiVar36 + 1;
    } while (iVar30 != 0);
  }
  iVar42 = (int)local_74 * nprime;
  iVar7 = pl * 2;
  pmVar28 = (mp_ptr)((int)B + iVar42);
  iVar24 = (int)pmVar28 + 1;
  pmVar17 = A;
  iVar30 = iVar24;
  if (iVar24 == 0) {
    pmVar34 = (mp_ptr)0xffffffff;
  }
  else {
    do {
      iVar30 = iVar30 + -1;
      *pmVar17 = 0;
      pmVar17 = pmVar17 + 1;
      pmVar34 = pmVar28;
    } while (iVar30 != 0);
  }
  if (-1 < (int)local_74) {
    local_68 = 0;
    pmVar22 = A + iVar9 + iVar42 + 1;
    pmVar37 = A + (int)pmVar34;
    pmVar38 = A + iVar42;
    ppmVar35 = local_74;
    pmVar17 = B;
LAB_000411b8:
    do {
      uVar6 = (uint)ppmVar35;
      iVar30 = (*(code *)PTR___gmpn_add_n_00097334)
                         (pmVar38,pmVar38,Bp[iVar33 - uVar6 & (uint)local_74],iVar9);
      if ((iVar30 != 0) && (mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0)) {
        if ((int)pmVar17 - (int)B < 2) {
LAB_00041254:
          local_68 = local_68 + 1;
        }
        else {
          mVar21 = *pmVar22;
          *pmVar22 = mVar21 + 1;
          if (mVar21 + 1 == 0) {
            iVar30 = 2;
            pmVar18 = pmVar22;
            do {
              pmVar18 = pmVar18 + 1;
              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;
              mVar21 = *pmVar18;
              iVar30 = iVar30 + 1;
              *pmVar18 = mVar21 + 1;
            } while (mVar21 + 1 == 0);
          }
        }
      }
      pmVar18 = Bp[iVar33 - uVar6 & (uint)local_74];
      fft_l[nprime * 2] = (int *)(uVar6 + 1);
      puVar19 = pmVar18 + (int)B;
      iVar30 = iVar9;
      ppiVar36 = fft_l + (int)B;
      do {
        iVar30 = iVar30 + -1;
        if (iVar30 < 0) goto LAB_000412a0;
        piVar13 = (int *)*puVar19;
        piVar31 = *ppiVar36;
        puVar19 = puVar19 + -1;
        ppiVar36 = ppiVar36 + -1;
      } while (piVar13 == piVar31);
      if (piVar31 < piVar13) {
        mVar21 = *pmVar38;
        *pmVar38 = mVar21 - 1;
        if (mVar21 == 0) {
          if ((int)pmVar17 + 1 < 2) {
LAB_000417cc:
            local_68 = local_68 + -1;
          }
          else {
            mVar21 = pmVar38[1];
            pmVar38[1] = mVar21 - 1;
            if (mVar21 == 0) {
              iVar30 = 2;
              pmVar18 = pmVar38 + 2;
              do {
                bVar1 = (int)pmVar17 + 1 == iVar30;
                iVar30 = iVar30 + 1;
                if (bVar1) goto LAB_000417cc;
                mVar21 = *pmVar18;
                *pmVar18 = mVar21 - 1;
                pmVar18 = pmVar18 + 1;
              } while (mVar21 == 0);
            }
          }
        }
        mVar21 = *pmVar37;
        *pmVar37 = mVar21 - 1;
        if (mVar21 == 0) {
          iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;
          if (iVar30 < 2) {
LAB_00041838:
            pmVar38 = pmVar38 + -nprime;
            pmVar22 = pmVar22 + -nprime;
            local_68 = local_68 + -1;
            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);
            pmVar37 = pmVar37 + -nprime;
            ppmVar35 = (mp_ptr *)(uVar6 - 1);
            if (uVar6 - 1 == 0xffffffff) break;
            goto LAB_000411b8;
          }
          mVar21 = pmVar37[1];
          pmVar37[1] = mVar21 - 1;
          if (mVar21 == 0) {
            iVar43 = 2;
            pmVar18 = pmVar37 + 2;
            do {
              if (iVar43 == iVar30) goto LAB_00041838;
              mVar21 = *pmVar18;
              iVar43 = iVar43 + 1;
              *pmVar18 = mVar21 - 1;
              pmVar18 = pmVar18 + 1;
            } while (mVar21 == 0);
          }
        }
      }
LAB_000412a0:
      pmVar38 = pmVar38 + -nprime;
      pmVar22 = pmVar22 + -nprime;
      pmVar17 = (mp_ptr)((int)pmVar17 + nprime);
      pmVar37 = pmVar37 + -nprime;
      ppmVar35 = (mp_ptr *)(uVar6 - 1);
    } while (uVar6 - 1 != 0xffffffff);
    if (local_68 == uVar6 - 1) {
      iVar30 = iVar24 - pl;
      pmVar17 = A + iVar30;
      mVar21 = *pmVar17;
      *pmVar17 = mVar21 + 1;
      if (mVar21 + 1 == 0) {
        if (pl < 2) {
          pmVar17 = A + iVar30 + -1;
          mVar21 = *pmVar17;
          *pmVar17 = mVar21 - 1;
          if ((mVar21 == 0) && (pl == 1)) {
            mVar21 = pmVar17[1];
LAB_00041a38:
            pmVar17[1] = mVar21 - 1;
            if (mVar21 == 0) {
              iVar30 = 2;
              pmVar17 = pmVar17 + 2;
              do {
                bVar1 = pl < iVar30;
                iVar30 = iVar30 + 1;
                if (bVar1) break;
                mVar21 = *pmVar17;
                *pmVar17 = mVar21 - 1;
                pmVar17 = pmVar17 + 1;
              } while (mVar21 == 0);
            }
          }
LAB_00041a74:
          A[(int)pmVar28] = A[(int)pmVar28] - 1;
        }
        else {
          mVar21 = pmVar17[1];
          pmVar17[1] = mVar21 + 1;
          if (mVar21 + 1 == 0) {
            iVar33 = 2;
            pmVar17 = pmVar17 + 2;
            do {
              bVar1 = pl == iVar33;
              iVar33 = iVar33 + 1;
              if (bVar1) {
                pmVar17 = A + iVar30 + -1;
                mVar21 = *pmVar17;
                *pmVar17 = mVar21 - 1;
                if (mVar21 != 0) goto LAB_00041a74;
                mVar21 = pmVar17[1];
                goto LAB_00041a38;
              }
              mVar21 = *pmVar17;
              *pmVar17 = mVar21 + 1;
              pmVar17 = pmVar17 + 1;
            } while (mVar21 + 1 == 0);
          }
        }
      }
    }
    else if (local_68 == 1) {
      if (iVar24 < iVar7) {
        pmVar17 = A + (iVar24 - pl);
        mVar21 = *pmVar17;
        *pmVar17 = mVar21 - 1;
        if (((mVar21 == 0) && (1 < pl)) &&
           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)) {
          iVar30 = 2;
          pmVar17 = pmVar17 + 2;
          do {
            bVar1 = pl == iVar30;
            iVar30 = iVar30 + 1;
            if (bVar1) break;
            mVar21 = *pmVar17;
            *pmVar17 = mVar21 - 1;
            pmVar17 = pmVar17 + 1;
          } while (mVar21 == 0);
        }
      }
      else {
        pmVar17 = A + iVar24 + pl * -2;
        while( true ) {
          mVar21 = *pmVar17;
          do {
            *pmVar17 = mVar21 + 1;
            if (mVar21 + 1 != 0) goto LAB_000412d8;
            mVar21 = 0;
          } while (iVar7 < 2);
          mVar21 = pmVar17[1];
          pmVar17[1] = mVar21 + 1;
          if (mVar21 + 1 != 0) break;
          iVar30 = 2;
          pmVar28 = pmVar17 + 2;
          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {
            mVar21 = *pmVar28;
            *pmVar28 = mVar21 + 1;
            pmVar28 = pmVar28 + 1;
            if (mVar21 + 1 != 0) goto LAB_000412d8;
          }
        }
      }
    }
  }
LAB_000412d8:
  iVar30 = iVar24 + pl * -2;
  if (iVar30 < 1) {
    if (pl != 0) {
      iVar33 = pl + -1;
      mVar21 = *A;
      pmVar23 = op;
      pmVar3 = A;
      if (iVar33 == 0) {
        *op = mVar21;
      }
      else {
        do {
          *pmVar23 = mVar21;
          iVar33 = iVar33 + -1;
          mVar21 = pmVar3[1];
          pmVar23 = pmVar23 + 1;
          pmVar3 = pmVar3 + 1;
        } while (iVar33 != 0);
        op[pl + -1] = mVar21;
      }
    }
    uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl + iVar30);
    pmVar28 = op + pl + iVar30;
    uVar26 = *pmVar28;
    pmVar17 = (mp_ptr)(uVar26 - uVar6);
    *pmVar28 = (mp_limb_t)pmVar17;
    if (uVar26 < uVar6) {
      if (iVar7 - iVar24 < 2) {
LAB_000413d8:
        mVar21 = *op;
        *op = mVar21 + 1;
        if (mVar21 + 1 == 0) goto LAB_000413ec;
      }
      else {
        mVar21 = pmVar28[1];
        pmVar28[1] = mVar21 - 1;
        if (mVar21 == 0) {
          iVar30 = 2;
          pmVar28 = pmVar28 + 2;
          do {
            bVar1 = iVar7 - iVar24 == iVar30;
            iVar30 = iVar30 + 1;
            if (bVar1) goto LAB_000413d8;
            mVar27 = *pmVar28;
            pmVar17 = (mp_ptr)(mVar27 - 1);
            *pmVar28 = (mp_limb_t)pmVar17;
            mVar21 = 0;
            pmVar28 = pmVar28 + 1;
          } while (mVar27 == 0);
          goto LAB_000418b4;
        }
      }
    }
  }
  else {
    uVar6 = (*(code *)PTR___gmpn_add_n_00097334)(op,A,A + pl * 2,iVar30);
    puVar41 = A + iVar30;
    puVar19 = op + iVar30;
    iVar30 = pl - iVar30;
    uVar26 = *puVar41;
    *puVar19 = uVar6 + uVar26;
    if (uVar6 + uVar26 < uVar6) {
      if (iVar30 < 2) {
LAB_00041994:
        mVar21 = 1;
      }
      else {
        uVar6 = puVar41[1];
        puVar19[1] = uVar6 + 1;
        if (uVar6 + 1 == 0) {
          puVar32 = puVar41 + 2;
          iVar33 = 2;
          puVar20 = puVar19 + 2;
          do {
            if (iVar30 == iVar33) goto LAB_00041994;
            uVar6 = *puVar32;
            iVar33 = iVar33 + 1;
            puVar32 = puVar32 + 1;
            *puVar20 = uVar6 + 1;
            puVar20 = puVar20 + 1;
          } while (uVar6 + 1 == 0);
        }
        else {
          iVar33 = 2;
        }
        if ((puVar19 == puVar41) || (iVar30 <= iVar33)) goto LAB_00041acc;
        puVar20 = puVar41 + iVar33;
        puVar19 = puVar19 + iVar33;
        do {
          uVar6 = *puVar20;
          puVar20 = puVar20 + 1;
          *puVar19 = uVar6;
          puVar19 = puVar19 + 1;
        } while (puVar20 != puVar41 + iVar30);
        mVar21 = 0;
      }
    }
    else {
      if ((puVar19 != puVar41) && (puVar20 = puVar41 + 1, 1 < iVar30)) {
        do {
          puVar19 = puVar19 + 1;
          uVar6 = *puVar20;
          puVar20 = puVar20 + 1;
          *puVar19 = uVar6;
        } while (puVar41 + iVar30 != puVar20);
      }
LAB_00041acc:
      mVar21 = 0;
    }
    pmVar17 = op;
    uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl);
    uVar26 = op[pl];
    op[pl] = uVar26 - uVar6;
    if ((uVar6 <= uVar26) || (mVar21 = mVar21 - 1, mVar21 != 0xffffffff)) goto LAB_000418b4;
    mVar21 = *op;
    *op = mVar21 + 1;
    if (mVar21 + 1 != 0) {
      mVar21 = 0;
      goto LAB_000418b4;
    }
LAB_000413ec:
    if (pl < 2) {
LAB_00041438:
      mVar21 = 1;
      goto LAB_000418b4;
    }
    mVar21 = op[1];
    op[1] = mVar21 + 1;
    if (mVar21 + 1 == 0) {
      iVar30 = 2;
      pmVar28 = op + 2;
      do {
        bVar1 = pl == iVar30;
        iVar30 = iVar30 + 1;
        pmVar17 = (mp_ptr)pl;
        if (bVar1) goto LAB_00041438;
        mVar21 = *pmVar28;
        *pmVar28 = mVar21 + 1;
        pmVar28 = pmVar28 + 1;
      } while (mVar21 + 1 == 0);
    }
  }
  mVar21 = 0;
LAB_000418b4:
  if (local_2c != *(int *)puVar5) {
    (*(code *)PTR___stack_chk_fail_000974d0)();
    return (local_2c + -1 >> ((uint)pmVar17 & 0x1f)) + 1 << ((uint)pmVar17 & 0x1f);
  }
  return mVar21;
}



int FUN_00040ad4(int *param_1,int *param_2,uint param_3,int *param_4,int *param_5,int *param_6,
                uint param_7,int param_8,int param_9,int param_10,undefined4 *param_11,int param_12)

{
  bool bVar1;
  undefined *puVar2;
  undefined *puVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  int *piVar11;
  int iVar12;
  int iVar13;
  code *pcVar14;
  code *pcVar15;
  undefined4 uVar16;
  undefined4 *puVar17;
  uint *puVar18;
  uint *puVar19;
  uint *puVar20;
  int iVar21;
  uint *puVar22;
  int *piVar23;
  int iVar24;
  uint uVar25;
  int *piVar26;
  int iVar27;
  int *piVar28;
  uint uVar29;
  int iVar30;
  int *piVar31;
  int *piVar32;
  int iVar33;
  int iVar34;
  int *local_74;
  int local_68;
  int local_64;
  int local_60;
  int local_58;
  int local_30;
  int local_2c;
  
  puVar3 = PTR___stack_chk_guard_00097540;
  iVar30 = 1 << (param_3 & 0x1f);
  param_10 = param_10 + param_3 * 4;
  local_2c = *(int *)PTR___stack_chk_guard_00097540;
  iVar27 = param_9 << 1;
  FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11);
  if (param_12 == 0) {
    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);
    if (param_4 == param_5) {
      param_12 = 1;
      goto LAB_00040bb8;
    }
    iVar7 = 0x270;
    local_74 = param_5;
    if (0x26f < (int)param_7) goto LAB_00040bc8;
LAB_0004149c:
    local_30 = 0;
    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);
    puVar18 = puVar19 + param_7;
    if (0 < iVar30) {
      iVar5 = 0;
      piVar11 = (int *)*param_4;
      iVar7 = *local_74;
      if (param_4 == local_74) goto LAB_000415dc;
LAB_000414fc:
      puVar22 = (uint *)(piVar11 + param_7);
      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);
      uVar4 = *puVar22;
      piVar23 = (int *)(iVar7 + param_7 * 4);
      if (uVar4 != 0) goto LAB_0004160c;
      do {
        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;
        if (*piVar23 != 0) goto LAB_00041640;
LAB_00041544:
        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);
        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {
LAB_0004199c:
          uVar4 = 0;
        }
        else {
          uVar4 = 1;
          if (1 < (int)param_7) {
            iVar7 = piVar11[1];
            piVar11[1] = iVar7 + 1;
            if (iVar7 + 1 == 0) {
              puVar20 = (uint *)(piVar11 + 2);
              do {
                if (puVar20 == puVar22) {
                  uVar4 = 1;
                  goto LAB_000415b0;
                }
                uVar4 = *puVar20;
                *puVar20 = uVar4 + 1;
                puVar20 = puVar20 + 1;
              } while (uVar4 + 1 == 0);
            }
            goto LAB_0004199c;
          }
        }
LAB_000415b0:
        *puVar22 = uVar4;
        iVar5 = iVar5 + 1;
        if (iVar30 == iVar5) goto LAB_00040f88;
        piVar11 = (int *)param_4[iVar5];
        iVar7 = local_74[iVar5];
        if (param_4 != local_74) goto LAB_000414fc;
LAB_000415dc:
        puVar22 = (uint *)(piVar11 + param_7);
        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);
        uVar4 = *puVar22;
        piVar23 = (int *)(iVar7 + param_7 * 4);
      } while (uVar4 == 0);
LAB_0004160c:
      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);
      if (*piVar23 != 0) {
LAB_00041640:
        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);
        uVar4 = iVar7 + uVar4 + *puVar22;
      }
      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;
      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))
          && (1 < (int)(param_7 << 1))) &&
         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {
        puVar20 = puVar19 + 2;
        do {
          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;
          if (puVar20 == puVar19 + param_7 * 2) break;
          uVar4 = *puVar20;
          *puVar20 = uVar4 + 1;
          puVar20 = puVar20 + 1;
          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;
        } while (uVar4 + 1 == 0);
      }
      goto LAB_00041544;
    }
LAB_00040f88:
    if (local_30 != 0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
    iVar7 = param_7 + 1;
    piVar23 = param_11 + iVar7;
    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);
    puVar2 = PTR_LAB_00097078;
    *param_5 = (int)piVar23;
    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);
    piVar26 = piVar23 + param_7;
    piVar11 = piVar23;
    if (*piVar26 != 0) {
      do {
        iVar27 = *piVar11;
        *piVar11 = iVar27 + -1;
        piVar11 = piVar11 + 1;
      } while (iVar27 == 0);
      if (*piVar26 == 0) {
        uVar4 = param_7;
        if (param_7 != 0) {
          do {
            uVar4 = uVar4 - 1;
            *piVar23 = 0;
            piVar23 = piVar23 + 1;
          } while (uVar4 != 0);
        }
        *piVar26 = 1;
      }
      else {
        *piVar26 = 0;
      }
    }
    if (1 < iVar30) {
      piVar23 = param_4 + 1;
      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);
      piVar11 = param_5;
      do {
        piVar11 = piVar11 + 1;
        piVar31 = (int *)piVar23[-1];
        *piVar11 = (int)piVar31;
        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);
        piVar32 = piVar31 + param_7;
        piVar26 = piVar31;
        if (*piVar32 != 0) {
          do {
            iVar5 = *piVar26;
            *piVar26 = iVar5 + -1;
            piVar26 = piVar26 + 1;
          } while (iVar5 == 0);
          if (*piVar32 == 0) {
            uVar4 = param_7;
            if (param_7 != 0) {
              do {
                uVar4 = uVar4 - 1;
                *piVar31 = 0;
                piVar31 = piVar31 + 1;
              } while (uVar4 != 0);
            }
            *piVar32 = 1;
          }
          else {
            *piVar32 = 0;
          }
        }
        piVar23 = piVar23 + 1;
        iVar27 = iVar27 + param_9;
      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));
    }
    local_74 = (int *)(iVar30 - 1);
    puVar17 = param_11;
    iVar27 = iVar7;
    if (param_7 != 0xffffffff) {
      do {
        iVar27 = iVar27 + -1;
        *puVar17 = 0;
        puVar17 = puVar17 + 1;
      } while (iVar27 != 0);
    }
    iVar5 = (int)local_74 * param_8;
    local_60 = (int)param_2 * 2;
    local_58 = param_7 + iVar5;
    local_64 = local_58 + 1;
    piVar11 = param_6;
    iVar27 = local_64;
    if (local_64 == 0) {
      iVar24 = -1;
    }
    else {
      do {
        iVar27 = iVar27 + -1;
        *piVar11 = 0;
        piVar11 = piVar11 + 1;
        iVar24 = local_58;
      } while (iVar27 != 0);
    }
    if (-1 < (int)local_74) {
      local_68 = 0;
      piVar23 = param_6 + iVar7 + iVar5 + 1;
      piVar26 = param_6 + iVar24;
      piVar31 = param_6 + iVar5;
      piVar11 = local_74;
      uVar4 = param_7;
LAB_000411b8:
      do {
        uVar25 = (uint)piVar11;
        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)
                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);
        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {
          if ((int)(uVar4 - param_7) < 2) {
LAB_00041254:
            local_68 = local_68 + 1;
          }
          else {
            iVar27 = *piVar23;
            *piVar23 = iVar27 + 1;
            if (iVar27 + 1 == 0) {
              iVar27 = 2;
              piVar11 = piVar23;
              do {
                piVar11 = piVar11 + 1;
                if (uVar4 - param_7 == iVar27) goto LAB_00041254;
                iVar33 = *piVar11;
                iVar27 = iVar27 + 1;
                *piVar11 = iVar33 + 1;
              } while (iVar33 + 1 == 0);
            }
          }
        }
        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];
        param_11[param_8 * 2] = uVar25 + 1;
        puVar18 = (uint *)(iVar27 + param_7 * 4);
        iVar27 = iVar7;
        puVar19 = param_11 + param_7;
        do {
          iVar27 = iVar27 + -1;
          if (iVar27 < 0) goto LAB_000412a0;
          uVar6 = *puVar18;
          uVar29 = *puVar19;
          puVar18 = puVar18 + -1;
          puVar19 = puVar19 + -1;
        } while (uVar6 == uVar29);
        if (uVar29 < uVar6) {
          iVar27 = *piVar31;
          *piVar31 = iVar27 + -1;
          if (iVar27 == 0) {
            if ((int)(uVar4 + 1) < 2) {
LAB_000417cc:
              local_68 = local_68 + -1;
            }
            else {
              iVar27 = piVar31[1];
              piVar31[1] = iVar27 + -1;
              if (iVar27 == 0) {
                iVar27 = 2;
                piVar11 = piVar31 + 2;
                do {
                  bVar1 = uVar4 + 1 == iVar27;
                  iVar27 = iVar27 + 1;
                  if (bVar1) goto LAB_000417cc;
                  iVar33 = *piVar11;
                  *piVar11 = iVar33 + -1;
                  piVar11 = piVar11 + 1;
                } while (iVar33 == 0);
              }
            }
          }
          iVar27 = *piVar26;
          *piVar26 = iVar27 + -1;
          if (iVar27 == 0) {
            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;
            if (iVar27 < 2) {
LAB_00041838:
              piVar31 = piVar31 + -param_8;
              piVar23 = piVar23 + -param_8;
              local_68 = local_68 + -1;
              uVar4 = uVar4 + param_8;
              piVar26 = piVar26 + -param_8;
              piVar11 = (int *)(uVar25 - 1);
              if (uVar25 - 1 == 0xffffffff) break;
              goto LAB_000411b8;
            }
            iVar33 = piVar26[1];
            piVar26[1] = iVar33 + -1;
            if (iVar33 == 0) {
              iVar33 = 2;
              piVar11 = piVar26 + 2;
              do {
                if (iVar33 == iVar27) goto LAB_00041838;
                iVar34 = *piVar11;
                iVar33 = iVar33 + 1;
                *piVar11 = iVar34 + -1;
                piVar11 = piVar11 + 1;
              } while (iVar34 == 0);
            }
          }
        }
LAB_000412a0:
        piVar31 = piVar31 + -param_8;
        piVar23 = piVar23 + -param_8;
        uVar4 = uVar4 + param_8;
        piVar26 = piVar26 + -param_8;
        piVar11 = (int *)(uVar25 - 1);
      } while (uVar25 - 1 != 0xffffffff);
      if (local_68 == uVar25 - 1) {
        iVar30 = local_64 - (int)param_2;
        piVar11 = param_6 + iVar30;
        iVar27 = *piVar11;
        *piVar11 = iVar27 + 1;
        if (iVar27 + 1 == 0) {
          iVar27 = iVar30 * 4 + -4;
          if ((int)param_2 < 2) goto LAB_00041ccc;
          iVar27 = piVar11[1];
          piVar11[1] = iVar27 + 1;
          if (iVar27 + 1 == 0) {
            piVar23 = (int *)0x2;
            piVar11 = piVar11 + 2;
            do {
              bVar1 = param_2 == piVar23;
              piVar23 = (int *)((int)piVar23 + 1);
              if (bVar1) {
                piVar11 = param_6 + iVar30 + -1;
                iVar27 = *piVar11;
                *piVar11 = iVar27 + -1;
                if (iVar27 != 0) goto LAB_00041a74;
                iVar27 = piVar11[1];
                goto LAB_00041a38;
              }
              iVar27 = *piVar11;
              *piVar11 = iVar27 + 1;
              piVar11 = piVar11 + 1;
            } while (iVar27 + 1 == 0);
          }
        }
      }
      else if (local_68 == 1) {
        if (local_64 < local_60) {
          piVar11 = param_6 + (local_64 - (int)param_2);
          iVar27 = *piVar11;
          *piVar11 = iVar27 + -1;
          if (((iVar27 == 0) && (1 < (int)param_2)) &&
             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {
            piVar23 = (int *)0x2;
            piVar11 = piVar11 + 2;
            do {
              bVar1 = param_2 == piVar23;
              piVar23 = (int *)((int)piVar23 + 1);
              if (bVar1) break;
              iVar27 = *piVar11;
              *piVar11 = iVar27 + -1;
              piVar11 = piVar11 + 1;
            } while (iVar27 == 0);
          }
        }
        else {
          piVar11 = param_6 + local_64 + (int)param_2 * -2;
          while( true ) {
            iVar27 = *piVar11;
            do {
              *piVar11 = iVar27 + 1;
              if (iVar27 + 1 != 0) goto LAB_000412d8;
              iVar27 = 0;
            } while (local_60 < 2);
            iVar27 = piVar11[1];
            piVar11[1] = iVar27 + 1;
            if (iVar27 + 1 != 0) break;
            iVar27 = 2;
            piVar23 = piVar11 + 2;
            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {
              iVar30 = *piVar23;
              *piVar23 = iVar30 + 1;
              piVar23 = piVar23 + 1;
              if (iVar30 + 1 != 0) goto LAB_000412d8;
            }
          }
        }
      }
    }
  }
  else {
LAB_00040bb8:
    iVar7 = 0x230;
    local_74 = param_4;
    if ((int)param_7 < 0x230) goto LAB_0004149c;
LAB_00040bc8:
    local_30 = 0;
    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);
    iVar5 = 1 << (uVar4 & 0x1f);
    if ((iVar5 - 1U & param_7) == 0) {
      iVar24 = iVar5;
      if (iVar5 < 0x20) {
        iVar24 = 0x20;
      }
      iVar33 = (int)param_7 >> (uVar4 & 0x1f);
      if (iVar24 == 0) {
        trap(7);
      }
      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *
               iVar24;
      iVar34 = iVar24;
      if (iVar24 < 0) {
        iVar34 = iVar24 + 0x1f;
      }
      uVar25 = iVar34 >> 5;
      if (iVar7 <= (int)uVar25) {
        while( true ) {
          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);
          iVar7 = 1 << (uVar6 & 0x1f);
          if ((iVar7 - 1U & uVar25) == 0) break;
          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;
          iVar24 = uVar25 << 5;
        }
      }
      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;
      iVar7 = 4 << (uVar4 & 0x1f);
      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);
      iVar34 = uVar25 + 1;
      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);
      iVar24 = iVar24 >> (uVar4 & 0x1f);
      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)
                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);
      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);
      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;
      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);
      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));
      if (-1 < (int)uVar4) {
        uVar6 = 0;
        piVar23 = piVar11;
        do {
          uVar29 = uVar6 & 0x1f;
          *piVar23 = iVar12;
          uVar6 = uVar6 + 1;
          iVar12 = iVar12 + (4 << uVar29);
          piVar23 = piVar23 + 1;
        } while (uVar6 != uVar4 + 1);
      }
      FUN_0003f560(piVar11,uVar4);
      if (0 < iVar30) {
        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;
        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);
        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);
        iVar12 = 0;
        do {
          piVar32 = param_4 + iVar12;
          piVar31 = (int *)*piVar32;
          piVar26 = piVar31 + param_7;
          piVar23 = piVar31;
          if (*piVar26 != 0) {
            do {
              iVar21 = *piVar23;
              *piVar23 = iVar21 + -1;
              piVar23 = piVar23 + 1;
            } while (iVar21 == 0);
            piVar23 = piVar31;
            uVar6 = param_7;
            if (*piVar26 == 0) {
              do {
                uVar6 = uVar6 - 1;
                *piVar23 = 0;
                piVar23 = piVar23 + 1;
              } while (uVar6 != 0);
              *piVar26 = 1;
            }
            else {
              *piVar26 = 0;
            }
          }
          if (param_4 == local_74) {
            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);
          }
          else {
            piVar26 = (int *)local_74[iVar12];
            piVar28 = piVar26 + param_7;
            piVar23 = piVar26;
            if (*piVar28 != 0) {
              do {
                iVar21 = *piVar23;
                *piVar23 = iVar21 + -1;
                piVar23 = piVar23 + 1;
              } while (iVar21 == 0);
              uVar6 = param_7;
              if (*piVar28 == 0) {
                do {
                  uVar6 = uVar6 - 1;
                  *piVar26 = 0;
                  piVar26 = piVar26 + 1;
                } while (uVar6 != 0);
                *piVar28 = 1;
              }
              else {
                *piVar28 = 0;
              }
            }
            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);
            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);
          }
          iVar12 = iVar12 + 1;
          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11
                              ,uVar10,param_12);
          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;
        } while (iVar30 != iVar12);
      }
      goto LAB_00040f88;
    }
    (*(code *)PTR___gmp_assert_fail_00097420)
              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);
LAB_00041cb0:
    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)
                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);
LAB_00041ccc:
    piVar11 = (int *)((int)param_6 + iVar27);
    iVar27 = *piVar11;
    *piVar11 = iVar27 + -1;
    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {
      iVar27 = piVar11[1];
LAB_00041a38:
      piVar11[1] = iVar27 + -1;
      if (iVar27 == 0) {
        iVar27 = 2;
        piVar11 = piVar11 + 2;
        do {
          bVar1 = (int)param_2 < iVar27;
          iVar27 = iVar27 + 1;
          if (bVar1) break;
          iVar30 = *piVar11;
          *piVar11 = iVar30 + -1;
          piVar11 = piVar11 + 1;
        } while (iVar30 == 0);
      }
    }
LAB_00041a74:
    param_6[local_58] = param_6[local_58] + -1;
  }
LAB_000412d8:
  iVar27 = local_64 - local_60;
  if (iVar27 < 1) {
    if (param_2 != (int *)0x0) {
      iVar30 = (int)param_2 + -1;
      iVar7 = *param_6;
      piVar23 = param_1;
      piVar11 = param_6;
      if (iVar30 == 0) {
        *param_1 = iVar7;
      }
      else {
        do {
          *piVar23 = iVar7;
          iVar30 = iVar30 + -1;
          iVar7 = piVar11[1];
          piVar23 = piVar23 + 1;
          piVar11 = piVar11 + 1;
        } while (iVar30 != 0);
        param_1[(int)param_2 + -1] = iVar7;
      }
    }
    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)
                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);
    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);
    uVar25 = *puVar19;
    piVar11 = (int *)(uVar25 - uVar4);
    *puVar19 = (uint)piVar11;
    if (uVar25 < uVar4) {
      if (local_60 - local_64 < 2) {
LAB_000413d8:
        iVar27 = *param_1;
        *param_1 = iVar27 + 1;
        if (iVar27 + 1 == 0) goto LAB_000413ec;
      }
      else {
        uVar4 = puVar19[1];
        puVar19[1] = uVar4 - 1;
        if (uVar4 == 0) {
          iVar30 = 2;
          puVar19 = puVar19 + 2;
          do {
            bVar1 = local_60 - local_64 == iVar30;
            iVar30 = iVar30 + 1;
            if (bVar1) goto LAB_000413d8;
            uVar4 = *puVar19;
            piVar11 = (int *)(uVar4 - 1);
            *puVar19 = (uint)piVar11;
            iVar27 = 0;
            puVar19 = puVar19 + 1;
          } while (uVar4 == 0);
          goto LAB_000418b4;
        }
      }
    }
  }
  else {
    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);
    puVar18 = (uint *)(param_6 + iVar27);
    puVar19 = (uint *)(param_1 + iVar27);
    iVar27 = (int)param_2 - iVar27;
    uVar25 = *puVar18;
    *puVar19 = uVar4 + uVar25;
    if (uVar4 + uVar25 < uVar4) {
      if (iVar27 < 2) {
LAB_00041994:
        iVar27 = 1;
      }
      else {
        uVar4 = puVar18[1];
        puVar19[1] = uVar4 + 1;
        if (uVar4 + 1 == 0) {
          puVar20 = puVar18 + 2;
          iVar30 = 2;
          puVar22 = puVar19 + 2;
          do {
            if (iVar27 == iVar30) goto LAB_00041994;
            uVar4 = *puVar20;
            iVar30 = iVar30 + 1;
            puVar20 = puVar20 + 1;
            *puVar22 = uVar4 + 1;
            puVar22 = puVar22 + 1;
          } while (uVar4 + 1 == 0);
        }
        else {
          iVar30 = 2;
        }
        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;
        puVar22 = puVar18 + iVar30;
        puVar19 = puVar19 + iVar30;
        do {
          uVar4 = *puVar22;
          puVar22 = puVar22 + 1;
          *puVar19 = uVar4;
          puVar19 = puVar19 + 1;
        } while (puVar22 != puVar18 + iVar27);
        iVar27 = 0;
      }
    }
    else {
      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {
        do {
          puVar19 = puVar19 + 1;
          uVar4 = *puVar22;
          puVar22 = puVar22 + 1;
          *puVar19 = uVar4;
        } while (puVar18 + iVar27 != puVar22);
      }
LAB_00041acc:
      iVar27 = 0;
    }
    piVar11 = param_1;
    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);
    uVar25 = param_1[(int)param_2];
    param_1[(int)param_2] = uVar25 - uVar4;
    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;
    iVar27 = *param_1;
    *param_1 = iVar27 + 1;
    if (iVar27 + 1 != 0) {
      iVar27 = 0;
      goto LAB_000418b4;
    }
LAB_000413ec:
    if ((int)param_2 < 2) {
LAB_00041438:
      iVar27 = 1;
      goto LAB_000418b4;
    }
    iVar27 = param_1[1];
    param_1[1] = iVar27 + 1;
    if (iVar27 + 1 == 0) {
      piVar26 = (int *)0x2;
      piVar23 = param_1 + 2;
      do {
        bVar1 = param_2 == piVar26;
        piVar26 = (int *)((int)piVar26 + 1);
        piVar11 = param_2;
        if (bVar1) goto LAB_00041438;
        iVar27 = *piVar23;
        *piVar23 = iVar27 + 1;
        piVar23 = piVar23 + 1;
      } while (iVar27 + 1 == 0);
    }
  }
  iVar27 = 0;
LAB_000418b4:
  if (local_2c != *(int *)puVar3) {
    (*(code *)PTR___stack_chk_fail_000974d0)();
    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);
  }
  return iVar27;
}


lui gp,0x6
addiu gp,gp,-0x1a94
addu gp,gp,t9
addiu sp,sp,-0xb8
lw v1,-0x7b00(gp)
sll v0,a2,0x2
sw s1,0x94(sp)
sw s4,0xa0(sp)
li s4,0x1
sw s3,0x9c(sp)
sw v1,0x80(sp)
sllv t0,s4,a2
sw a2,0xc0(sp)
lw s1,0xdc(sp)
lw s3,-0x7fc8(gp)
lw a2,0xd8(sp)
addu s1,s1,v0
lw v0,0x0(v1)
lw v1,0xc8(sp)
addiu s3,s3,0x208
lw t1,0xe0(sp)
sll a2,a2,0x1
sw s0,0x90(sp)
or t9,s3,zero
sw v1,0x40(sp)
sw s2,0x98(sp)
or s2,a3,zero
sw gp,0x30(sp)
or a3,a2,zero
sw a2,0x7c(sp)
or a2,s1,zero
sw a0,0x78(sp)
or a0,s2,zero
sw a1,0xbc(sp)
or a1,t0,zero
sw ra,0xb4(sp)
sw t0,0x3c(sp)
sw t1,0x74(sp)
sw t1,0x18(sp)
sw s8,0xb0(sp)
sw s7,0xac(sp)
sw s6,0xa8(sp)
sw s5,0xa4(sp)
sw s4,0x14(sp)
lw v1,0xcc(sp)
lw s0,0xd0(sp)
sw v1,0x70(sp)
sw s0,0x10(sp)
sw v0,0x8c(sp)
bal 0x00040208
_nop
lw v0,0xe4(sp)
beq v0,zero,0x00041448
_lw gp,0x30(sp)
li s1,0x230
sw zero,0x88(sp)
sw s2,0x44(sp)
slt v0,s0,s1
bne v0,zero,0x0004149c
_lw t9,-0x7d50(gp)
lw t9,-0x7d20(gp)
or a0,s0,zero
jalr t9
_lw a1,0xe4(sp)
or s5,v0,zero
lw gp,0x30(sp)
li v0,0x1
sllv v0,v0,s5
addiu s4,v0,-0x1
and s4,s4,s0
bne s4,zero,0x00041c94
_sw v0,0x48(sp)
sll v0,s0,0x5
lw a0,0x48(sp)
li v1,0x20
srav v0,v0,s5
slti s6,a0,0x20
sll v0,v0,0x1
movn a0,v1,s6
srav s7,s0,s5
addu v0,v0,s5
addiu v0,v0,0x2
addu v0,v0,a0
teq a0,zero
div v0,a0
mflo v0
mul s6,v0,a0
bltz s6,0x00041748
_or s3,s6,zero
sra s3,s3,0x5
slt s1,s3,s1
bne s1,zero,0x00040c90
_slt v0,s3,s0
li s1,0x1
b 0x00040c68
_lw s8,0xe4(sp)
addu s3,s3,v0
subu v0,zero,v0
addiu s3,s3,-0x1
and s3,v0,s3
sll s6,s3,0x5
lw t9,-0x7d20(gp)
or a1,s8,zero
jalr t9
_or a0,s3,zero
sllv v0,s1,v0
addiu v1,v0,-0x1
and v1,v1,s3
bne v1,zero,0x00040c54
_lw gp,0x30(sp)
slt v0,s3,s0
beq v0,zero,0x00041cb0
_li v1,0x4
lw t9,-0x7d50(gp)
addiu s1,sp,0x88
sllv v1,v1,s5
or a0,s1,zero
or a1,v1,zero
jalr t9
_sw v1,0x4c(sp)
addiu s8,s3,0x1
lw gp,0x30(sp)
or a0,s1,zero
lw v1,0x4c(sp)
sw v0,0x6c(sp)
lw t9,-0x7d50(gp)
jalr t9
_or a1,v1,zero
sll a1,s8,0x1
lw gp,0x30(sp)
addiu a2,s5,0x1
sllv a1,a1,s5
sw s8,0x50(sp)
sw a2,0x54(sp)
or a0,s1,zero
sll a1,a1,0x2
sw v0,0x4c(sp)
lw t9,-0x7d50(gp)
jalr t9
_srav s8,s6,s5
or a0,s1,zero
lw gp,0x30(sp)
lw v1,0x50(sp)
sw v0,0x60(sp)
lw t9,-0x7d50(gp)
jalr t9
_sll a1,v1,0x3
or a0,s1,zero
lw v1,0x50(sp)
lw gp,0x30(sp)
lw a2,0x54(sp)
sllv v1,v1,s5
sw v0,0x84(sp)
lw v0,0x60(sp)
sll v1,v1,0x2
lw t9,-0x7d50(gp)
sll a1,a2,0x2
addu v0,v0,v1
jalr t9
_sw v0,0x50(sp)
li a1,0x8
lw gp,0x30(sp)
or a0,s1,zero
sllv a1,a1,s5
lw t9,-0x7d50(gp)
jalr t9
_sw v0,0x5c(sp)
lw gp,0x30(sp)
bltz s5,0x00040da0
_lw a2,0x54(sp)
lw a0,0x5c(sp)
or v1,zero,zero
li a3,0x4
sllv a1,a3,v1
sw v0,0x0(a0)
addiu v1,v1,0x1
addu v0,v0,a1
bne v1,a2,0x00040d88
_addiu a0,a0,0x4
lw t9,-0x7fc8(gp)
or a1,s5,zero
lw a0,0x5c(sp)
addiu t9,t9,-0xaa0
bal 0x0003f560
_sll s1,s0,0x2
lw v0,0x3c(sp)
blez v0,0x00040f88
_lw gp,0x30(sp)
sllv v0,s7,s5
lw s6,0x6c(sp)
sw s5,0x68(sp)
addiu v0,v0,0x1
sw s0,0xd0(sp)
lw s5,0x84(sp)
sw v0,0x54(sp)
lw v0,-0x7fc8(gp)
addiu v0,v0,0xad4
sw v0,0x64(sp)
lw v0,-0x7fc8(gp)
addiu v0,v0,-0x4ac
sw v0,0x58(sp)
sll a2,s4,0x2
addu s0,s2,a2
lw t2,0x0(s0)
addu a1,t2,s1
lw v0,0x0(a1)
beq v0,zero,0x00040e58
_lw v0,0x44(sp)
or v0,t2,zero
addiu v0,v0,0x4
lw v1,-0x4(v0)
addiu a0,v1,-0x1
beq v1,zero,0x00040e18
_sw a0,-0x4(v0)
lw v0,0x0(a1)
bne v0,zero,0x000418a0
_or v0,t2,zero
lw v1,0xd0(sp)
addiu v0,v0,0x4
addiu v1,v1,-0x1
bne v1,zero,0x00040e3c
_sw zero,-0x4(v0)
li v0,0x1
sw v0,0x0(a1)
lw v0,0x44(sp)
beq s2,v0,0x00041868
_addu t3,v0,a2
lw a1,0x0(t3)
addu a2,a1,s1
lw v0,0x0(a2)
beq v0,zero,0x00040eb4
_lw v0,0x54(sp)
or v0,a1,zero
addiu v0,v0,0x4
lw v1,-0x4(v0)
addiu a0,v1,-0x1
beq v1,zero,0x00040e78
_sw a0,-0x4(v0)
lw v0,0x0(a2)
bne v0,zero,0x000418a8
_lw v0,0xd0(sp)
addiu a1,a1,0x4
addiu v0,v0,-0x1
bne v0,zero,0x00040e98
_sw zero,-0x4(a1)
li v0,0x1
sw v0,0x0(a2)
lw v0,0x54(sp)
or a3,s3,zero
lw a2,0x48(sp)
or a1,s6,zero
lw a0,0x60(sp)
lw t9,0x58(sp)
sw t3,0x6c(sp)
sw v0,0x14(sp)
sw t2,0x10(sp)
sw s5,0x20(sp)
sw s8,0x1c(sp)
jalr t9
_sw s7,0x18(sp)
or a3,s3,zero
lw t3,0x6c(sp)
lw v1,0x54(sp)
lw a2,0x48(sp)
lw a1,0x4c(sp)
lw v0,0x0(t3)
lw a0,0x50(sp)
lw t9,0x58(sp)
sw s5,0x20(sp)
sw s8,0x1c(sp)
sw s7,0x18(sp)
sw v1,0x14(sp)
jalr t9
_sw v0,0x10(sp)
lw v0,0xe4(sp)
or a3,s6,zero
lw a0,0x0(s0)
addiu s4,s4,0x1
lw a2,0x68(sp)
sw v0,0x2c(sp)
lw v0,0x5c(sp)
lw a1,0xd0(sp)
lw t9,0x64(sp)
sw v0,0x24(sp)
lw v0,0x50(sp)
sw s5,0x28(sp)
sw s8,0x20(sp)
sw v0,0x14(sp)
sw s7,0x1c(sp)
sw s3,0x18(sp)
lw v0,0x4c(sp)
jalr t9
_sw v0,0x10(sp)
lw v1,0x0(s0)
lw gp,0x30(sp)
addu v1,v1,s1
sw v0,0x0(v1)
lw v0,0x3c(sp)
bne v0,s4,0x00040dfc
_sll a2,s4,0x2
lw s0,0xd0(sp)
lw a0,0x88(sp)
bne a0,zero,0x00041c84
_lw t9,-0x7a2c(gp)
lw t9,-0x7fc8(gp)
addiu s3,s0,0x1
lw v0,0x74(sp)
or a3,s0,zero
sll v1,s3,0x2
lw a2,0x7c(sp)
lw a1,0x3c(sp)
addiu t9,t9,0x648
sw v0,0x10(sp)
or a0,s2,zero
sw v1,0x4c(sp)
bal 0x00040648
_addu s4,v0,v1
sll s7,s0,0x6
lw gp,0x30(sp)
or a3,s0,zero
lw v0,0x40(sp)
or a0,s4,zero
lw s5,-0x7fc8(gp)
sw s4,0x0(v0)
lw v0,0xc0(sp)
lw a1,0x0(s2)
addiu t9,s5,-0xa24
subu a2,s7,v0
bal 0x0003f5dc
_sw t9,0x48(sp)
addu a1,s4,s1
lw v0,0x0(a1)
bne v0,zero,0x000416fc
_lw gp,0x30(sp)
lw v0,0x3c(sp)
slti v0,v0,0x2
bne v0,zero,0x00041c38
_lw v0,0x3c(sp)
addiu s6,s2,0x4
lw v1,0xd8(sp)
lw a0,0xc0(sp)
addiu v0,v0,-0x1
lw s8,0xd8(sp)
sw s3,0x50(sp)
mul a1,v0,v1
sw v0,0x44(sp)
li v0,0x4
lw v1,0x40(sp)
sllv v0,v0,a0
addiu s5,v1,0x4
addu s2,s2,v0
addu t1,a1,a0
subu s4,s7,t1
li s7,0x1
or s3,s4,zero
lw s4,-0x4(s6)
or a3,s0,zero
lw t9,0x48(sp)
or a2,s3,zero
sw s4,0x0(s5)
or a0,s4,zero
jalr t9
_lw a1,0x0(s6)
addu a1,s4,s1
lw v0,0x0(a1)
beq v0,zero,0x000410d0
_lw gp,0x30(sp)
or v0,s4,zero
addiu v0,v0,0x4
lw v1,-0x4(v0)
addiu a0,v1,-0x1
beq v1,zero,0x00041094
_sw a0,-0x4(v0)
lw v0,0x0(a1)
bne v0,zero,0x00041440
_nop
beq s0,zero,0x000410cc
_or v0,s0,zero
addiu s4,s4,0x4
addiu v0,v0,-0x1
bne v0,zero,0x000410bc
_sw zero,-0x4(s4)
sw s7,0x0(a1)
addiu s6,s6,0x4
addiu s5,s5,0x4
bne s6,s2,0x00041060
_addu s3,s3,s8
lw s3,0x50(sp)
li v0,-0x1
beq s0,v0,0x00041104
_lw v0,0x74(sp)
or v1,s3,zero
addiu v0,v0,0x4
addiu v1,v1,-0x1
bne v1,zero,0x000410f4
_sw zero,-0x4(v0)
lw v0,0x44(sp)
lw v1,0xd4(sp)
mul a0,v0,v1
lw v0,0xbc(sp)
sll v0,v0,0x1
sw v0,0x58(sp)
addu v0,s0,a0
sw v0,0x60(sp)
addiu v0,v0,0x1
bne v0,zero,0x000416d0
_sw v0,0x54(sp)
lw v1,0x44(sp)
bltz v1,0x000412d4
_li v0,-0x1
lw v1,0xd4(sp)
sll t0,a0,0x2
lw a1,0x74(sp)
addiu a0,a0,0x1
addiu t2,t0,0x4
lw s5,0x44(sp)
sll s2,v1,0x3
sw s0,0xd0(sp)
subu t3,zero,v1
lw v1,0x4c(sp)
sll t4,v0,0x2
sw zero,0x50(sp)
subu v0,a0,v0
addu t2,t2,v1
addu v1,a1,s2
sw v0,0x5c(sp)
sll s4,t3,0x2
sw v1,0x48(sp)
or v0,s3,zero
lw v1,0x70(sp)
or s8,s0,zero
or s3,s4,zero
or s4,v0,zero
addu s7,v1,t2
addu s6,v1,t4
addu s2,v1,t0
addu v1,a1,s1
or s0,s7,zero
sw v1,0x4c(sp)
or s7,s1,zero
or s1,s6,zero
lw v0,0x3c(sp)
or a3,s4,zero
lw t9,-0x7d0c(gp)
or a1,s2,zero
or a0,s2,zero
subu v1,v0,s5
lw v0,0x44(sp)
and v1,v1,v0
lw v0,0x40(sp)
sll v1,v1,0x2
addu s6,v0,v1
jalr t9
_lw a2,0x0(s6)
beq v0,zero,0x0004125c
_lw gp,0x30(sp)
lw v0,-0x4(s0)
addiu v0,v0,0x1
bne v0,zero,0x0004125c
_sw v0,-0x4(s0)
lw v0,0xd0(sp)
subu a2,s8,v0
slti v0,a2,0x2
bne v0,zero,0x00041254
_lw v0,0x50(sp)
lw v0,0x0(s0)
addiu v0,v0,0x1
bne v0,zero,0x0004125c
_sw v0,0x0(s0)
addiu a0,s0,0x4
b 0x0004124c
_li a1,0x2
lw v0,0x0(a0)
addiu a0,a0,0x4
addiu a1,a1,0x1
addiu v0,v0,0x1
bne v0,zero,0x0004125c
_sw v0,-0x4(a0)
bne a2,a1,0x00041234
_lw v0,0x50(sp)
addiu v0,v0,0x1
sw v0,0x50(sp)
lw a1,0x48(sp)
addiu v1,s5,0x1
lw v0,0x0(s6)
lw a0,0x4c(sp)
sw v1,0x0(a1)
addu v0,v0,s7
b 0x0004128c
_or v1,s4,zero
lw a1,0x0(v0)
lw a2,0x4(a0)
bne a1,a2,0x00041764
_addiu v0,v0,-0x4
addiu v1,v1,-0x1
bgez v1,0x0004127c
_addiu a0,a0,-0x4
addiu a0,a0,0x4
lw v0,0xd4(sp)
addiu s5,s5,-0x1
addu s2,s2,s3
addu s0,s0,s3
addu s8,s8,v0
li v0,-0x1
bne s5,v0,0x000411b8
_addu s1,s1,s3
lw v0,0x50(sp)
beq v0,s5,0x000419a4
_lw v1,0x50(sp)
li v0,0x1
beq v1,v0,0x00041b48
_lw v1,0x54(sp)
lw v0,0x54(sp)
lw v1,0x58(sp)
subu s0,v0,v1
bgtz s0,0x000418f8
_lw v0,0xbc(sp)
addu s0,v0,s0
lw v1,0x54(sp)
lw v0,0x58(sp)
subu s5,v0,v1
lw v0,0xbc(sp)
beq v0,zero,0x00041354
_or a3,s0,zero
lw v1,0x70(sp)
addiu v0,v0,-0x1
beq v0,zero,0x00041b3c
_lw a1,0x0(v1)
addiu a0,v1,0x4
lw v1,0x78(sp)
addiu v1,v1,0x4
sw a1,-0x4(v1)
addiu a0,a0,0x4
addiu v0,v0,-0x1
bne v0,zero,0x0004131c
_lw a1,-0x4(a0)
lw v0,0xbc(sp)
lw v1,0x78(sp)
sll v0,v0,0x2
addiu v0,v0,-0x4
addu v0,v1,v0
sw a1,0x0(v0)
lw v0,0xbc(sp)
or a3,s0,zero
lw s1,0x78(sp)
sll s0,s0,0x2
lw t9,-0x7b2c(gp)
sll a2,v0,0x2
lw v0,0x70(sp)
or a1,s1,zero
or a0,s1,zero
jalr t9
_addu a2,v0,a2
addu v1,s1,s0
lw gp,0x30(sp)
lw a0,0x0(v1)
subu a1,a0,v0
sltu v0,a0,v0
beq v0,zero,0x000418b0
_sw a1,0x0(v1)
slti v0,s5,0x2
bne v0,zero,0x000413d8
_nop
lw s1,0x4(v1)
addiu v0,s1,-0x1
bne s1,zero,0x000418b0
_sw v0,0x4(v1)
addiu v0,v1,0x8
b 0x000413d0
_li v1,0x2
lw a0,0x0(v0)
addiu v0,v0,0x4
addiu a1,a0,-0x1
bne a0,zero,0x000418b4
_sw a1,-0x4(v0)
bne s5,v1,0x000413bc
_addiu v1,v1,0x1
lw v1,0x78(sp)
lw v0,0x0(v1)
addiu v0,v0,0x1
bne v0,zero,0x000418b0
_sw v0,0x0(v1)
lw v0,0xbc(sp)
slti v0,v0,0x2
bne v0,zero,0x00041438
_lw v1,0x78(sp)
lw v0,0x4(v1)
addiu v0,v0,0x1
bne v0,zero,0x000418b0
_sw v0,0x4(v1)
addiu v1,v1,0x8
lw a1,0xbc(sp)
b 0x00041430
_li a0,0x2
lw v0,0x0(v1)
addiu v1,v1,0x4
addiu v0,v0,0x1
bne v0,zero,0x000418b0
_sw v0,-0x4(v1)
bne a1,a0,0x0004141c
_addiu a0,a0,0x1
b 0x000418b4
_li s1,0x1
b 0x000410d0
_sw zero,0x0(a1)
lw v0,0x74(sp)
or a2,s1,zero
lw s1,0x40(sp)
or t9,s3,zero
lw a3,0x7c(sp)
lw a1,0x3c(sp)
sw v0,0x18(sp)
or a0,s1,zero
sw s4,0x14(sp)
bal 0x00040208
_sw s0,0x10(sp)
lw gp,0x30(sp)
beq s2,s1,0x00041cfc
_sw zero,0x88(sp)
lw v0,0x40(sp)
li s1,0x270
sw v0,0x44(sp)
slt v0,s0,s1
beq v0,zero,0x00040bc8
_lw t9,-0x7d20(gp)
lw t9,-0x7d50(gp)
sll s5,s0,0x3
addiu a0,sp,0x88
or a1,s5,zero
jalr t9
_sll s1,s0,0x2
or s4,v0,zero
lw gp,0x30(sp)
addu s6,v0,s1
lw v0,0x3c(sp)
blez v0,0x00040f88
_sll s7,s0,0x1
slti v0,s7,0x2
lw a0,0x44(sp)
or s3,zero,zero
sw v0,0x4c(sp)
slti v0,s0,0x2
sw v0,0x50(sp)
sll v0,s3,0x2
addu s5,s4,s5
addu v1,s2,v0
addu v0,a0,v0
lw s7,0x0(v1)
beq s2,a0,0x000415dc
_lw v0,0x0(v0)
lw t9,-0x7cdc(gp)
addu s8,s7,s1
or a1,v0,zero
sw v0,0x48(sp)
or a3,s0,zero
or a2,s7,zero
jalr t9
_or a0,s4,zero
lw v0,0x48(sp)
lw t0,0x0(s8)
lw gp,0x30(sp)
bne t0,zero,0x0004160c
_addu t2,v0,s1
lw v0,0x0(t2)
bne v0,zero,0x00041640
_lw t9,-0x7d0c(gp)
lw t9,-0x7b2c(gp)
or a3,s0,zero
or a2,s6,zero
or a1,s4,zero
jalr t9
_or a0,s7,zero
beq v0,zero,0x0004199c
_lw gp,0x30(sp)
lw v0,0x0(s7)
addiu v0,v0,0x1
bne v0,zero,0x0004199c
_sw v0,0x0(s7)
lw v0,0x50(sp)
bne v0,zero,0x000415b0
_li v0,0x1
lw v0,0x4(s7)
addiu v0,v0,0x1
bne v0,zero,0x0004199c
_sw v0,0x4(s7)
b 0x000415a4
_addiu v0,s7,0x8
lw v1,0x0(v0)
addiu v0,v0,0x4
addiu v1,v1,0x1
bne v1,zero,0x0004199c
_sw v1,-0x4(v0)
bne v0,s8,0x00041590
_nop
li v0,0x1
sw v0,0x0(s8)
addiu s3,s3,0x1
lw v0,0x3c(sp)
beq v0,s3,0x00040f88
_lw a0,0x44(sp)
sll v0,s3,0x2
addu v1,s2,v0
addu v0,a0,v0
lw s7,0x0(v1)
bne s2,a0,0x000414fc
_lw v0,0x0(v0)
lw t9,-0x7cac(gp)
addu s8,s7,s1
sw v0,0x48(sp)
or a2,s0,zero
or a1,s7,zero
jalr t9
_or a0,s4,zero
lw v0,0x48(sp)
lw t0,0x0(s8)
lw gp,0x30(sp)
beq t0,zero,0x00041530
_addu t2,v0,s1
lw t9,-0x7d0c(gp)
or a0,s6,zero
sw t2,0x48(sp)
or a3,s0,zero
or a2,v0,zero
jalr t9
_or a1,s6,zero
lw t2,0x48(sp)
or t0,v0,zero
lw a0,0x0(t2)
beq a0,zero,0x0004166c
_lw gp,0x30(sp)
lw t9,-0x7d0c(gp)
or a0,s6,zero
sw t0,0x48(sp)
or a3,s0,zero
or a2,s7,zero
jalr t9
_or a1,s6,zero
lw t0,0x48(sp)
lw a0,0x0(s8)
lw gp,0x30(sp)
addu t0,v0,t0
addu t0,t0,a0
beq t0,zero,0x00041540
_lw t9,-0x7b2c(gp)
lw v0,0x0(s4)
addu v0,t0,v0
sltu t0,v0,t0
beq t0,zero,0x00041540
_sw v0,0x0(s4)
lw v0,0x4c(sp)
bne v0,zero,0x00041544
_or a3,s0,zero
lw v0,0x4(s4)
addiu v0,v0,0x1
bne v0,zero,0x00041540
_sw v0,0x4(s4)
b 0x000416c0
_addiu v0,s4,0x8
lw v1,0x0(v0)
addiu v0,v0,0x4
addiu v1,v1,0x1
bne v1,zero,0x0004153c
_sw v1,-0x4(v0)
bne v0,s5,0x000416ac
_lw t9,-0x7b2c(gp)
b 0x00041544
_or a3,s0,zero
lw v1,0x54(sp)
lw v0,0x70(sp)
addiu v0,v0,0x4
addiu v1,v1,-0x1
bne v1,zero,0x000416d8
_sw zero,-0x4(v0)
lw v1,0x44(sp)
bgez v1,0x0004113c
_lw v0,0x60(sp)
b 0x000412d8
_lw v0,0x54(sp)
or v0,s4,zero
addiu v0,v0,0x4
lw v1,-0x4(v0)
addiu a0,v1,-0x1
beq v1,zero,0x00041700
_sw a0,-0x4(v0)
lw v0,0x0(a1)
bne v0,zero,0x00041a94
_nop
beq s0,zero,0x00041740
_li v0,0x1
or v0,s0,zero
addiu s4,s4,0x4
addiu v0,v0,-0x1
bne v0,zero,0x0004172c
_sw zero,-0x4(s4)
li v0,0x1
b 0x0004100c
_sw v0,0x0(a1)
addiu s3,s6,0x1f
sra s3,s3,0x5
slt s1,s3,s1
bne s1,zero,0x00040c90
_slt v0,s3,s0
b 0x00040c4c
_li s1,0x1
sltu a1,a2,a1
beq a1,zero,0x000412a0
_lw v0,0xd4(sp)
lw v0,0x0(s2)
addiu v1,v0,-0x1
bne v0,zero,0x000417d4
_sw v1,0x0(s2)
addiu a2,s8,0x1
slti v0,a2,0x2
bne v0,zero,0x000417cc
_lw v0,0x50(sp)
lw v0,0x4(s2)
addiu v1,v0,-0x1
bne v0,zero,0x000417d4
_sw v1,0x4(s2)
addiu v0,s2,0x8
b 0x000417c0
_li v1,0x2
lw a0,0x0(v0)
addiu v0,v0,0x4
addiu a1,a0,-0x1
bne a0,zero,0x000417d4
_sw a1,-0x4(v0)
bne a2,v1,0x000417ac
_addiu v1,v1,0x1
lw v0,0x50(sp)
addiu v0,v0,-0x1
sw v0,0x50(sp)
lw v0,0x0(s1)
addiu v1,v0,-0x1
bne v0,zero,0x0004129c
_sw v1,0x0(s1)
lw v0,0x5c(sp)
addu a2,v0,s8
slti v0,a2,0x2
bne v0,zero,0x00041838
_lw v0,0x50(sp)
lw v0,0x4(s1)
addiu v1,v0,-0x1
bne v0,zero,0x0004129c
_sw v1,0x4(s1)
addiu v0,s1,0x8
b 0x0004182c
_li v1,0x2
lw a0,0x0(v0)
addiu v0,v0,0x4
addiu v1,v1,0x1
addiu a1,a0,-0x1
bne a0,zero,0x0004129c
_sw a1,-0x4(v0)
bne v1,a2,0x00041814
_nop
lw v0,0x50(sp)
addiu s5,s5,-0x1
addu s2,s2,s3
addu s0,s0,s3
addiu v0,v0,-0x1
sw v0,0x50(sp)
lw v0,0xd4(sp)
addu s8,s8,v0
li v0,-0x1
bne s5,v0,0x000411b8
_addu s1,s1,s3
b 0x000412c0
_lw v0,0x50(sp)
lw v0,0x54(sp)
or a3,s3,zero
lw a2,0x48(sp)
or a1,s6,zero
lw a0,0x60(sp)
lw t9,0x58(sp)
sw s5,0x20(sp)
sw s8,0x1c(sp)
sw s7,0x18(sp)
sw v0,0x14(sp)
jalr t9
_sw t2,0x10(sp)
b 0x00040f20
_lw v0,0xe4(sp)
b 0x00040e54
_sw zero,0x0(a1)
b 0x00040eb0
_sw zero,0x0(a2)
or s1,zero,zero
lw v1,0x80(sp)
or v0,s1,zero
lw a0,0x8c(sp)
lw v1,0x0(v1)
bne a0,v1,0x00041d10
_lw ra,0xb4(sp)
lw s8,0xb0(sp)
lw s7,0xac(sp)
lw s6,0xa8(sp)
lw s5,0xa4(sp)
lw s4,0xa0(sp)
lw s3,0x9c(sp)
lw s2,0x98(sp)
lw s1,0x94(sp)
lw s0,0x90(sp)
jr ra
_addiu sp,sp,0xb8
lw s1,0x70(sp)
sll a2,v0,0x3
lw s2,0x78(sp)
or a3,s0,zero
lw t9,-0x7d0c(gp)
addu a2,s1,a2
or a0,s2,zero
jalr t9
_or a1,s1,zero
sll v1,s0,0x2
lw gp,0x30(sp)
addu a3,s1,v1
addu a0,s2,v1
lw v1,0xbc(sp)
subu s0,v1,s0
lw v1,0x0(a3)
addu v1,v0,v1
sltu v0,v1,v0
beq v0,zero,0x00041a9c
_sw v1,0x0(a0)
slti v0,s0,0x2
bne v0,zero,0x00041994
_nop
lw v0,0x4(a3)
addiu v0,v0,0x1
bne v0,zero,0x00041c44
_sw v0,0x4(a0)
addiu a2,a3,0x8
addiu a1,a0,0x8
b 0x0004198c
_li v1,0x2
lw v0,0x0(a2)
addiu v1,v1,0x1
addiu a2,a2,0x4
addiu v0,v0,0x1
bne v0,zero,0x00041c48
_sw v0,-0x4(a1)
bne s0,v1,0x00041974
_addiu a1,a1,0x4
b 0x00041ad0
_li s1,0x1
b 0x000415b0
_or v0,zero,zero
lw v0,0x54(sp)
lw v1,0xbc(sp)
subu a1,v0,v1
lw v0,0x70(sp)
sll a1,a1,0x2
addu v1,v0,a1
lw v0,0x0(v1)
addiu v0,v0,0x1
bne v0,zero,0x000412d4
_sw v0,0x0(v1)
lw v0,0xbc(sp)
slti v0,v0,0x2
bne v0,zero,0x00041ccc
_addiu v0,a1,-0x4
lw v0,0x4(v1)
addiu v0,v0,0x1
bne v0,zero,0x000412d4
_sw v0,0x4(v1)
addiu v1,v1,0x8
lw a2,0xbc(sp)
b 0x00041a10
_li a0,0x2
lw v0,0x0(v1)
addiu v1,v1,0x4
addiu v0,v0,0x1
bne v0,zero,0x000412d4
_sw v0,-0x4(v1)
bne a2,a0,0x000419fc
_addiu a0,a0,0x1
lw v1,0x70(sp)
addiu v0,a1,-0x4
addu v0,v1,v0
lw v1,0x0(v0)
addiu a0,v1,-0x1
bne v1,zero,0x00041a74
_sw a0,0x0(v0)
lw v1,0x4(v0)
addiu a0,v1,-0x1
bne v1,zero,0x00041a74
_sw a0,0x4(v0)
addiu v0,v0,0x8
lw a2,0xbc(sp)
b 0x00041a68
_li v1,0x2
lw a0,0x0(v0)
addiu v0,v0,0x4
addiu a1,a0,-0x1
bne a0,zero,0x00041a74
_sw a1,-0x4(v0)
slt a0,a2,v1
beq a0,zero,0x00041a54
_addiu v1,v1,0x1
lw v0,0x60(sp)
lw v1,0x70(sp)
sll v0,v0,0x2
addu v0,v1,v0
lw v1,0x0(v0)
addiu v1,v1,-0x1
b 0x000412d4
_sw v1,0x0(v0)
b 0x0004100c
_sw zero,0x0(a1)
beq a0,a3,0x00041acc
_slti v0,s0,0x2
bne v0,zero,0x00041acc
_addiu v1,a3,0x4
sll s0,s0,0x2
addiu v0,a0,0x4
addu s0,a3,s0
lw a0,0x0(v1)
addiu v0,v0,0x4
addiu v1,v1,0x4
bne s0,v1,0x00041ab8
_sw a0,-0x4(v0)
or s1,zero,zero
lw v0,0xbc(sp)
lw s2,0x78(sp)
lw t9,-0x7b2c(gp)
sll s0,v0,0x2
or a3,v0,zero
lw v0,0x70(sp)
or a0,s2,zero
or a1,s2,zero
addu a2,v0,s0
jalr t9
_addu s0,s2,s0
lw gp,0x30(sp)
lw v1,0x0(s0)
subu a0,v1,v0
sltu v0,v1,v0
beq v0,zero,0x000418b4
_sw a0,0x0(s0)
addiu s1,s1,-0x1
li v0,-0x1
bne s1,v0,0x000418b4
_lw v1,0x78(sp)
lw v0,0x0(v1)
addiu v0,v0,0x1
beq v0,zero,0x000413ec
_sw v0,0x0(v1)
b 0x000418b4
_or s1,zero,zero
lw v0,0x78(sp)
b 0x0004134c
_sw a1,0x0(v0)
lw a3,0x58(sp)
slt v0,v1,a3
bne v0,zero,0x00041bc0
_lw v0,0x54(sp)
subu a1,v1,a3
lw v0,0x70(sp)
slti a2,a3,0x2
sll a1,a1,0x2
addu a1,v0,a1
lw v0,0x0(a1)
addiu v0,v0,0x1
bne v0,zero,0x000412d4
_sw v0,0x0(a1)
bne a2,zero,0x00041b74
_addiu v0,v0,0x1
lw v0,0x4(a1)
addiu v0,v0,0x1
bne v0,zero,0x000412d4
_sw v0,0x4(a1)
addiu v1,a1,0x8
li a0,0x2
beq a0,a3,0x00041b6c
_addiu a0,a0,0x1
lw v0,0x0(v1)
addiu v1,v1,0x4
addiu v0,v0,0x1
beq v0,zero,0x00041b9c
_sw v0,-0x4(v1)
b 0x000412d8
_lw v0,0x54(sp)
lw v1,0xbc(sp)
subu v0,v0,v1
lw v1,0x70(sp)
sll v0,v0,0x2
addu v0,v1,v0
lw v1,0x0(v0)
addiu a0,v1,-0x1
bne v1,zero,0x000412d4
_sw a0,0x0(v0)
lw v1,0xbc(sp)
slti v1,v1,0x2
bne v1,zero,0x000412d4
_nop
lw v1,0x4(v0)
addiu a0,v1,-0x1
bne v1,zero,0x000412d4
_sw a0,0x4(v0)
addiu v0,v0,0x8
lw a2,0xbc(sp)
b 0x00041c28
_li v1,0x2
lw a0,0x0(v0)
addiu v0,v0,0x4
addiu a1,a0,-0x1
bne a0,zero,0x000412d4
_sw a1,-0x4(v0)
bne a2,v1,0x00041c14
_addiu v1,v1,0x1
b 0x000412d8
_lw v0,0x54(sp)
addiu v0,v0,-0x1
b 0x000410e4
_sw v0,0x44(sp)
li v1,0x2
beq a0,a3,0x00041acc
_slt v0,v1,s0
beq v0,zero,0x00041acc
_sll v1,v1,0x2
sll s0,s0,0x2
addu a1,a3,v1
addu v0,a3,s0
addu v1,a0,v1
lw a0,0x0(a1)
addiu v1,v1,0x4
addiu a1,a1,0x4
bne a1,v0,0x00041c68
_sw a0,-0x4(v1)
b 0x00041ad0
_or s1,zero,zero
jalr t9
_nop
b 0x00040f94
_lw gp,0x30(sp)
lw a2,-0x7fd4(gp)
li a1,0x1c1
lw a0,-0x7fd4(gp)
lw t9,-0x7c20(gp)
addiu a2,a2,-0x1490
jalr t9
_addiu a0,a0,-0x149c
lw a2,-0x7fd4(gp)
li a1,0x1d7
lw a0,-0x7fd4(gp)
lw t9,-0x7c20(gp)
addiu a2,a2,-0x147c
jalr t9
_addiu a0,a0,-0x149c
lw v1,0x70(sp)
addu v0,v1,v0
lw v1,0x0(v0)
addiu a0,v1,-0x1
bne v1,zero,0x00041a74
_sw a0,0x0(v0)
lw a0,0xbc(sp)
li v1,0x1
bne a0,v1,0x00041a74
_nop
b 0x00041a38
_lw v1,0x4(v0)
li v0,0x1
sw s2,0x44(sp)
li s1,0x230
b 0x00040bb8
_sw v0,0xe4(sp)
lw t9,-0x7b70(gp)
jalr t9
_nop
(translation_unit "int FUN_00040ad4(int *param_1,int *param_2,uint param_3,int *param_4,int *param_5,int *param_6,\n                uint param_7,int param_8,int param_9,int param_10,undefined4 *param_11,int param_12)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  undefined4 *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint *puVar20;\n  int iVar21;\n  uint *puVar22;\n  int *piVar23;\n  int iVar24;\n  uint uVar25;\n  int *piVar26;\n  int iVar27;\n  int *piVar28;\n  uint uVar29;\n  int iVar30;\n  int *piVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  int *local_74;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_58;\n  int local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  iVar30 = 1 << (param_3 & 0x1f);\n  param_10 = param_10 + param_3 * 4;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar27 = param_9 << 1;\n  FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11);\n  if (param_12 == 0) {\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }\nLAB_000412d8:\n  iVar27 = local_64 - local_60;\n  if (iVar27 < 1) {\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }\n  iVar27 = 0;\nLAB_000418b4:\n  if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }\n  return iVar27;\n}\n\n" (function_definition "int FUN_00040ad4(int *param_1,int *param_2,uint param_3,int *param_4,int *param_5,int *param_6,\n                uint param_7,int param_8,int param_9,int param_10,undefined4 *param_11,int param_12)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  undefined4 *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint *puVar20;\n  int iVar21;\n  uint *puVar22;\n  int *piVar23;\n  int iVar24;\n  uint uVar25;\n  int *piVar26;\n  int iVar27;\n  int *piVar28;\n  uint uVar29;\n  int iVar30;\n  int *piVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  int *local_74;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_58;\n  int local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  iVar30 = 1 << (param_3 & 0x1f);\n  param_10 = param_10 + param_3 * 4;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar27 = param_9 << 1;\n  FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11);\n  if (param_12 == 0) {\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }\nLAB_000412d8:\n  iVar27 = local_64 - local_60;\n  if (iVar27 < 1) {\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }\n  iVar27 = 0;\nLAB_000418b4:\n  if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }\n  return iVar27;\n}" primitive_type (function_declarator "FUN_00040ad4(int *param_1,int *param_2,uint param_3,int *param_4,int *param_5,int *param_6,\n                uint param_7,int param_8,int param_9,int param_10,undefined4 *param_11,int param_12)" identifier (parameter_list "(int *param_1,int *param_2,uint param_3,int *param_4,int *param_5,int *param_6,\n                uint param_7,int param_8,int param_9,int param_10,undefined4 *param_11,int param_12)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "uint param_7" type_identifier identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "int param_9" primitive_type identifier) , (parameter_declaration "int param_10" primitive_type identifier) , (parameter_declaration "undefined4 *param_11" type_identifier (pointer_declarator "*param_11" * identifier)) , (parameter_declaration "int param_12" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  undefined4 *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint *puVar20;\n  int iVar21;\n  uint *puVar22;\n  int *piVar23;\n  int iVar24;\n  uint uVar25;\n  int *piVar26;\n  int iVar27;\n  int *piVar28;\n  uint uVar29;\n  int iVar30;\n  int *piVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  int *local_74;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_58;\n  int local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  iVar30 = 1 << (param_3 & 0x1f);\n  param_10 = param_10 + param_3 * 4;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar27 = param_9 << 1;\n  FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11);\n  if (param_12 == 0) {\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }\nLAB_000412d8:\n  iVar27 = local_64 - local_60;\n  if (iVar27 < 1) {\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }\n  iVar27 = 0;\nLAB_000418b4:\n  if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }\n  return iVar27;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "undefined4 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uint *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "uint *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "int *piVar26;" primitive_type (pointer_declarator "*piVar26" * identifier) ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "uint uVar29;" type_identifier identifier ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "int *piVar31;" primitive_type (pointer_declarator "*piVar31" * identifier) ;) (declaration "int *piVar32;" primitive_type (pointer_declarator "*piVar32" * identifier) ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "int iVar34;" primitive_type identifier ;) (declaration "int *local_74;" primitive_type (pointer_declarator "*local_74" * identifier) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "iVar30 = 1 << (param_3 & 0x1f);" (assignment_expression "iVar30 = 1 << (param_3 & 0x1f)" identifier = (binary_expression "1 << (param_3 & 0x1f)" number_literal << (parenthesized_expression "(param_3 & 0x1f)" ( (binary_expression "param_3 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "param_10 = param_10 + param_3 * 4;" (assignment_expression "param_10 = param_10 + param_3 * 4" identifier = (binary_expression "param_10 + param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal))) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar27 = param_9 << 1;" (assignment_expression "iVar27 = param_9 << 1" identifier = (binary_expression "param_9 << 1" identifier << number_literal)) ;) (expression_statement "FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11);" (call_expression "FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11)" identifier (argument_list "(param_4,iVar30,param_10,iVar27,param_7,1,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (param_12 == 0) {\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }" if (parenthesized_expression "(param_12 == 0)" ( (binary_expression "param_12 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);" (call_expression "FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11)" identifier (argument_list "(param_5,iVar30,param_10,iVar27,param_7,1,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }" if (parenthesized_expression "(param_4 == param_5)" ( (binary_expression "param_4 == param_5" identifier == identifier) )) (compound_statement "{\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }" { (expression_statement "param_12 = 1;" (assignment_expression "param_12 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00040bb8;" goto statement_identifier ;) })) (expression_statement "iVar7 = 0x270;" (assignment_expression "iVar7 = 0x270" identifier = number_literal) ;) (expression_statement "local_74 = param_5;" (assignment_expression "local_74 = param_5" identifier = identifier) ;) (if_statement "if (0x26f < (int)param_7) goto LAB_00040bc8;" if (parenthesized_expression "(0x26f < (int)param_7)" ( (binary_expression "0x26f < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00040bc8;" goto statement_identifier ;)) (labeled_statement "LAB_0004149c:\n    local_30 = 0;" statement_identifier : (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;)) (expression_statement "puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);" (assignment_expression "puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,param_7 * 8)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "param_7 * 8" identifier * number_literal) ))))) ;) (expression_statement "puVar18 = puVar19 + param_7;" (assignment_expression "puVar18 = puVar19 + param_7" identifier = (binary_expression "puVar19 + param_7" identifier + identifier)) ;) (if_statement "if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }" if (parenthesized_expression "(0 < iVar30)" ( (binary_expression "0 < iVar30" number_literal < identifier) )) (compound_statement "{\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "piVar11 = (int *)*param_4;" (assignment_expression "piVar11 = (int *)*param_4" identifier = (cast_expression "(int *)*param_4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "iVar7 = *local_74;" (assignment_expression "iVar7 = *local_74" identifier = (pointer_expression "*local_74" * identifier)) ;) (if_statement "if (param_4 == local_74) goto LAB_000415dc;" if (parenthesized_expression "(param_4 == local_74)" ( (binary_expression "param_4 == local_74" identifier == identifier) )) (goto_statement "goto LAB_000415dc;" goto statement_identifier ;)) (labeled_statement "LAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);" statement_identifier : (expression_statement "puVar22 = (uint *)(piVar11 + param_7);" (assignment_expression "puVar22 = (uint *)(piVar11 + param_7)" identifier = (cast_expression "(uint *)(piVar11 + param_7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + param_7)" ( (binary_expression "piVar11 + param_7" identifier + identifier) )))) ;)) (expression_statement "(*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);" (call_expression "(*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_n_00097364)" ( (pointer_expression "*(code *)PTR___gmpn_mul_n_00097364" * (cast_expression "(code *)PTR___gmpn_mul_n_00097364" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar19,iVar7,piVar11,param_7)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar4 = *puVar22;" (assignment_expression "uVar4 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "piVar23 = (int *)(iVar7 + param_7 * 4);" (assignment_expression "piVar23 = (int *)(iVar7 + param_7 * 4)" identifier = (cast_expression "(int *)(iVar7 + param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + param_7 * 4)" ( (binary_expression "iVar7 + param_7 * 4" identifier + (binary_expression "param_7 * 4" identifier * number_literal)) )))) ;) (if_statement "if (uVar4 != 0) goto LAB_0004160c;" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004160c;" goto statement_identifier ;)) (do_statement "do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);" do (compound_statement "{\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      }" { (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_00097514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (*piVar23 != 0) goto LAB_00041640;" if (parenthesized_expression "(*piVar23 != 0)" ( (binary_expression "*piVar23 != 0" (pointer_expression "*piVar23" * identifier) != number_literal) )) (goto_statement "goto LAB_00041640;" goto statement_identifier ;)) (labeled_statement "LAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);" statement_identifier : (expression_statement "iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);" (assignment_expression "iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7)" identifier = (call_expression "(*pcVar14)(piVar11,puVar19,puVar18,param_7)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(piVar11,puVar19,puVar18,param_7)" ( identifier , identifier , identifier , identifier )))) ;)) (if_statement "if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }" if (parenthesized_expression "((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0))" ( (binary_expression "(iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)" (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)" ( (comma_expression "iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0" (assignment_expression "iVar7 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) , (comma_expression "*piVar11 = iVar7 + 1, iVar7 + 1 != 0" (assignment_expression "*piVar11 = iVar7 + 1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar7 + 1" identifier + number_literal)) , (binary_expression "iVar7 + 1 != 0" (binary_expression "iVar7 + 1" identifier + number_literal) != number_literal))) ))) )) (compound_statement "{\nLAB_0004199c:\n          uVar4 = 0;\n        }" { (labeled_statement "LAB_0004199c:\n          uVar4 = 0;" statement_identifier : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }" else (compound_statement "{\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (if_statement "if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }" { (expression_statement "iVar7 = piVar11[1];" (assignment_expression "iVar7 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (expression_statement "piVar11[1] = iVar7 + 1;" (assignment_expression "piVar11[1] = iVar7 + 1" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (if_statement "if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }" if (parenthesized_expression "(iVar7 + 1 == 0)" ( (binary_expression "iVar7 + 1 == 0" (binary_expression "iVar7 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }" { (expression_statement "puVar20 = (uint *)(piVar11 + 2);" (assignment_expression "puVar20 = (uint *)(piVar11 + 2)" identifier = (cast_expression "(uint *)(piVar11 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 2)" ( (binary_expression "piVar11 + 2" identifier + number_literal) )))) ;) (do_statement "do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);" do (compound_statement "{\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              }" { (if_statement "if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }" if (parenthesized_expression "(puVar20 == puVar22)" ( (binary_expression "puVar20 == puVar22" identifier == identifier) )) (compound_statement "{\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000415b0;" goto statement_identifier ;) })) (expression_statement "uVar4 = *puVar20;" (assignment_expression "uVar4 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "*puVar20 = uVar4 + 1;" (assignment_expression "*puVar20 = uVar4 + 1" (pointer_expression "*puVar20" * identifier) = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 + 1 == 0)" ( (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" identifier + number_literal) == number_literal) )) ;) })) (goto_statement "goto LAB_0004199c;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000415b0:\n        *puVar22 = uVar4;" statement_identifier : (expression_statement "*puVar22 = uVar4;" (assignment_expression "*puVar22 = uVar4" (pointer_expression "*puVar22" * identifier) = identifier) ;)) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 == iVar5) goto LAB_00040f88;" if (parenthesized_expression "(iVar30 == iVar5)" ( (binary_expression "iVar30 == iVar5" identifier == identifier) )) (goto_statement "goto LAB_00040f88;" goto statement_identifier ;)) (expression_statement "piVar11 = (int *)param_4[iVar5];" (assignment_expression "piVar11 = (int *)param_4[iVar5]" identifier = (cast_expression "(int *)param_4[iVar5]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[iVar5]" identifier [ identifier ]))) ;) (expression_statement "iVar7 = local_74[iVar5];" (assignment_expression "iVar7 = local_74[iVar5]" identifier = (subscript_expression "local_74[iVar5]" identifier [ identifier ])) ;) (if_statement "if (param_4 != local_74) goto LAB_000414fc;" if (parenthesized_expression "(param_4 != local_74)" ( (binary_expression "param_4 != local_74" identifier != identifier) )) (goto_statement "goto LAB_000414fc;" goto statement_identifier ;)) (labeled_statement "LAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);" statement_identifier : (expression_statement "puVar22 = (uint *)(piVar11 + param_7);" (assignment_expression "puVar22 = (uint *)(piVar11 + param_7)" identifier = (cast_expression "(uint *)(piVar11 + param_7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + param_7)" ( (binary_expression "piVar11 + param_7" identifier + identifier) )))) ;)) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" * (cast_expression "(code *)PTR___gmpn_sqr_00097394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar19,piVar11,param_7)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar4 = *puVar22;" (assignment_expression "uVar4 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "piVar23 = (int *)(iVar7 + param_7 * 4);" (assignment_expression "piVar23 = (int *)(iVar7 + param_7 * 4)" identifier = (cast_expression "(int *)(iVar7 + param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + param_7 * 4)" ( (binary_expression "iVar7 + param_7 * 4" identifier + (binary_expression "param_7 * 4" identifier * number_literal)) )))) ;) }) while (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) ;) (labeled_statement "LAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);" statement_identifier : (expression_statement "uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar18,puVar18,iVar7,param_7)" ( identifier , identifier , identifier , identifier )))) ;)) (if_statement "if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }" if (parenthesized_expression "(*piVar23 != 0)" ( (binary_expression "*piVar23 != 0" (pointer_expression "*piVar23" * identifier) != number_literal) )) (compound_statement "{\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }" { (labeled_statement "LAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);" statement_identifier : (expression_statement "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar18,puVar18,piVar11,param_7)" ( identifier , identifier , identifier , identifier )))) ;)) (expression_statement "uVar4 = iVar7 + uVar4 + *puVar22;" (assignment_expression "uVar4 = iVar7 + uVar4 + *puVar22" identifier = (binary_expression "iVar7 + uVar4 + *puVar22" (binary_expression "iVar7 + uVar4" identifier + identifier) + (pointer_expression "*puVar22" * identifier))) ;) })) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_00097514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }" if (parenthesized_expression "((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0))" ( (binary_expression "(((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)" (parenthesized_expression "(((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1)))" ( (binary_expression "((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))" (parenthesized_expression "((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))" ( (binary_expression "(uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4)" (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4)" ( (comma_expression "uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4" (assignment_expression "uVar25 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) , (comma_expression "*puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4" (assignment_expression "*puVar19 = uVar4 + uVar25" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar4 + uVar25" identifier + identifier)) , (binary_expression "uVar4 + uVar25 < uVar4" (binary_expression "uVar4 + uVar25" identifier + identifier) < identifier))) ))) )) && (parenthesized_expression "(1 < (int)(param_7 << 1))" ( (binary_expression "1 < (int)(param_7 << 1)" number_literal < (cast_expression "(int)(param_7 << 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_7 << 1)" ( (binary_expression "param_7 << 1" identifier << number_literal) )))) ))) )) && (parenthesized_expression "(uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)" ( (comma_expression "uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0" (assignment_expression "uVar4 = puVar19[1]" identifier = (subscript_expression "puVar19[1]" identifier [ number_literal ])) , (comma_expression "puVar19[1] = uVar4 + 1, uVar4 + 1 == 0" (assignment_expression "puVar19[1] = uVar4 + 1" (subscript_expression "puVar19[1]" identifier [ number_literal ]) = (binary_expression "uVar4 + 1" identifier + number_literal)) , (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }" { (expression_statement "puVar20 = puVar19 + 2;" (assignment_expression "puVar20 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (do_statement "do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);" do (compound_statement "{\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        }" { (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_00097514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar20 == puVar19 + param_7 * 2) break;" if (parenthesized_expression "(puVar20 == puVar19 + param_7 * 2)" ( (binary_expression "puVar20 == puVar19 + param_7 * 2" identifier == (binary_expression "puVar19 + param_7 * 2" identifier + (binary_expression "param_7 * 2" identifier * number_literal))) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = *puVar20;" (assignment_expression "uVar4 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "*puVar20 = uVar4 + 1;" (assignment_expression "*puVar20 = uVar4 + 1" (pointer_expression "*puVar20" * identifier) = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_00097514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(uVar4 + 1 == 0)" ( (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" identifier + number_literal) == number_literal) )) ;) })) (goto_statement "goto LAB_00041544;" goto statement_identifier ;) })) (labeled_statement "LAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" statement_identifier : (if_statement "if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))) (expression_statement "iVar7 = param_7 + 1;" (assignment_expression "iVar7 = param_7 + 1" identifier = (binary_expression "param_7 + 1" identifier + number_literal)) ;) (expression_statement "piVar23 = param_11 + iVar7;" (assignment_expression "piVar23 = param_11 + iVar7" identifier = (binary_expression "param_11 + iVar7" identifier + identifier)) ;) (expression_statement "FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);" (call_expression "FUN_00040648(param_4,iVar30,iVar27,param_7,param_11)" identifier (argument_list "(param_4,iVar30,iVar27,param_7,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "puVar2 = PTR_LAB_00097078;" (assignment_expression "puVar2 = PTR_LAB_00097078" identifier = identifier) ;) (expression_statement "*param_5 = (int)piVar23;" (assignment_expression "*param_5 = (int)piVar23" (pointer_expression "*param_5" * identifier) = (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);" (call_expression "FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7)" identifier (argument_list "(piVar23,*param_4,param_7 * 0x40 - param_3,param_7)" ( identifier , (pointer_expression "*param_4" * identifier) , (binary_expression "param_7 * 0x40 - param_3" (binary_expression "param_7 * 0x40" identifier * number_literal) - identifier) , identifier ))) ;) (expression_statement "piVar26 = piVar23 + param_7;" (assignment_expression "piVar26 = piVar23 + param_7" identifier = (binary_expression "piVar23 + param_7" identifier + identifier)) ;) (expression_statement "piVar11 = piVar23;" (assignment_expression "piVar11 = piVar23" identifier = identifier) ;) (if_statement "if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }" if (parenthesized_expression "(*piVar26 != 0)" ( (binary_expression "*piVar26 != 0" (pointer_expression "*piVar26" * identifier) != number_literal) )) (compound_statement "{\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }" { (do_statement "do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);" do (compound_statement "{\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      }" { (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) ;) (if_statement "if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }" if (parenthesized_expression "(*piVar26 == 0)" ( (binary_expression "*piVar26 == 0" (pointer_expression "*piVar26" * identifier) == number_literal) )) (compound_statement "{\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }" { (expression_statement "uVar4 = param_7;" (assignment_expression "uVar4 = param_7" identifier = identifier) ;) (if_statement "if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }" { (do_statement "do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);" do (compound_statement "{\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          }" { (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (expression_statement "*piVar23 = 0;" (assignment_expression "*piVar23 = 0" (pointer_expression "*piVar23" * identifier) = number_literal) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) })) (expression_statement "*piVar26 = 1;" (assignment_expression "*piVar26 = 1" (pointer_expression "*piVar26" * identifier) = number_literal) ;) }) (else_clause "else {\n        *piVar26 = 0;\n      }" else (compound_statement "{\n        *piVar26 = 0;\n      }" { (expression_statement "*piVar26 = 0;" (assignment_expression "*piVar26 = 0" (pointer_expression "*piVar26" * identifier) = number_literal) ;) }))) })) (if_statement "if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }" if (parenthesized_expression "(1 < iVar30)" ( (binary_expression "1 < iVar30" number_literal < identifier) )) (compound_statement "{\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }" { (expression_statement "piVar23 = param_4 + 1;" (assignment_expression "piVar23 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (expression_statement "iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);" (assignment_expression "iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3)" identifier = (binary_expression "param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3)" (binary_expression "param_7 * 0x40" identifier * number_literal) - (parenthesized_expression "((iVar30 + -1) * param_9 + param_3)" ( (binary_expression "(iVar30 + -1) * param_9 + param_3" (binary_expression "(iVar30 + -1) * param_9" (parenthesized_expression "(iVar30 + -1)" ( (binary_expression "iVar30 + -1" identifier + number_literal) )) * identifier) + identifier) )))) ;) (expression_statement "piVar11 = param_5;" (assignment_expression "piVar11 = param_5" identifier = identifier) ;) (do_statement "do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));" do (compound_statement "{\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      }" { (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) (expression_statement "piVar31 = (int *)piVar23[-1];" (assignment_expression "piVar31 = (int *)piVar23[-1]" identifier = (cast_expression "(int *)piVar23[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar23[-1]" identifier [ number_literal ]))) ;) (expression_statement "*piVar11 = (int)piVar31;" (assignment_expression "*piVar11 = (int)piVar31" (pointer_expression "*piVar11" * identifier) = (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);" (call_expression "(*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7)" (parenthesized_expression "(*(code *)(puVar2 + -0xa24))" ( (pointer_expression "*(code *)(puVar2 + -0xa24)" * (cast_expression "(code *)(puVar2 + -0xa24)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0xa24)" ( (binary_expression "puVar2 + -0xa24" identifier + number_literal) )))) )) (argument_list "(piVar31,*piVar23,iVar27,param_7)" ( identifier , (pointer_expression "*piVar23" * identifier) , identifier , identifier ))) ;) (expression_statement "piVar32 = piVar31 + param_7;" (assignment_expression "piVar32 = piVar31 + param_7" identifier = (binary_expression "piVar31 + param_7" identifier + identifier)) ;) (expression_statement "piVar26 = piVar31;" (assignment_expression "piVar26 = piVar31" identifier = identifier) ;) (if_statement "if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }" if (parenthesized_expression "(*piVar32 != 0)" ( (binary_expression "*piVar32 != 0" (pointer_expression "*piVar32" * identifier) != number_literal) )) (compound_statement "{\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }" { (do_statement "do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);" do (compound_statement "{\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          }" { (expression_statement "iVar5 = *piVar26;" (assignment_expression "iVar5 = *piVar26" identifier = (pointer_expression "*piVar26" * identifier)) ;) (expression_statement "*piVar26 = iVar5 + -1;" (assignment_expression "*piVar26 = iVar5 + -1" (pointer_expression "*piVar26" * identifier) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "piVar26 = piVar26 + 1;" (assignment_expression "piVar26 = piVar26 + 1" identifier = (binary_expression "piVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) ;) (if_statement "if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }" if (parenthesized_expression "(*piVar32 == 0)" ( (binary_expression "*piVar32 == 0" (pointer_expression "*piVar32" * identifier) == number_literal) )) (compound_statement "{\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }" { (expression_statement "uVar4 = param_7;" (assignment_expression "uVar4 = param_7" identifier = identifier) ;) (if_statement "if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }" { (do_statement "do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);" do (compound_statement "{\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              }" { (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (expression_statement "*piVar31 = 0;" (assignment_expression "*piVar31 = 0" (pointer_expression "*piVar31" * identifier) = number_literal) ;) (expression_statement "piVar31 = piVar31 + 1;" (assignment_expression "piVar31 = piVar31 + 1" identifier = (binary_expression "piVar31 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) })) (expression_statement "*piVar32 = 1;" (assignment_expression "*piVar32 = 1" (pointer_expression "*piVar32" * identifier) = number_literal) ;) }) (else_clause "else {\n            *piVar32 = 0;\n          }" else (compound_statement "{\n            *piVar32 = 0;\n          }" { (expression_statement "*piVar32 = 0;" (assignment_expression "*piVar32 = 0" (pointer_expression "*piVar32" * identifier) = number_literal) ;) }))) })) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) (expression_statement "iVar27 = iVar27 + param_9;" (assignment_expression "iVar27 = iVar27 + param_9" identifier = (binary_expression "iVar27 + param_9" identifier + identifier)) ;) }) while (parenthesized_expression "(piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))))" ( (binary_expression "piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f)))" identifier != (cast_expression "(int *)((int)param_4 + (4 << (param_3 & 0x1f)))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + (4 << (param_3 & 0x1f)))" ( (binary_expression "(int)param_4 + (4 << (param_3 & 0x1f))" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(4 << (param_3 & 0x1f))" ( (binary_expression "4 << (param_3 & 0x1f)" number_literal << (parenthesized_expression "(param_3 & 0x1f)" ( (binary_expression "param_3 & 0x1f" identifier & number_literal) ))) ))) )))) )) ;) })) (expression_statement "local_74 = (int *)(iVar30 - 1);" (assignment_expression "local_74 = (int *)(iVar30 - 1)" identifier = (cast_expression "(int *)(iVar30 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 - 1)" ( (binary_expression "iVar30 - 1" identifier - number_literal) )))) ;) (expression_statement "puVar17 = param_11;" (assignment_expression "puVar17 = param_11" identifier = identifier) ;) (expression_statement "iVar27 = iVar7;" (assignment_expression "iVar27 = iVar7" identifier = identifier) ;) (if_statement "if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }" if (parenthesized_expression "(param_7 != 0xffffffff)" ( (binary_expression "param_7 != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }" { (do_statement "do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);" do (compound_statement "{\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      }" { (expression_statement "iVar27 = iVar27 + -1;" (assignment_expression "iVar27 = iVar27 + -1" identifier = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (expression_statement "*puVar17 = 0;" (assignment_expression "*puVar17 = 0" (pointer_expression "*puVar17" * identifier) = number_literal) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) ;) })) (expression_statement "iVar5 = (int)local_74 * param_8;" (assignment_expression "iVar5 = (int)local_74 * param_8" identifier = (binary_expression "(int)local_74 * param_8" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) * identifier)) ;) (expression_statement "local_60 = (int)param_2 * 2;" (assignment_expression "local_60 = (int)param_2 * 2" identifier = (binary_expression "(int)param_2 * 2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "local_58 = param_7 + iVar5;" (assignment_expression "local_58 = param_7 + iVar5" identifier = (binary_expression "param_7 + iVar5" identifier + identifier)) ;) (expression_statement "local_64 = local_58 + 1;" (assignment_expression "local_64 = local_58 + 1" identifier = (binary_expression "local_58 + 1" identifier + number_literal)) ;) (expression_statement "piVar11 = param_6;" (assignment_expression "piVar11 = param_6" identifier = identifier) ;) (expression_statement "iVar27 = local_64;" (assignment_expression "iVar27 = local_64" identifier = identifier) ;) (if_statement "if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar24 = -1;\n    }" { (expression_statement "iVar24 = -1;" (assignment_expression "iVar24 = -1" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }" else (compound_statement "{\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }" { (do_statement "do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);" do (compound_statement "{\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      }" { (expression_statement "iVar27 = iVar27 + -1;" (assignment_expression "iVar27 = iVar27 + -1" identifier = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (expression_statement "*piVar11 = 0;" (assignment_expression "*piVar11 = 0" (pointer_expression "*piVar11" * identifier) = number_literal) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar24 = local_58;" (assignment_expression "iVar24 = local_58" identifier = identifier) ;) }) while (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(-1 < (int)local_74)" ( (binary_expression "-1 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "piVar23 = param_6 + iVar7 + iVar5 + 1;" (assignment_expression "piVar23 = param_6 + iVar7 + iVar5 + 1" identifier = (binary_expression "param_6 + iVar7 + iVar5 + 1" (binary_expression "param_6 + iVar7 + iVar5" (binary_expression "param_6 + iVar7" identifier + identifier) + identifier) + number_literal)) ;) (expression_statement "piVar26 = param_6 + iVar24;" (assignment_expression "piVar26 = param_6 + iVar24" identifier = (binary_expression "param_6 + iVar24" identifier + identifier)) ;) (expression_statement "piVar31 = param_6 + iVar5;" (assignment_expression "piVar31 = param_6 + iVar5" identifier = (binary_expression "param_6 + iVar5" identifier + identifier)) ;) (expression_statement "piVar11 = local_74;" (assignment_expression "piVar11 = local_74" identifier = identifier) ;) (expression_statement "uVar4 = param_7;" (assignment_expression "uVar4 = param_7" identifier = identifier) ;) (labeled_statement "LAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);" statement_identifier : (do_statement "do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);" do (compound_statement "{\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      }" { (expression_statement "uVar25 = (uint)piVar11;" (assignment_expression "uVar25 = (uint)piVar11" identifier = (cast_expression "(uint)piVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);" (assignment_expression "iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7)" ( identifier , identifier , (subscript_expression "param_5[iVar30 - uVar25 & (uint)local_74]" identifier [ (binary_expression "iVar30 - uVar25 & (uint)local_74" (binary_expression "iVar30 - uVar25" identifier - identifier) & (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier)) ]) , identifier )))) ;) (if_statement "if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }" if (parenthesized_expression "((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0))" ( (binary_expression "(iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)" (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)" ( (comma_expression "iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0" (assignment_expression "iVar27 = piVar23[-1]" identifier = (subscript_expression "piVar23[-1]" identifier [ number_literal ])) , (comma_expression "piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0" (assignment_expression "piVar23[-1] = iVar27 + 1" (subscript_expression "piVar23[-1]" identifier [ number_literal ]) = (binary_expression "iVar27 + 1" identifier + number_literal)) , (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }" if (parenthesized_expression "((int)(uVar4 - param_7) < 2)" ( (binary_expression "(int)(uVar4 - param_7) < 2" (cast_expression "(int)(uVar4 - param_7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar4 - param_7)" ( (binary_expression "uVar4 - param_7" identifier - identifier) ))) < number_literal) )) (compound_statement "{\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }" { (labeled_statement "LAB_00041254:\n            local_68 = local_68 + 1;" statement_identifier : (expression_statement "local_68 = local_68 + 1;" (assignment_expression "local_68 = local_68 + 1" identifier = (binary_expression "local_68 + 1" identifier + number_literal)) ;)) }) (else_clause "else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }" else (compound_statement "{\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }" { (expression_statement "iVar27 = *piVar23;" (assignment_expression "iVar27 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "*piVar23 = iVar27 + 1;" (assignment_expression "*piVar23 = iVar27 + 1" (pointer_expression "*piVar23" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }" if (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }" { (expression_statement "iVar27 = 2;" (assignment_expression "iVar27 = 2" identifier = number_literal) ;) (expression_statement "piVar11 = piVar23;" (assignment_expression "piVar11 = piVar23" identifier = identifier) ;) (do_statement "do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);" do (compound_statement "{\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              }" { (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) (if_statement "if (uVar4 - param_7 == iVar27) goto LAB_00041254;" if (parenthesized_expression "(uVar4 - param_7 == iVar27)" ( (binary_expression "uVar4 - param_7 == iVar27" (binary_expression "uVar4 - param_7" identifier - identifier) == identifier) )) (goto_statement "goto LAB_00041254;" goto statement_identifier ;)) (expression_statement "iVar33 = *piVar11;" (assignment_expression "iVar33 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "*piVar11 = iVar33 + 1;" (assignment_expression "*piVar11 = iVar33 + 1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar33 + 1 == 0)" ( (binary_expression "iVar33 + 1 == 0" (binary_expression "iVar33 + 1" identifier + number_literal) == number_literal) )) ;) })) }))) })) (expression_statement "iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];" (assignment_expression "iVar27 = param_5[iVar30 - uVar25 & (uint)local_74]" identifier = (subscript_expression "param_5[iVar30 - uVar25 & (uint)local_74]" identifier [ (binary_expression "iVar30 - uVar25 & (uint)local_74" (binary_expression "iVar30 - uVar25" identifier - identifier) & (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier)) ])) ;) (expression_statement "param_11[param_8 * 2] = uVar25 + 1;" (assignment_expression "param_11[param_8 * 2] = uVar25 + 1" (subscript_expression "param_11[param_8 * 2]" identifier [ (binary_expression "param_8 * 2" identifier * number_literal) ]) = (binary_expression "uVar25 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = (uint *)(iVar27 + param_7 * 4);" (assignment_expression "puVar18 = (uint *)(iVar27 + param_7 * 4)" identifier = (cast_expression "(uint *)(iVar27 + param_7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + param_7 * 4)" ( (binary_expression "iVar27 + param_7 * 4" identifier + (binary_expression "param_7 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar27 = iVar7;" (assignment_expression "iVar27 = iVar7" identifier = identifier) ;) (expression_statement "puVar19 = param_11 + param_7;" (assignment_expression "puVar19 = param_11 + param_7" identifier = (binary_expression "param_11 + param_7" identifier + identifier)) ;) (do_statement "do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);" do (compound_statement "{\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        }" { (expression_statement "iVar27 = iVar27 + -1;" (assignment_expression "iVar27 = iVar27 + -1" identifier = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if (iVar27 < 0) goto LAB_000412a0;" if (parenthesized_expression "(iVar27 < 0)" ( (binary_expression "iVar27 < 0" identifier < number_literal) )) (goto_statement "goto LAB_000412a0;" goto statement_identifier ;)) (expression_statement "uVar6 = *puVar18;" (assignment_expression "uVar6 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "uVar29 = *puVar19;" (assignment_expression "uVar29 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "puVar18 = puVar18 + -1;" (assignment_expression "puVar18 = puVar18 + -1" identifier = (binary_expression "puVar18 + -1" identifier + number_literal)) ;) (expression_statement "puVar19 = puVar19 + -1;" (assignment_expression "puVar19 = puVar19 + -1" identifier = (binary_expression "puVar19 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 == uVar29)" ( (binary_expression "uVar6 == uVar29" identifier == identifier) )) ;) (if_statement "if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar29 < uVar6)" ( (binary_expression "uVar29 < uVar6" identifier < identifier) )) (compound_statement "{\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }" { (expression_statement "iVar27 = *piVar31;" (assignment_expression "iVar27 = *piVar31" identifier = (pointer_expression "*piVar31" * identifier)) ;) (expression_statement "*piVar31 = iVar27 + -1;" (assignment_expression "*piVar31 = iVar27 + -1" (pointer_expression "*piVar31" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }" if (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }" { (if_statement "if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }" if (parenthesized_expression "((int)(uVar4 + 1) < 2)" ( (binary_expression "(int)(uVar4 + 1) < 2" (cast_expression "(int)(uVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }" { (labeled_statement "LAB_000417cc:\n              local_68 = local_68 + -1;" statement_identifier : (expression_statement "local_68 = local_68 + -1;" (assignment_expression "local_68 = local_68 + -1" identifier = (binary_expression "local_68 + -1" identifier + number_literal)) ;)) }) (else_clause "else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }" else (compound_statement "{\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }" { (expression_statement "iVar27 = piVar31[1];" (assignment_expression "iVar27 = piVar31[1]" identifier = (subscript_expression "piVar31[1]" identifier [ number_literal ])) ;) (expression_statement "piVar31[1] = iVar27 + -1;" (assignment_expression "piVar31[1] = iVar27 + -1" (subscript_expression "piVar31[1]" identifier [ number_literal ]) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }" if (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }" { (expression_statement "iVar27 = 2;" (assignment_expression "iVar27 = 2" identifier = number_literal) ;) (expression_statement "piVar11 = piVar31 + 2;" (assignment_expression "piVar11 = piVar31 + 2" identifier = (binary_expression "piVar31 + 2" identifier + number_literal)) ;) (do_statement "do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);" do (compound_statement "{\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                }" { (expression_statement "bVar1 = uVar4 + 1 == iVar27;" (assignment_expression "bVar1 = uVar4 + 1 == iVar27" identifier = (binary_expression "uVar4 + 1 == iVar27" (binary_expression "uVar4 + 1" identifier + number_literal) == identifier)) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_000417cc;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000417cc;" goto statement_identifier ;)) (expression_statement "iVar33 = *piVar11;" (assignment_expression "iVar33 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar33 + -1;" (assignment_expression "*piVar11 = iVar33 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar33 + -1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar33 == 0)" ( (binary_expression "iVar33 == 0" identifier == number_literal) )) ;) })) }))) })) (expression_statement "iVar27 = *piVar26;" (assignment_expression "iVar27 = *piVar26" identifier = (pointer_expression "*piVar26" * identifier)) ;) (expression_statement "*piVar26 = iVar27 + -1;" (assignment_expression "*piVar26 = iVar27 + -1" (pointer_expression "*piVar26" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }" if (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }" { (expression_statement "iVar27 = ((iVar5 + 1) - iVar24) + uVar4;" (assignment_expression "iVar27 = ((iVar5 + 1) - iVar24) + uVar4" identifier = (binary_expression "((iVar5 + 1) - iVar24) + uVar4" (parenthesized_expression "((iVar5 + 1) - iVar24)" ( (binary_expression "(iVar5 + 1) - iVar24" (parenthesized_expression "(iVar5 + 1)" ( (binary_expression "iVar5 + 1" identifier + number_literal) )) - identifier) )) + identifier)) ;) (if_statement "if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }" if (parenthesized_expression "(iVar27 < 2)" ( (binary_expression "iVar27 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }" { (labeled_statement "LAB_00041838:\n              piVar31 = piVar31 + -param_8;" statement_identifier : (expression_statement "piVar31 = piVar31 + -param_8;" (assignment_expression "piVar31 = piVar31 + -param_8" identifier = (binary_expression "piVar31 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;)) (expression_statement "piVar23 = piVar23 + -param_8;" (assignment_expression "piVar23 = piVar23 + -param_8" identifier = (binary_expression "piVar23 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) (expression_statement "local_68 = local_68 + -1;" (assignment_expression "local_68 = local_68 + -1" identifier = (binary_expression "local_68 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 + param_8;" (assignment_expression "uVar4 = uVar4 + param_8" identifier = (binary_expression "uVar4 + param_8" identifier + identifier)) ;) (expression_statement "piVar26 = piVar26 + -param_8;" (assignment_expression "piVar26 = piVar26 + -param_8" identifier = (binary_expression "piVar26 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) (expression_statement "piVar11 = (int *)(uVar25 - 1);" (assignment_expression "piVar11 = (int *)(uVar25 - 1)" identifier = (cast_expression "(int *)(uVar25 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar25 - 1)" ( (binary_expression "uVar25 - 1" identifier - number_literal) )))) ;) (if_statement "if (uVar25 - 1 == 0xffffffff) break;" if (parenthesized_expression "(uVar25 - 1 == 0xffffffff)" ( (binary_expression "uVar25 - 1 == 0xffffffff" (binary_expression "uVar25 - 1" identifier - number_literal) == number_literal) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_000411b8;" goto statement_identifier ;) })) (expression_statement "iVar33 = piVar26[1];" (assignment_expression "iVar33 = piVar26[1]" identifier = (subscript_expression "piVar26[1]" identifier [ number_literal ])) ;) (expression_statement "piVar26[1] = iVar33 + -1;" (assignment_expression "piVar26[1] = iVar33 + -1" (subscript_expression "piVar26[1]" identifier [ number_literal ]) = (binary_expression "iVar33 + -1" identifier + number_literal)) ;) (if_statement "if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }" if (parenthesized_expression "(iVar33 == 0)" ( (binary_expression "iVar33 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }" { (expression_statement "iVar33 = 2;" (assignment_expression "iVar33 = 2" identifier = number_literal) ;) (expression_statement "piVar11 = piVar26 + 2;" (assignment_expression "piVar11 = piVar26 + 2" identifier = (binary_expression "piVar26 + 2" identifier + number_literal)) ;) (do_statement "do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);" do (compound_statement "{\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              }" { (if_statement "if (iVar33 == iVar27) goto LAB_00041838;" if (parenthesized_expression "(iVar33 == iVar27)" ( (binary_expression "iVar33 == iVar27" identifier == identifier) )) (goto_statement "goto LAB_00041838;" goto statement_identifier ;)) (expression_statement "iVar34 = *piVar11;" (assignment_expression "iVar34 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "iVar33 = iVar33 + 1;" (assignment_expression "iVar33 = iVar33 + 1" identifier = (binary_expression "iVar33 + 1" identifier + number_literal)) ;) (expression_statement "*piVar11 = iVar34 + -1;" (assignment_expression "*piVar11 = iVar34 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar34 + -1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar34 == 0)" ( (binary_expression "iVar34 == 0" identifier == number_literal) )) ;) })) })) })) (labeled_statement "LAB_000412a0:\n        piVar31 = piVar31 + -param_8;" statement_identifier : (expression_statement "piVar31 = piVar31 + -param_8;" (assignment_expression "piVar31 = piVar31 + -param_8" identifier = (binary_expression "piVar31 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;)) (expression_statement "piVar23 = piVar23 + -param_8;" (assignment_expression "piVar23 = piVar23 + -param_8" identifier = (binary_expression "piVar23 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) (expression_statement "uVar4 = uVar4 + param_8;" (assignment_expression "uVar4 = uVar4 + param_8" identifier = (binary_expression "uVar4 + param_8" identifier + identifier)) ;) (expression_statement "piVar26 = piVar26 + -param_8;" (assignment_expression "piVar26 = piVar26 + -param_8" identifier = (binary_expression "piVar26 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) (expression_statement "piVar11 = (int *)(uVar25 - 1);" (assignment_expression "piVar11 = (int *)(uVar25 - 1)" identifier = (cast_expression "(int *)(uVar25 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar25 - 1)" ( (binary_expression "uVar25 - 1" identifier - number_literal) )))) ;) }) while (parenthesized_expression "(uVar25 - 1 != 0xffffffff)" ( (binary_expression "uVar25 - 1 != 0xffffffff" (binary_expression "uVar25 - 1" identifier - number_literal) != number_literal) )) ;)) (if_statement "if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(local_68 == uVar25 - 1)" ( (binary_expression "local_68 == uVar25 - 1" identifier == (binary_expression "uVar25 - 1" identifier - number_literal)) )) (compound_statement "{\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }" { (expression_statement "iVar30 = local_64 - (int)param_2;" (assignment_expression "iVar30 = local_64 - (int)param_2" identifier = (binary_expression "local_64 - (int)param_2" identifier - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar11 = param_6 + iVar30;" (assignment_expression "piVar11 = param_6 + iVar30" identifier = (binary_expression "param_6 + iVar30" identifier + identifier)) ;) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + 1;" (assignment_expression "*piVar11 = iVar27 + 1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }" if (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }" { (expression_statement "iVar27 = iVar30 * 4 + -4;" (assignment_expression "iVar27 = iVar30 * 4 + -4" identifier = (binary_expression "iVar30 * 4 + -4" (binary_expression "iVar30 * 4" identifier * number_literal) + number_literal)) ;) (if_statement "if ((int)param_2 < 2) goto LAB_00041ccc;" if (parenthesized_expression "((int)param_2 < 2)" ( (binary_expression "(int)param_2 < 2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00041ccc;" goto statement_identifier ;)) (expression_statement "iVar27 = piVar11[1];" (assignment_expression "iVar27 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (expression_statement "piVar11[1] = iVar27 + 1;" (assignment_expression "piVar11[1] = iVar27 + 1" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }" if (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }" { (expression_statement "piVar23 = (int *)0x2;" (assignment_expression "piVar23 = (int *)0x2" identifier = (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar11 = piVar11 + 2;" (assignment_expression "piVar11 = piVar11 + 2" identifier = (binary_expression "piVar11 + 2" identifier + number_literal)) ;) (do_statement "do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);" do (compound_statement "{\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            }" { (expression_statement "bVar1 = param_2 == piVar23;" (assignment_expression "bVar1 = param_2 == piVar23" identifier = (binary_expression "param_2 == piVar23" identifier == identifier)) ;) (expression_statement "piVar23 = (int *)((int)piVar23 + 1);" (assignment_expression "piVar23 = (int *)((int)piVar23 + 1)" identifier = (cast_expression "(int *)((int)piVar23 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar23 + 1)" ( (binary_expression "(int)piVar23 + 1" (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }" { (expression_statement "piVar11 = param_6 + iVar30 + -1;" (assignment_expression "piVar11 = param_6 + iVar30 + -1" identifier = (binary_expression "param_6 + iVar30 + -1" (binary_expression "param_6 + iVar30" identifier + identifier) + number_literal)) ;) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if (iVar27 != 0) goto LAB_00041a74;" if (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00041a74;" goto statement_identifier ;)) (expression_statement "iVar27 = piVar11[1];" (assignment_expression "iVar27 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00041a38;" goto statement_identifier ;) })) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + 1;" (assignment_expression "*piVar11 = iVar27 + 1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) }) (else_clause "else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }" else (if_statement "if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(local_68 == 1)" ( (binary_expression "local_68 == 1" identifier == number_literal) )) (compound_statement "{\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }" { (if_statement "if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }" if (parenthesized_expression "(local_64 < local_60)" ( (binary_expression "local_64 < local_60" identifier < identifier) )) (compound_statement "{\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }" { (expression_statement "piVar11 = param_6 + (local_64 - (int)param_2);" (assignment_expression "piVar11 = param_6 + (local_64 - (int)param_2)" identifier = (binary_expression "param_6 + (local_64 - (int)param_2)" identifier + (parenthesized_expression "(local_64 - (int)param_2)" ( (binary_expression "local_64 - (int)param_2" identifier - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }" if (parenthesized_expression "(((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0))" ( (binary_expression "((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)" (parenthesized_expression "((iVar27 == 0) && (1 < (int)param_2))" ( (binary_expression "(iVar27 == 0) && (1 < (int)param_2)" (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) && (parenthesized_expression "(1 < (int)param_2)" ( (binary_expression "1 < (int)param_2" number_literal < (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) && (parenthesized_expression "(iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)" ( (comma_expression "iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0" (assignment_expression "iVar27 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) , (comma_expression "piVar11[1] = iVar27 + -1, iVar27 == 0" (assignment_expression "piVar11[1] = iVar27 + -1" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (binary_expression "iVar27 + -1" identifier + number_literal)) , (binary_expression "iVar27 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }" { (expression_statement "piVar23 = (int *)0x2;" (assignment_expression "piVar23 = (int *)0x2" identifier = (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar11 = piVar11 + 2;" (assignment_expression "piVar11 = piVar11 + 2" identifier = (binary_expression "piVar11 + 2" identifier + number_literal)) ;) (do_statement "do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);" do (compound_statement "{\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            }" { (expression_statement "bVar1 = param_2 == piVar23;" (assignment_expression "bVar1 = param_2 == piVar23" identifier = (binary_expression "param_2 == piVar23" identifier == identifier)) ;) (expression_statement "piVar23 = (int *)((int)piVar23 + 1);" (assignment_expression "piVar23 = (int *)((int)piVar23 + 1)" identifier = (cast_expression "(int *)((int)piVar23 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar23 + 1)" ( (binary_expression "(int)piVar23 + 1" (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) break;" if (parenthesized_expression "(bVar1)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) ;) })) }) (else_clause "else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }" else (compound_statement "{\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }" { (expression_statement "piVar11 = param_6 + local_64 + (int)param_2 * -2;" (assignment_expression "piVar11 = param_6 + local_64 + (int)param_2 * -2" identifier = (binary_expression "param_6 + local_64 + (int)param_2 * -2" (binary_expression "param_6 + local_64" identifier + identifier) + (binary_expression "(int)param_2 * -2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (while_statement "while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }" { (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (do_statement "do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);" do (compound_statement "{\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            }" { (expression_statement "*piVar11 = iVar27 + 1;" (assignment_expression "*piVar11 = iVar27 + 1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 != 0) goto LAB_000412d8;" if (parenthesized_expression "(iVar27 + 1 != 0)" ( (binary_expression "iVar27 + 1 != 0" (binary_expression "iVar27 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_000412d8;" goto statement_identifier ;)) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(local_60 < 2)" ( (binary_expression "local_60 < 2" identifier < number_literal) )) ;) (expression_statement "iVar27 = piVar11[1];" (assignment_expression "iVar27 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (expression_statement "piVar11[1] = iVar27 + 1;" (assignment_expression "piVar11[1] = iVar27 + 1" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 != 0) break;" if (parenthesized_expression "(iVar27 + 1 != 0)" ( (binary_expression "iVar27 + 1 != 0" (binary_expression "iVar27 + 1" identifier + number_literal) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar27 = 2;" (assignment_expression "iVar27 = 2" identifier = number_literal) ;) (expression_statement "piVar23 = piVar11 + 2;" (assignment_expression "piVar23 = piVar11 + 2" identifier = (binary_expression "piVar11 + 2" identifier + number_literal)) ;) (while_statement "while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }" while (parenthesized_expression "(bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1)" ( (comma_expression "bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1" (assignment_expression "bVar1 = iVar27 != local_60" identifier = (binary_expression "iVar27 != local_60" identifier != identifier)) , (comma_expression "iVar27 = iVar27 + 1, bVar1" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) , identifier)) )) (compound_statement "{\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }" { (expression_statement "iVar30 = *piVar23;" (assignment_expression "iVar30 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "*piVar23 = iVar30 + 1;" (assignment_expression "*piVar23 = iVar30 + 1" (pointer_expression "*piVar23" * identifier) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 != 0) goto LAB_000412d8;" if (parenthesized_expression "(iVar30 + 1 != 0)" ( (binary_expression "iVar30 + 1 != 0" (binary_expression "iVar30 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_000412d8;" goto statement_identifier ;)) })) })) }))) })))) })) }) (else_clause "else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }" else (compound_statement "{\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }" { (labeled_statement "LAB_00040bb8:\n    iVar7 = 0x230;" statement_identifier : (expression_statement "iVar7 = 0x230;" (assignment_expression "iVar7 = 0x230" identifier = number_literal) ;)) (expression_statement "local_74 = param_4;" (assignment_expression "local_74 = param_4" identifier = identifier) ;) (if_statement "if ((int)param_7 < 0x230) goto LAB_0004149c;" if (parenthesized_expression "((int)param_7 < 0x230)" ( (binary_expression "(int)param_7 < 0x230" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0004149c;" goto statement_identifier ;)) (labeled_statement "LAB_00040bc8:\n    local_30 = 0;" statement_identifier : (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;)) (expression_statement "uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12)" identifier = (call_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)" ( (pointer_expression "*(code *)PTR___gmpn_fft_best_k_00097320" * (cast_expression "(code *)PTR___gmpn_fft_best_k_00097320" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_7,param_12)" ( identifier , identifier )))) ;) (expression_statement "iVar5 = 1 << (uVar4 & 0x1f);" (assignment_expression "iVar5 = 1 << (uVar4 & 0x1f)" identifier = (binary_expression "1 << (uVar4 & 0x1f)" number_literal << (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }" if (parenthesized_expression "((iVar5 - 1U & param_7) == 0)" ( (binary_expression "(iVar5 - 1U & param_7) == 0" (parenthesized_expression "(iVar5 - 1U & param_7)" ( (binary_expression "iVar5 - 1U & param_7" (binary_expression "iVar5 - 1U" identifier - number_literal) & identifier) )) == number_literal) )) (compound_statement "{\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }" { (expression_statement "iVar24 = iVar5;" (assignment_expression "iVar24 = iVar5" identifier = identifier) ;) (if_statement "if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }" if (parenthesized_expression "(iVar5 < 0x20)" ( (binary_expression "iVar5 < 0x20" identifier < number_literal) )) (compound_statement "{\n        iVar24 = 0x20;\n      }" { (expression_statement "iVar24 = 0x20;" (assignment_expression "iVar24 = 0x20" identifier = number_literal) ;) })) (expression_statement "iVar33 = (int)param_7 >> (uVar4 & 0x1f);" (assignment_expression "iVar33 = (int)param_7 >> (uVar4 & 0x1f)" identifier = (binary_expression "(int)param_7 >> (uVar4 & 0x1f)" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) >> (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if (iVar24 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar24 == 0)" ( (binary_expression "iVar24 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;" (assignment_expression "iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24" identifier = (binary_expression "((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24" (parenthesized_expression "((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24)" ( (binary_expression "(int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24" (cast_expression "(int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24)" ( (binary_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24" (binary_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2" (binary_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4" (binary_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2" (parenthesized_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f))" ( (binary_expression "(int)(param_7 << 5) >> (uVar4 & 0x1f)" (cast_expression "(int)(param_7 << 5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_7 << 5)" ( (binary_expression "param_7 << 5" identifier << number_literal) ))) >> (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) ))) )) * number_literal) + identifier) + number_literal) + identifier) ))) / identifier) )) * identifier)) ;) (expression_statement "iVar34 = iVar24;" (assignment_expression "iVar34 = iVar24" identifier = identifier) ;) (if_statement "if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }" if (parenthesized_expression "(iVar24 < 0)" ( (binary_expression "iVar24 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar34 = iVar24 + 0x1f;\n      }" { (expression_statement "iVar34 = iVar24 + 0x1f;" (assignment_expression "iVar34 = iVar24 + 0x1f" identifier = (binary_expression "iVar24 + 0x1f" identifier + number_literal)) ;) })) (expression_statement "uVar25 = iVar34 >> 5;" (assignment_expression "uVar25 = iVar34 >> 5" identifier = (binary_expression "iVar34 >> 5" identifier >> number_literal)) ;) (if_statement "if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }" if (parenthesized_expression "(iVar7 <= (int)uVar25)" ( (binary_expression "iVar7 <= (int)uVar25" identifier <= (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }" { (while_statement "while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }" { (expression_statement "uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);" (assignment_expression "uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12)" identifier = (call_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)" ( (pointer_expression "*(code *)PTR___gmpn_fft_best_k_00097320" * (cast_expression "(code *)PTR___gmpn_fft_best_k_00097320" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar25,param_12)" ( identifier , identifier )))) ;) (expression_statement "iVar7 = 1 << (uVar6 & 0x1f);" (assignment_expression "iVar7 = 1 << (uVar6 & 0x1f)" identifier = (binary_expression "1 << (uVar6 & 0x1f)" number_literal << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((iVar7 - 1U & uVar25) == 0) break;" if (parenthesized_expression "((iVar7 - 1U & uVar25) == 0)" ( (binary_expression "(iVar7 - 1U & uVar25) == 0" (parenthesized_expression "(iVar7 - 1U & uVar25)" ( (binary_expression "iVar7 - 1U & uVar25" (binary_expression "iVar7 - 1U" identifier - number_literal) & identifier) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar25 = -iVar7 & (uVar25 + iVar7) - 1;" (assignment_expression "uVar25 = -iVar7 & (uVar25 + iVar7) - 1" identifier = (binary_expression "-iVar7 & (uVar25 + iVar7) - 1" (unary_expression "-iVar7" - identifier) & (binary_expression "(uVar25 + iVar7) - 1" (parenthesized_expression "(uVar25 + iVar7)" ( (binary_expression "uVar25 + iVar7" identifier + identifier) )) - number_literal))) ;) (expression_statement "iVar24 = uVar25 << 5;" (assignment_expression "iVar24 = uVar25 << 5" identifier = (binary_expression "uVar25 << 5" identifier << number_literal)) ;) })) })) (if_statement "if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;" if (parenthesized_expression "((int)param_7 <= (int)uVar25)" ( (binary_expression "(int)param_7 <= (int)uVar25" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00041cb0;" goto statement_identifier ;)) (expression_statement "iVar7 = 4 << (uVar4 & 0x1f);" (assignment_expression "iVar7 = 4 << (uVar4 & 0x1f)" identifier = (binary_expression "4 << (uVar4 & 0x1f)" number_literal << (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);" (assignment_expression "uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,iVar7)" ( (pointer_expression "&local_30" & identifier) , identifier )))) ;) (expression_statement "iVar34 = uVar25 + 1;" (assignment_expression "iVar34 = uVar25 + 1" identifier = (binary_expression "uVar25 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);" (assignment_expression "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,iVar7)" ( (pointer_expression "&local_30" & identifier) , identifier )))) ;) (expression_statement "iVar24 = iVar24 >> (uVar4 & 0x1f);" (assignment_expression "iVar24 = iVar24 >> (uVar4 & 0x1f)" identifier = (binary_expression "iVar24 >> (uVar4 & 0x1f)" identifier >> (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);" (assignment_expression "iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "(iVar34 * 2 << (uVar4 & 0x1f)) << 2" (parenthesized_expression "(iVar34 * 2 << (uVar4 & 0x1f))" ( (binary_expression "iVar34 * 2 << (uVar4 & 0x1f)" (binary_expression "iVar34 * 2" identifier * number_literal) << (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) ))) )) << number_literal) )))) ;) (expression_statement "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);" (assignment_expression "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,iVar34 * 8)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "iVar34 * 8" identifier * number_literal) )))) ;) (expression_statement "iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;" (assignment_expression "iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4" identifier = (binary_expression "iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4" identifier + (binary_expression "(iVar34 << (uVar4 & 0x1f)) * 4" (parenthesized_expression "(iVar34 << (uVar4 & 0x1f))" ( (binary_expression "iVar34 << (uVar4 & 0x1f)" identifier << (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) ))) )) * number_literal))) ;) (expression_statement "piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);" (assignment_expression "piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,(uVar4 + 1) * 4)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "(uVar4 + 1) * 4" (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) )) * number_literal) ))))) ;) (expression_statement "iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));" (assignment_expression "iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f))" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f))" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,8 << (uVar4 & 0x1f))" ( (pointer_expression "&local_30" & identifier) , (binary_expression "8 << (uVar4 & 0x1f)" number_literal << (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) ))) )))) ;) (if_statement "if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }" if (parenthesized_expression "(-1 < (int)uVar4)" ( (binary_expression "-1 < (int)uVar4" number_literal < (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "piVar23 = piVar11;" (assignment_expression "piVar23 = piVar11" identifier = identifier) ;) (do_statement "do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);" do (compound_statement "{\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        }" { (expression_statement "uVar29 = uVar6 & 0x1f;" (assignment_expression "uVar29 = uVar6 & 0x1f" identifier = (binary_expression "uVar6 & 0x1f" identifier & number_literal)) ;) (expression_statement "*piVar23 = iVar12;" (assignment_expression "*piVar23 = iVar12" (pointer_expression "*piVar23" * identifier) = identifier) ;) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = iVar12 + (4 << uVar29);" (assignment_expression "iVar12 = iVar12 + (4 << uVar29)" identifier = (binary_expression "iVar12 + (4 << uVar29)" identifier + (parenthesized_expression "(4 << uVar29)" ( (binary_expression "4 << uVar29" number_literal << identifier) )))) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 != uVar4 + 1)" ( (binary_expression "uVar6 != uVar4 + 1" identifier != (binary_expression "uVar4 + 1" identifier + number_literal)) )) ;) })) (expression_statement "FUN_0003f560(piVar11,uVar4);" (call_expression "FUN_0003f560(piVar11,uVar4)" identifier (argument_list "(piVar11,uVar4)" ( identifier , identifier ))) ;) (if_statement "if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }" if (parenthesized_expression "(0 < iVar30)" ( (binary_expression "0 < iVar30" number_literal < identifier) )) (compound_statement "{\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }" { (expression_statement "iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;" (assignment_expression "iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1" identifier = (binary_expression "(iVar33 << (uVar4 & 0x1f)) + 1" (parenthesized_expression "(iVar33 << (uVar4 & 0x1f))" ( (binary_expression "iVar33 << (uVar4 & 0x1f)" identifier << (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) ))) )) + number_literal)) ;) (expression_statement "pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4)" identifier = (cast_expression "(code *)(PTR_LAB_00097078 + 0xad4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00097078 + 0xad4)" ( (binary_expression "PTR_LAB_00097078 + 0xad4" identifier + number_literal) )))) ;) (expression_statement "pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac)" identifier = (cast_expression "(code *)(PTR_LAB_00097078 + -0x4ac)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00097078 + -0x4ac)" ( (binary_expression "PTR_LAB_00097078 + -0x4ac" identifier + number_literal) )))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);" do (compound_statement "{\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        }" { (expression_statement "piVar32 = param_4 + iVar12;" (assignment_expression "piVar32 = param_4 + iVar12" identifier = (binary_expression "param_4 + iVar12" identifier + identifier)) ;) (expression_statement "piVar31 = (int *)*piVar32;" (assignment_expression "piVar31 = (int *)*piVar32" identifier = (cast_expression "(int *)*piVar32" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar32" * identifier))) ;) (expression_statement "piVar26 = piVar31 + param_7;" (assignment_expression "piVar26 = piVar31 + param_7" identifier = (binary_expression "piVar31 + param_7" identifier + identifier)) ;) (expression_statement "piVar23 = piVar31;" (assignment_expression "piVar23 = piVar31" identifier = identifier) ;) (if_statement "if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }" if (parenthesized_expression "(*piVar26 != 0)" ( (binary_expression "*piVar26 != 0" (pointer_expression "*piVar26" * identifier) != number_literal) )) (compound_statement "{\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }" { (do_statement "do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);" do (compound_statement "{\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            }" { (expression_statement "iVar21 = *piVar23;" (assignment_expression "iVar21 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "*piVar23 = iVar21 + -1;" (assignment_expression "*piVar23 = iVar21 + -1" (pointer_expression "*piVar23" * identifier) = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) ;) (expression_statement "piVar23 = piVar31;" (assignment_expression "piVar23 = piVar31" identifier = identifier) ;) (expression_statement "uVar6 = param_7;" (assignment_expression "uVar6 = param_7" identifier = identifier) ;) (if_statement "if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }" if (parenthesized_expression "(*piVar26 == 0)" ( (binary_expression "*piVar26 == 0" (pointer_expression "*piVar26" * identifier) == number_literal) )) (compound_statement "{\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }" { (do_statement "do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);" do (compound_statement "{\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              }" { (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "*piVar23 = 0;" (assignment_expression "*piVar23 = 0" (pointer_expression "*piVar23" * identifier) = number_literal) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (expression_statement "*piVar26 = 1;" (assignment_expression "*piVar26 = 1" (pointer_expression "*piVar26" * identifier) = number_literal) ;) }) (else_clause "else {\n              *piVar26 = 0;\n            }" else (compound_statement "{\n              *piVar26 = 0;\n            }" { (expression_statement "*piVar26 = 0;" (assignment_expression "*piVar26 = 0" (pointer_expression "*piVar26" * identifier) = number_literal) ;) }))) })) (if_statement "if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }" if (parenthesized_expression "(param_4 == local_74)" ( (binary_expression "param_4 == local_74" identifier == identifier) )) (compound_statement "{\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }" { (expression_statement "(*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);" (call_expression "(*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }" else (compound_statement "{\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }" { (expression_statement "piVar26 = (int *)local_74[iVar12];" (assignment_expression "piVar26 = (int *)local_74[iVar12]" identifier = (cast_expression "(int *)local_74[iVar12]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_74[iVar12]" identifier [ identifier ]))) ;) (expression_statement "piVar28 = piVar26 + param_7;" (assignment_expression "piVar28 = piVar26 + param_7" identifier = (binary_expression "piVar26 + param_7" identifier + identifier)) ;) (expression_statement "piVar23 = piVar26;" (assignment_expression "piVar23 = piVar26" identifier = identifier) ;) (if_statement "if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }" if (parenthesized_expression "(*piVar28 != 0)" ( (binary_expression "*piVar28 != 0" (pointer_expression "*piVar28" * identifier) != number_literal) )) (compound_statement "{\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }" { (do_statement "do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);" do (compound_statement "{\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              }" { (expression_statement "iVar21 = *piVar23;" (assignment_expression "iVar21 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "*piVar23 = iVar21 + -1;" (assignment_expression "*piVar23 = iVar21 + -1" (pointer_expression "*piVar23" * identifier) = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) ;) (expression_statement "uVar6 = param_7;" (assignment_expression "uVar6 = param_7" identifier = identifier) ;) (if_statement "if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }" if (parenthesized_expression "(*piVar28 == 0)" ( (binary_expression "*piVar28 == 0" (pointer_expression "*piVar28" * identifier) == number_literal) )) (compound_statement "{\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }" { (do_statement "do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);" do (compound_statement "{\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                }" { (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "*piVar26 = 0;" (assignment_expression "*piVar26 = 0" (pointer_expression "*piVar26" * identifier) = number_literal) ;) (expression_statement "piVar26 = piVar26 + 1;" (assignment_expression "piVar26 = piVar26 + 1" identifier = (binary_expression "piVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }) (else_clause "else {\n                *piVar28 = 0;\n              }" else (compound_statement "{\n                *piVar28 = 0;\n              }" { (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }))) })) (expression_statement "(*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);" (call_expression "(*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);" (call_expression "(*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10)" ( identifier , identifier , identifier , identifier , (subscript_expression "local_74[iVar12]" identifier [ identifier ]) , identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);" (assignment_expression "uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12)" identifier = (call_expression "(*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12)" ( (pointer_expression "*piVar32" * identifier) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;" (assignment_expression "*(undefined4 *)(*piVar32 + param_7 * 4) = uVar16" (pointer_expression "*(undefined4 *)(*piVar32 + param_7 * 4)" * (cast_expression "(undefined4 *)(*piVar32 + param_7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar32 + param_7 * 4)" ( (binary_expression "*piVar32 + param_7 * 4" (pointer_expression "*piVar32" * identifier) + (binary_expression "param_7 * 4" identifier * number_literal)) )))) = identifier) ;) }) while (parenthesized_expression "(iVar30 != iVar12)" ( (binary_expression "iVar30 != iVar12" identifier != identifier) )) ;) })) (goto_statement "goto LAB_00040f88;" goto statement_identifier ;) })) (expression_statement "(*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);" (call_expression "(*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_00097420)" ( (pointer_expression "*(code *)PTR___gmp_assert_fail_00097420" * (cast_expression "(code *)PTR___gmp_assert_fail_00097420" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490)" ( (binary_expression "PTR_DAT_0009706c + -0x149c" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0009706c + -0x1490" identifier + number_literal) ))) ;) (labeled_statement "LAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);" statement_identifier : (expression_statement "iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);" (assignment_expression "iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c)" identifier = (call_expression "(*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_00097420)" ( (pointer_expression "*(code *)PTR___gmp_assert_fail_00097420" * (cast_expression "(code *)PTR___gmp_assert_fail_00097420" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c)" ( (binary_expression "PTR_DAT_0009706c + -0x149c" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0009706c + -0x147c" identifier + number_literal) )))) ;)) (labeled_statement "LAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);" statement_identifier : (expression_statement "piVar11 = (int *)((int)param_6 + iVar27);" (assignment_expression "piVar11 = (int *)((int)param_6 + iVar27)" identifier = (cast_expression "(int *)((int)param_6 + iVar27)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_6 + iVar27)" ( (binary_expression "(int)param_6 + iVar27" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;)) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }" if (parenthesized_expression "((iVar27 == 0) && (param_2 == (int *)0x1))" ( (binary_expression "(iVar27 == 0) && (param_2 == (int *)0x1)" (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) && (parenthesized_expression "(param_2 == (int *)0x1)" ( (binary_expression "param_2 == (int *)0x1" identifier == (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }" { (expression_statement "iVar27 = piVar11[1];" (assignment_expression "iVar27 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00041a38:\n      piVar11[1] = iVar27 + -1;" statement_identifier : (expression_statement "piVar11[1] = iVar27 + -1;" (assignment_expression "piVar11[1] = iVar27 + -1" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;)) (if_statement "if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }" if (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }" { (expression_statement "iVar27 = 2;" (assignment_expression "iVar27 = 2" identifier = number_literal) ;) (expression_statement "piVar11 = piVar11 + 2;" (assignment_expression "piVar11 = piVar11 + 2" identifier = (binary_expression "piVar11 + 2" identifier + number_literal)) ;) (do_statement "do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);" do (compound_statement "{\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        }" { (expression_statement "bVar1 = (int)param_2 < iVar27;" (assignment_expression "bVar1 = (int)param_2 < iVar27" identifier = (binary_expression "(int)param_2 < iVar27" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) break;" if (parenthesized_expression "(bVar1)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "iVar30 = *piVar11;" (assignment_expression "iVar30 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar30 + -1;" (assignment_expression "*piVar11 = iVar30 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar30 + -1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) ;) })) })) (labeled_statement "LAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;" statement_identifier : (expression_statement "param_6[local_58] = param_6[local_58] + -1;" (assignment_expression "param_6[local_58] = param_6[local_58] + -1" (subscript_expression "param_6[local_58]" identifier [ identifier ]) = (binary_expression "param_6[local_58] + -1" (subscript_expression "param_6[local_58]" identifier [ identifier ]) + number_literal)) ;)) }))) (labeled_statement "LAB_000412d8:\n  iVar27 = local_64 - local_60;" statement_identifier : (expression_statement "iVar27 = local_64 - local_60;" (assignment_expression "iVar27 = local_64 - local_60" identifier = (binary_expression "local_64 - local_60" identifier - identifier)) ;)) (if_statement "if (iVar27 < 1) {\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }" if (parenthesized_expression "(iVar27 < 1)" ( (binary_expression "iVar27 < 1" identifier < number_literal) )) (compound_statement "{\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }" { (if_statement "if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }" if (parenthesized_expression "(param_2 != (int *)0x0)" ( (binary_expression "param_2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }" { (expression_statement "iVar30 = (int)param_2 + -1;" (assignment_expression "iVar30 = (int)param_2 + -1" identifier = (binary_expression "(int)param_2 + -1" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "iVar7 = *param_6;" (assignment_expression "iVar7 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (expression_statement "piVar23 = param_1;" (assignment_expression "piVar23 = param_1" identifier = identifier) ;) (expression_statement "piVar11 = param_6;" (assignment_expression "piVar11 = param_6" identifier = identifier) ;) (if_statement "if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }" if (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) (compound_statement "{\n        *param_1 = iVar7;\n      }" { (expression_statement "*param_1 = iVar7;" (assignment_expression "*param_1 = iVar7" (pointer_expression "*param_1" * identifier) = identifier) ;) }) (else_clause "else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }" else (compound_statement "{\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }" { (do_statement "do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);" do (compound_statement "{\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        }" { (expression_statement "*piVar23 = iVar7;" (assignment_expression "*piVar23 = iVar7" (pointer_expression "*piVar23" * identifier) = identifier) ;) (expression_statement "iVar30 = iVar30 + -1;" (assignment_expression "iVar30 = iVar30 + -1" identifier = (binary_expression "iVar30 + -1" identifier + number_literal)) ;) (expression_statement "iVar7 = piVar11[1];" (assignment_expression "iVar7 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar30 != 0)" ( (binary_expression "iVar30 != 0" identifier != number_literal) )) ;) (expression_statement "param_1[(int)param_2 + -1] = iVar7;" (assignment_expression "param_1[(int)param_2 + -1] = iVar7" (subscript_expression "param_1[(int)param_2 + -1]" identifier [ (binary_expression "(int)param_2 + -1" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = identifier) ;) }))) })) (expression_statement "uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_00097514)" ( (pointer_expression "*(code *)PTR___gmpn_sub_n_00097514" * (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27)" ( identifier , identifier , (binary_expression "param_6 + (int)param_2" identifier + (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)param_2 + iVar27" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);" (assignment_expression "puVar19 = (uint *)(param_1 + (int)param_2 + iVar27)" identifier = (cast_expression "(uint *)(param_1 + (int)param_2 + iVar27)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + (int)param_2 + iVar27)" ( (binary_expression "param_1 + (int)param_2 + iVar27" (binary_expression "param_1 + (int)param_2" identifier + (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) + identifier) )))) ;) (expression_statement "uVar25 = *puVar19;" (assignment_expression "uVar25 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "piVar11 = (int *)(uVar25 - uVar4);" (assignment_expression "piVar11 = (int *)(uVar25 - uVar4)" identifier = (cast_expression "(int *)(uVar25 - uVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar25 - uVar4)" ( (binary_expression "uVar25 - uVar4" identifier - identifier) )))) ;) (expression_statement "*puVar19 = (uint)piVar11;" (assignment_expression "*puVar19 = (uint)piVar11" (pointer_expression "*puVar19" * identifier) = (cast_expression "(uint)piVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }" if (parenthesized_expression "(uVar25 < uVar4)" ( (binary_expression "uVar25 < uVar4" identifier < identifier) )) (compound_statement "{\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }" { (if_statement "if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }" if (parenthesized_expression "(local_60 - local_64 < 2)" ( (binary_expression "local_60 - local_64 < 2" (binary_expression "local_60 - local_64" identifier - identifier) < number_literal) )) (compound_statement "{\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }" { (labeled_statement "LAB_000413d8:\n        iVar27 = *param_1;" statement_identifier : (expression_statement "iVar27 = *param_1;" (assignment_expression "iVar27 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;)) (expression_statement "*param_1 = iVar27 + 1;" (assignment_expression "*param_1 = iVar27 + 1" (pointer_expression "*param_1" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 == 0) goto LAB_000413ec;" if (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) (goto_statement "goto LAB_000413ec;" goto statement_identifier ;)) }) (else_clause "else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }" else (compound_statement "{\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }" { (expression_statement "uVar4 = puVar19[1];" (assignment_expression "uVar4 = puVar19[1]" identifier = (subscript_expression "puVar19[1]" identifier [ number_literal ])) ;) (expression_statement "puVar19[1] = uVar4 - 1;" (assignment_expression "puVar19[1] = uVar4 - 1" (subscript_expression "puVar19[1]" identifier [ number_literal ]) = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (if_statement "if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }" { (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" identifier = number_literal) ;) (expression_statement "puVar19 = puVar19 + 2;" (assignment_expression "puVar19 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (do_statement "do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);" do (compound_statement "{\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          }" { (expression_statement "bVar1 = local_60 - local_64 == iVar30;" (assignment_expression "bVar1 = local_60 - local_64 == iVar30" identifier = (binary_expression "local_60 - local_64 == iVar30" (binary_expression "local_60 - local_64" identifier - identifier) == identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_000413d8;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000413d8;" goto statement_identifier ;)) (expression_statement "uVar4 = *puVar19;" (assignment_expression "uVar4 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "piVar11 = (int *)(uVar4 - 1);" (assignment_expression "piVar11 = (int *)(uVar4 - 1)" identifier = (cast_expression "(int *)(uVar4 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 - 1)" ( (binary_expression "uVar4 - 1" identifier - number_literal) )))) ;) (expression_statement "*puVar19 = (uint)piVar11;" (assignment_expression "*puVar19 = (uint)piVar11" (pointer_expression "*puVar19" * identifier) = (cast_expression "(uint)piVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) ;) (goto_statement "goto LAB_000418b4;" goto statement_identifier ;) })) }))) })) }) (else_clause "else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }" else (compound_statement "{\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }" { (expression_statement "uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_6,param_6 + (int)param_2 * 2,iVar27)" ( identifier , identifier , (binary_expression "param_6 + (int)param_2 * 2" identifier + (binary_expression "(int)param_2 * 2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) , identifier )))) ;) (expression_statement "puVar18 = (uint *)(param_6 + iVar27);" (assignment_expression "puVar18 = (uint *)(param_6 + iVar27)" identifier = (cast_expression "(uint *)(param_6 + iVar27)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar27)" ( (binary_expression "param_6 + iVar27" identifier + identifier) )))) ;) (expression_statement "puVar19 = (uint *)(param_1 + iVar27);" (assignment_expression "puVar19 = (uint *)(param_1 + iVar27)" identifier = (cast_expression "(uint *)(param_1 + iVar27)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar27)" ( (binary_expression "param_1 + iVar27" identifier + identifier) )))) ;) (expression_statement "iVar27 = (int)param_2 - iVar27;" (assignment_expression "iVar27 = (int)param_2 - iVar27" identifier = (binary_expression "(int)param_2 - iVar27" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "uVar25 = *puVar18;" (assignment_expression "uVar25 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar19 = uVar4 + uVar25;" (assignment_expression "*puVar19 = uVar4 + uVar25" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar4 + uVar25" identifier + identifier)) ;) (if_statement "if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }" if (parenthesized_expression "(uVar4 + uVar25 < uVar4)" ( (binary_expression "uVar4 + uVar25 < uVar4" (binary_expression "uVar4 + uVar25" identifier + identifier) < identifier) )) (compound_statement "{\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }" { (if_statement "if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }" if (parenthesized_expression "(iVar27 < 2)" ( (binary_expression "iVar27 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00041994:\n        iVar27 = 1;\n      }" { (labeled_statement "LAB_00041994:\n        iVar27 = 1;" statement_identifier : (expression_statement "iVar27 = 1;" (assignment_expression "iVar27 = 1" identifier = number_literal) ;)) }) (else_clause "else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }" else (compound_statement "{\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }" { (expression_statement "uVar4 = puVar18[1];" (assignment_expression "uVar4 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;) (expression_statement "puVar19[1] = uVar4 + 1;" (assignment_expression "puVar19[1] = uVar4 + 1" (subscript_expression "puVar19[1]" identifier [ number_literal ]) = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (if_statement "if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }" if (parenthesized_expression "(uVar4 + 1 == 0)" ( (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }" { (expression_statement "puVar20 = puVar18 + 2;" (assignment_expression "puVar20 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" identifier = number_literal) ;) (expression_statement "puVar22 = puVar19 + 2;" (assignment_expression "puVar22 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (do_statement "do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);" do (compound_statement "{\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          }" { (if_statement "if (iVar27 == iVar30) goto LAB_00041994;" if (parenthesized_expression "(iVar27 == iVar30)" ( (binary_expression "iVar27 == iVar30" identifier == identifier) )) (goto_statement "goto LAB_00041994;" goto statement_identifier ;)) (expression_statement "uVar4 = *puVar20;" (assignment_expression "uVar4 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (expression_statement "*puVar22 = uVar4 + 1;" (assignment_expression "*puVar22 = uVar4 + 1" (pointer_expression "*puVar22" * identifier) = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 + 1 == 0)" ( (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" identifier + number_literal) == number_literal) )) ;) }) (else_clause "else {\n          iVar30 = 2;\n        }" else (compound_statement "{\n          iVar30 = 2;\n        }" { (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" identifier = number_literal) ;) }))) (if_statement "if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;" if (parenthesized_expression "((puVar19 == puVar18) || (iVar27 <= iVar30))" ( (binary_expression "(puVar19 == puVar18) || (iVar27 <= iVar30)" (parenthesized_expression "(puVar19 == puVar18)" ( (binary_expression "puVar19 == puVar18" identifier == identifier) )) || (parenthesized_expression "(iVar27 <= iVar30)" ( (binary_expression "iVar27 <= iVar30" identifier <= identifier) ))) )) (goto_statement "goto LAB_00041acc;" goto statement_identifier ;)) (expression_statement "puVar22 = puVar18 + iVar30;" (assignment_expression "puVar22 = puVar18 + iVar30" identifier = (binary_expression "puVar18 + iVar30" identifier + identifier)) ;) (expression_statement "puVar19 = puVar19 + iVar30;" (assignment_expression "puVar19 = puVar19 + iVar30" identifier = (binary_expression "puVar19 + iVar30" identifier + identifier)) ;) (do_statement "do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);" do (compound_statement "{\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        }" { (expression_statement "uVar4 = *puVar22;" (assignment_expression "uVar4 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) (expression_statement "*puVar19 = uVar4;" (assignment_expression "*puVar19 = uVar4" (pointer_expression "*puVar19" * identifier) = identifier) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar22 != puVar18 + iVar27)" ( (binary_expression "puVar22 != puVar18 + iVar27" identifier != (binary_expression "puVar18 + iVar27" identifier + identifier)) )) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }" else (compound_statement "{\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }" { (if_statement "if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }" if (parenthesized_expression "((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27))" ( (binary_expression "(puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)" (parenthesized_expression "(puVar19 != puVar18)" ( (binary_expression "puVar19 != puVar18" identifier != identifier) )) && (parenthesized_expression "(puVar22 = puVar18 + 1, 1 < iVar27)" ( (comma_expression "puVar22 = puVar18 + 1, 1 < iVar27" (assignment_expression "puVar22 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) , (binary_expression "1 < iVar27" number_literal < identifier)) ))) )) (compound_statement "{\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }" { (do_statement "do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);" do (compound_statement "{\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        }" { (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = *puVar22;" (assignment_expression "uVar4 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) (expression_statement "*puVar19 = uVar4;" (assignment_expression "*puVar19 = uVar4" (pointer_expression "*puVar19" * identifier) = identifier) ;) }) while (parenthesized_expression "(puVar18 + iVar27 != puVar22)" ( (binary_expression "puVar18 + iVar27 != puVar22" (binary_expression "puVar18 + iVar27" identifier + identifier) != identifier) )) ;) })) (labeled_statement "LAB_00041acc:\n      iVar27 = 0;" statement_identifier : (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;)) }))) (expression_statement "piVar11 = param_1;" (assignment_expression "piVar11 = param_1" identifier = identifier) ;) (expression_statement "uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_00097514)" ( (pointer_expression "*(code *)PTR___gmpn_sub_n_00097514" * (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_1,param_6 + (int)param_2,param_2)" ( identifier , identifier , (binary_expression "param_6 + (int)param_2" identifier + (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier )))) ;) (expression_statement "uVar25 = param_1[(int)param_2];" (assignment_expression "uVar25 = param_1[(int)param_2]" identifier = (subscript_expression "param_1[(int)param_2]" identifier [ (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "param_1[(int)param_2] = uVar25 - uVar4;" (assignment_expression "param_1[(int)param_2] = uVar25 - uVar4" (subscript_expression "param_1[(int)param_2]" identifier [ (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "uVar25 - uVar4" identifier - identifier)) ;) (if_statement "if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;" if (parenthesized_expression "((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1))" ( (binary_expression "(uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)" (parenthesized_expression "(uVar4 <= uVar25)" ( (binary_expression "uVar4 <= uVar25" identifier <= identifier) )) || (parenthesized_expression "(iVar27 = iVar27 + -1, iVar27 != -1)" ( (comma_expression "iVar27 = iVar27 + -1, iVar27 != -1" (assignment_expression "iVar27 = iVar27 + -1" identifier = (binary_expression "iVar27 + -1" identifier + number_literal)) , (binary_expression "iVar27 != -1" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000418b4;" goto statement_identifier ;)) (expression_statement "iVar27 = *param_1;" (assignment_expression "iVar27 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_1 = iVar27 + 1;" (assignment_expression "*param_1 = iVar27 + 1" (pointer_expression "*param_1" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }" if (parenthesized_expression "(iVar27 + 1 != 0)" ( (binary_expression "iVar27 + 1 != 0" (binary_expression "iVar27 + 1" identifier + number_literal) != number_literal) )) (compound_statement "{\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }" { (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000418b4;" goto statement_identifier ;) })) (labeled_statement "LAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }" statement_identifier : (if_statement "if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }" if (parenthesized_expression "((int)param_2 < 2)" ( (binary_expression "(int)param_2 < 2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }" { (labeled_statement "LAB_00041438:\n      iVar27 = 1;" statement_identifier : (expression_statement "iVar27 = 1;" (assignment_expression "iVar27 = 1" identifier = number_literal) ;)) (goto_statement "goto LAB_000418b4;" goto statement_identifier ;) }))) (expression_statement "iVar27 = param_1[1];" (assignment_expression "iVar27 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = iVar27 + 1;" (assignment_expression "param_1[1] = iVar27 + 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }" if (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }" { (expression_statement "piVar26 = (int *)0x2;" (assignment_expression "piVar26 = (int *)0x2" identifier = (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar23 = param_1 + 2;" (assignment_expression "piVar23 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (do_statement "do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);" do (compound_statement "{\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      }" { (expression_statement "bVar1 = param_2 == piVar26;" (assignment_expression "bVar1 = param_2 == piVar26" identifier = (binary_expression "param_2 == piVar26" identifier == identifier)) ;) (expression_statement "piVar26 = (int *)((int)piVar26 + 1);" (assignment_expression "piVar26 = (int *)((int)piVar26 + 1)" identifier = (cast_expression "(int *)((int)piVar26 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar26 + 1)" ( (binary_expression "(int)piVar26 + 1" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar11 = param_2;" (assignment_expression "piVar11 = param_2" identifier = identifier) ;) (if_statement "if (bVar1) goto LAB_00041438;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00041438;" goto statement_identifier ;)) (expression_statement "iVar27 = *piVar23;" (assignment_expression "iVar27 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "*piVar23 = iVar27 + 1;" (assignment_expression "*piVar23 = iVar27 + 1" (pointer_expression "*piVar23" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) }))) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000418b4:\n  if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }" statement_identifier : (if_statement "if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }" if (parenthesized_expression "(local_2c != *(int *)puVar3)" ( (binary_expression "local_2c != *(int *)puVar3" identifier != (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }" { (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);" return (binary_expression "(local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f)" (binary_expression "(local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1" (parenthesized_expression "(local_2c + -1 >> ((uint)piVar11 & 0x1f))" ( (binary_expression "local_2c + -1 >> ((uint)piVar11 & 0x1f)" (binary_expression "local_2c + -1" identifier + number_literal) >> (parenthesized_expression "((uint)piVar11 & 0x1f)" ( (binary_expression "(uint)piVar11 & 0x1f" (cast_expression "(uint)piVar11" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) )) + number_literal) << (parenthesized_expression "((uint)piVar11 & 0x1f)" ( (binary_expression "(uint)piVar11 & 0x1f" (cast_expression "(uint)piVar11" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) ;) }))) (return_statement "return iVar27;" return identifier ;) })))
(translation_unit "mp_limb_t mpn_mul_fft_internal\n                    (mp_ptr op,mp_size_t pl,int k,mp_ptr *Ap,mp_ptr *Bp,mp_ptr A,mp_ptr B,\n                    mp_size_t nprime,mp_size_t l,mp_size_t Mp,int **fft_l,mp_ptr T,int sqr)\n\n{\n  bool bVar1;\n  uint uVar2;\n  mp_limb_t *pmVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  int *piVar13;\n  int iVar14;\n  code *pcVar15;\n  code *pcVar16;\n  mp_ptr pmVar17;\n  mp_ptr pmVar18;\n  uint *puVar19;\n  uint *puVar20;\n  mp_limb_t mVar21;\n  mp_ptr pmVar22;\n  mp_limb_t *pmVar23;\n  int iVar24;\n  int **ppiVar25;\n  uint uVar26;\n  mp_limb_t mVar27;\n  mp_ptr pmVar28;\n  int **ppiVar29;\n  int iVar30;\n  int *piVar31;\n  uint *puVar32;\n  int iVar33;\n  mp_ptr pmVar34;\n  mp_ptr *ppmVar35;\n  mp_limb_t __gmp_c;\n  int **ppiVar36;\n  mp_ptr pmVar37;\n  mp_ptr pmVar38;\n  mp_ptr tp;\n  int iVar39;\n  mp_ptr *ppmVar40;\n  uint *puVar41;\n  int iVar42;\n  int iVar43;\n  mp_ptr *local_74;\n  int local_68;\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_00097540;\n  iVar33 = 1 << (k & 0x1fU);\n  ppiVar36 = (int **)(Mp + k * 4);\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar30 = l << 1;\n  mpn_fft_fft(Ap,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l);\n  if (T == (mp_ptr)0x0) {\n    mpn_fft_fft(Bp,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l);\n    if (Ap == Bp) {\n      T = (mp_ptr)&DAT_00000001;\n      goto LAB_00040bb8;\n    }\n    iVar9 = 0x270;\n    local_74 = Bp;\n    if (0x26f < (int)B) goto LAB_00040bc8;\nLAB_0004149c:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,(int)B * 8);\n    puVar41 = puVar19 + (int)B;\n    if (0 < iVar33) {\n      iVar9 = 0;\n      pmVar28 = *Ap;\n      pmVar17 = *local_74;\n      if (Ap == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      pmVar22 = pmVar28 + (int)B;\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,pmVar17,pmVar28,B);\n      mVar21 = *pmVar22;\n      pmVar34 = pmVar17 + (int)B;\n      if (mVar21 != 0) goto LAB_0004160c;\n      do {\n        pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*pmVar34 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar15)(pmVar28,puVar19,puVar41,B);\n        if ((iVar7 == 0) || (mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0)) {\nLAB_0004199c:\n          mVar21 = 0;\n        }\n        else {\n          mVar21 = 1;\n          if (1 < (int)B) {\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *pmVar22 = mVar21;\n        iVar9 = iVar9 + 1;\n        if (iVar33 == iVar9) goto LAB_00040f88;\n        pmVar28 = Ap[iVar9];\n        pmVar17 = local_74[iVar9];\n        if (Ap != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        pmVar22 = pmVar28 + (int)B;\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,pmVar28,B);\n        mVar21 = *pmVar22;\n        pmVar34 = pmVar17 + (int)B;\n      } while (mVar21 == 0);\nLAB_0004160c:\n      mVar21 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar17,B);\n      if (*pmVar34 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B);\n        mVar21 = iVar7 + mVar21 + *pmVar22;\n      }\n      pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))\n          && (1 < (int)B << 1)) && (uVar6 = puVar19[1], puVar19[1] = uVar6 + 1, uVar6 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + (int)B * 2) break;\n          uVar6 = *puVar20;\n          *puVar20 = uVar6 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar6 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar9 = 0x230;\n    local_74 = Ap;\n    if ((int)B < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(B,T);\n    iVar7 = 1 << (uVar6 & 0x1f);\n    if ((iVar7 - 1U & (uint)B) != 0) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1c1,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490);\n      return mVar21;\n    }\n    iVar24 = iVar7;\n    if (iVar7 < 0x20) {\n      iVar24 = 0x20;\n    }\n    iVar42 = (int)B >> (uVar6 & 0x1f);\n    if (iVar24 == 0) {\n      trap(7);\n    }\n    iVar24 = ((int)((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24) / iVar24) * iVar24;\n    iVar43 = iVar24;\n    if (iVar24 < 0) {\n      iVar43 = iVar24 + 0x1f;\n    }\n    uVar26 = iVar43 >> 5;\n    if (iVar9 <= (int)uVar26) {\n      while( true ) {\n        uVar8 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T);\n        iVar9 = 1 << (uVar8 & 0x1f);\n        if ((iVar9 - 1U & uVar26) == 0) break;\n        uVar26 = -iVar9 & (uVar26 + iVar9) - 1;\n        iVar24 = uVar26 << 5;\n      }\n    }\n    if ((int)B <= (int)uVar26) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1d7,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c);\n      return mVar21;\n    }\n    iVar9 = 4 << (uVar6 & 0x1f);\n    uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);\n    iVar43 = uVar26 + 1;\n    uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);\n    iVar24 = iVar24 >> (uVar6 & 0x1f);\n    iVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                      (&__tmp_marker,(iVar43 * 2 << (uVar6 & 0x1f)) << 2);\n    uVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar43 * 8);\n    iVar43 = iVar9 + (iVar43 << (uVar6 & 0x1f)) * 4;\n    ppiVar36 = (int **)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                                 (&__tmp_marker,(uVar6 + 1) * 4);\n    piVar13 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                               (&__tmp_marker,8 << (uVar6 & 0x1f));\n    if (-1 < (int)uVar6) {\n      uVar8 = 0;\n      ppiVar25 = ppiVar36;\n      do {\n        uVar2 = uVar8 & 0x1f;\n        *ppiVar25 = piVar13;\n        uVar8 = uVar8 + 1;\n        piVar13 = (int *)((int)piVar13 + (4 << uVar2));\n        ppiVar25 = ppiVar25 + 1;\n      } while (uVar8 != uVar6 + 1);\n    }\n    mpn_fft_initl(ppiVar36,uVar6);\n    if (0 < iVar33) {\n      iVar14 = (iVar42 << (uVar6 & 0x1f)) + 1;\n      pcVar15 = (code *)(PTR_LAB_00097078 + 0xad4);\n      pcVar16 = (code *)(PTR_LAB_00097078 + -0x4ac);\n      iVar39 = 0;\n      do {\n        ppmVar35 = Ap + iVar39;\n        pmVar34 = *ppmVar35;\n        pmVar28 = pmVar34 + (int)B;\n        pmVar17 = pmVar34;\n        if (*pmVar28 != 0) {\n          do {\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n          pmVar17 = pmVar34;\n          pmVar22 = B;\n          if (*pmVar28 == 0) {\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }\n          else {\n            *pmVar28 = 0;\n          }\n        }\n        if (Ap == local_74) {\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n        }\n        else {\n          pmVar28 = local_74[iVar39];\n          pmVar22 = pmVar28 + (int)B;\n          pmVar17 = pmVar28;\n          if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);\n        }\n        iVar39 = iVar39 + 1;\n        mVar21 = (*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T);\n        (*ppmVar35)[(int)B] = mVar21;\n      } while (iVar33 != iVar39);\n    }\n  }\nLAB_00040f88:\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  iVar9 = (int)B + 1;\n  ppiVar25 = fft_l + iVar9;\n  mpn_fft_fftinv(Ap,iVar33,iVar30,(mp_size_t)B,(mp_ptr)fft_l);\n  puVar4 = PTR_LAB_00097078;\n  *Bp = (mp_ptr)ppiVar25;\n  mpn_fft_mul_2exp_modF((mp_ptr)ppiVar25,*Ap,(int)B * 0x40 - k,(mp_size_t)B);\n  ppiVar29 = ppiVar25 + (int)B;\n  ppiVar36 = ppiVar25;\n  if (*ppiVar29 != (int *)0x0) {\n    do {\n      piVar13 = *ppiVar36;\n      *ppiVar36 = (int *)((int)piVar13 - 1);\n      ppiVar36 = ppiVar36 + 1;\n    } while (piVar13 == (int *)0x0);\n    if (*ppiVar29 == (int *)0x0) {\n      pmVar17 = B;\n      if (B != (mp_ptr)0x0) {\n        do {\n          pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n          *ppiVar25 = (int *)0x0;\n          ppiVar25 = ppiVar25 + 1;\n        } while (pmVar17 != (mp_ptr)0x0);\n      }\n      *ppiVar29 = (int *)&DAT_00000001;\n    }\n    else {\n      *ppiVar29 = (int *)0x0;\n    }\n  }\n  if (1 < iVar33) {\n    ppmVar40 = Ap + 1;\n    iVar30 = (int)B * 0x40 - ((iVar33 + -1) * l + k);\n    ppmVar35 = Bp;\n    do {\n      ppmVar35 = ppmVar35 + 1;\n      pmVar28 = ppmVar40[-1];\n      *ppmVar35 = pmVar28;\n      (*(code *)(puVar4 + -0xa24))(pmVar28,*ppmVar40,iVar30,B);\n      pmVar34 = pmVar28 + (int)B;\n      pmVar17 = pmVar28;\n      if (*pmVar34 != 0) {\n        do {\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          pmVar17 = pmVar17 + 1;\n        } while (mVar21 == 0);\n        if (*pmVar34 == 0) {\n          pmVar17 = B;\n          if (B != (mp_ptr)0x0) {\n            do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);\n          }\n          *pmVar34 = 1;\n        }\n        else {\n          *pmVar34 = 0;\n        }\n      }\n      ppmVar40 = ppmVar40 + 1;\n      iVar30 = iVar30 + l;\n    } while (ppmVar40 != (mp_ptr *)((int)Ap + (4 << (k & 0x1fU))));\n  }\n  local_74 = (mp_ptr *)(iVar33 - 1);\n  ppiVar36 = fft_l;\n  iVar30 = iVar9;\n  if (B != (mp_ptr)0xffffffff) {\n    do {\n      iVar30 = iVar30 + -1;\n      *ppiVar36 = (int *)0x0;\n      ppiVar36 = ppiVar36 + 1;\n    } while (iVar30 != 0);\n  }\n  iVar42 = (int)local_74 * nprime;\n  iVar7 = pl * 2;\n  pmVar28 = (mp_ptr)((int)B + iVar42);\n  iVar24 = (int)pmVar28 + 1;\n  pmVar17 = A;\n  iVar30 = iVar24;\n  if (iVar24 == 0) {\n    pmVar34 = (mp_ptr)0xffffffff;\n  }\n  else {\n    do {\n      iVar30 = iVar30 + -1;\n      *pmVar17 = 0;\n      pmVar17 = pmVar17 + 1;\n      pmVar34 = pmVar28;\n    } while (iVar30 != 0);\n  }\n  if (-1 < (int)local_74) {\n    local_68 = 0;\n    pmVar22 = A + iVar9 + iVar42 + 1;\n    pmVar37 = A + (int)pmVar34;\n    pmVar38 = A + iVar42;\n    ppmVar35 = local_74;\n    pmVar17 = B;\nLAB_000411b8:\n    do {\n      uVar6 = (uint)ppmVar35;\n      iVar30 = (*(code *)PTR___gmpn_add_n_00097334)\n                         (pmVar38,pmVar38,Bp[iVar33 - uVar6 & (uint)local_74],iVar9);\n      if ((iVar30 != 0) && (mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0)) {\n        if ((int)pmVar17 - (int)B < 2) {\nLAB_00041254:\n          local_68 = local_68 + 1;\n        }\n        else {\n          mVar21 = *pmVar22;\n          *pmVar22 = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n      pmVar18 = Bp[iVar33 - uVar6 & (uint)local_74];\n      fft_l[nprime * 2] = (int *)(uVar6 + 1);\n      puVar19 = pmVar18 + (int)B;\n      iVar30 = iVar9;\n      ppiVar36 = fft_l + (int)B;\n      do {\n        iVar30 = iVar30 + -1;\n        if (iVar30 < 0) goto LAB_000412a0;\n        piVar13 = (int *)*puVar19;\n        piVar31 = *ppiVar36;\n        puVar19 = puVar19 + -1;\n        ppiVar36 = ppiVar36 + -1;\n      } while (piVar13 == piVar31);\n      if (piVar31 < piVar13) {\n        mVar21 = *pmVar38;\n        *pmVar38 = mVar21 - 1;\n        if (mVar21 == 0) {\n          if ((int)pmVar17 + 1 < 2) {\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }\n          else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }\n        }\n        mVar21 = *pmVar37;\n        *pmVar37 = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;\n          if (iVar30 < 2) {\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }\n          mVar21 = pmVar37[1];\n          pmVar37[1] = mVar21 - 1;\n          if (mVar21 == 0) {\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }\n        }\n      }\nLAB_000412a0:\n      pmVar38 = pmVar38 + -nprime;\n      pmVar22 = pmVar22 + -nprime;\n      pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n      pmVar37 = pmVar37 + -nprime;\n      ppmVar35 = (mp_ptr *)(uVar6 - 1);\n    } while (uVar6 - 1 != 0xffffffff);\n    if (local_68 == uVar6 - 1) {\n      iVar30 = iVar24 - pl;\n      pmVar17 = A + iVar30;\n      mVar21 = *pmVar17;\n      *pmVar17 = mVar21 + 1;\n      if (mVar21 + 1 == 0) {\n        if (pl < 2) {\n          pmVar17 = A + iVar30 + -1;\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          if ((mVar21 == 0) && (pl == 1)) {\n            mVar21 = pmVar17[1];\nLAB_00041a38:\n            pmVar17[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }\n          }\nLAB_00041a74:\n          A[(int)pmVar28] = A[(int)pmVar28] - 1;\n        }\n        else {\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n    }\n    else if (local_68 == 1) {\n      if (iVar24 < iVar7) {\n        pmVar17 = A + (iVar24 - pl);\n        mVar21 = *pmVar17;\n        *pmVar17 = mVar21 - 1;\n        if (((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)) {\n          iVar30 = 2;\n          pmVar17 = pmVar17 + 2;\n          do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n        }\n      }\n      else {\n        pmVar17 = A + iVar24 + pl * -2;\n        while( true ) {\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }\n      }\n    }\n  }\nLAB_000412d8:\n  iVar30 = iVar24 + pl * -2;\n  if (iVar30 < 1) {\n    if (pl != 0) {\n      iVar33 = pl + -1;\n      mVar21 = *A;\n      pmVar23 = op;\n      pmVar3 = A;\n      if (iVar33 == 0) {\n        *op = mVar21;\n      }\n      else {\n        do {\n          *pmVar23 = mVar21;\n          iVar33 = iVar33 + -1;\n          mVar21 = pmVar3[1];\n          pmVar23 = pmVar23 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (iVar33 != 0);\n        op[pl + -1] = mVar21;\n      }\n    }\n    uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl + iVar30);\n    pmVar28 = op + pl + iVar30;\n    uVar26 = *pmVar28;\n    pmVar17 = (mp_ptr)(uVar26 - uVar6);\n    *pmVar28 = (mp_limb_t)pmVar17;\n    if (uVar26 < uVar6) {\n      if (iVar7 - iVar24 < 2) {\nLAB_000413d8:\n        mVar21 = *op;\n        *op = mVar21 + 1;\n        if (mVar21 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        mVar21 = pmVar28[1];\n        pmVar28[1] = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = 2;\n          pmVar28 = pmVar28 + 2;\n          do {\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          } while (mVar27 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR___gmpn_add_n_00097334)(op,A,A + pl * 2,iVar30);\n    puVar41 = A + iVar30;\n    puVar19 = op + iVar30;\n    iVar30 = pl - iVar30;\n    uVar26 = *puVar41;\n    *puVar19 = uVar6 + uVar26;\n    if (uVar6 + uVar26 < uVar6) {\n      if (iVar30 < 2) {\nLAB_00041994:\n        mVar21 = 1;\n      }\n      else {\n        uVar6 = puVar41[1];\n        puVar19[1] = uVar6 + 1;\n        if (uVar6 + 1 == 0) {\n          puVar32 = puVar41 + 2;\n          iVar33 = 2;\n          puVar20 = puVar19 + 2;\n          do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);\n        }\n        else {\n          iVar33 = 2;\n        }\n        if ((puVar19 == puVar41) || (iVar30 <= iVar33)) goto LAB_00041acc;\n        puVar20 = puVar41 + iVar33;\n        puVar19 = puVar19 + iVar33;\n        do {\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n          puVar19 = puVar19 + 1;\n        } while (puVar20 != puVar41 + iVar30);\n        mVar21 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar41) && (puVar20 = puVar41 + 1, 1 < iVar30)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n        } while (puVar41 + iVar30 != puVar20);\n      }\nLAB_00041acc:\n      mVar21 = 0;\n    }\n    pmVar17 = op;\n    uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl);\n    uVar26 = op[pl];\n    op[pl] = uVar26 - uVar6;\n    if ((uVar6 <= uVar26) || (mVar21 = mVar21 - 1, mVar21 != 0xffffffff)) goto LAB_000418b4;\n    mVar21 = *op;\n    *op = mVar21 + 1;\n    if (mVar21 + 1 != 0) {\n      mVar21 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if (pl < 2) {\nLAB_00041438:\n      mVar21 = 1;\n      goto LAB_000418b4;\n    }\n    mVar21 = op[1];\n    op[1] = mVar21 + 1;\n    if (mVar21 + 1 == 0) {\n      iVar30 = 2;\n      pmVar28 = op + 2;\n      do {\n        bVar1 = pl == iVar30;\n        iVar30 = iVar30 + 1;\n        pmVar17 = (mp_ptr)pl;\n        if (bVar1) goto LAB_00041438;\n        mVar21 = *pmVar28;\n        *pmVar28 = mVar21 + 1;\n        pmVar28 = pmVar28 + 1;\n      } while (mVar21 + 1 == 0);\n    }\n  }\n  mVar21 = 0;\nLAB_000418b4:\n  if (local_2c != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)pmVar17 & 0x1f)) + 1 << ((uint)pmVar17 & 0x1f);\n  }\n  return mVar21;\n}\n\n" (function_definition "mp_limb_t mpn_mul_fft_internal\n                    (mp_ptr op,mp_size_t pl,int k,mp_ptr *Ap,mp_ptr *Bp,mp_ptr A,mp_ptr B,\n                    mp_size_t nprime,mp_size_t l,mp_size_t Mp,int **fft_l,mp_ptr T,int sqr)\n\n{\n  bool bVar1;\n  uint uVar2;\n  mp_limb_t *pmVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  int *piVar13;\n  int iVar14;\n  code *pcVar15;\n  code *pcVar16;\n  mp_ptr pmVar17;\n  mp_ptr pmVar18;\n  uint *puVar19;\n  uint *puVar20;\n  mp_limb_t mVar21;\n  mp_ptr pmVar22;\n  mp_limb_t *pmVar23;\n  int iVar24;\n  int **ppiVar25;\n  uint uVar26;\n  mp_limb_t mVar27;\n  mp_ptr pmVar28;\n  int **ppiVar29;\n  int iVar30;\n  int *piVar31;\n  uint *puVar32;\n  int iVar33;\n  mp_ptr pmVar34;\n  mp_ptr *ppmVar35;\n  mp_limb_t __gmp_c;\n  int **ppiVar36;\n  mp_ptr pmVar37;\n  mp_ptr pmVar38;\n  mp_ptr tp;\n  int iVar39;\n  mp_ptr *ppmVar40;\n  uint *puVar41;\n  int iVar42;\n  int iVar43;\n  mp_ptr *local_74;\n  int local_68;\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_00097540;\n  iVar33 = 1 << (k & 0x1fU);\n  ppiVar36 = (int **)(Mp + k * 4);\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar30 = l << 1;\n  mpn_fft_fft(Ap,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l);\n  if (T == (mp_ptr)0x0) {\n    mpn_fft_fft(Bp,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l);\n    if (Ap == Bp) {\n      T = (mp_ptr)&DAT_00000001;\n      goto LAB_00040bb8;\n    }\n    iVar9 = 0x270;\n    local_74 = Bp;\n    if (0x26f < (int)B) goto LAB_00040bc8;\nLAB_0004149c:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,(int)B * 8);\n    puVar41 = puVar19 + (int)B;\n    if (0 < iVar33) {\n      iVar9 = 0;\n      pmVar28 = *Ap;\n      pmVar17 = *local_74;\n      if (Ap == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      pmVar22 = pmVar28 + (int)B;\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,pmVar17,pmVar28,B);\n      mVar21 = *pmVar22;\n      pmVar34 = pmVar17 + (int)B;\n      if (mVar21 != 0) goto LAB_0004160c;\n      do {\n        pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*pmVar34 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar15)(pmVar28,puVar19,puVar41,B);\n        if ((iVar7 == 0) || (mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0)) {\nLAB_0004199c:\n          mVar21 = 0;\n        }\n        else {\n          mVar21 = 1;\n          if (1 < (int)B) {\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *pmVar22 = mVar21;\n        iVar9 = iVar9 + 1;\n        if (iVar33 == iVar9) goto LAB_00040f88;\n        pmVar28 = Ap[iVar9];\n        pmVar17 = local_74[iVar9];\n        if (Ap != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        pmVar22 = pmVar28 + (int)B;\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,pmVar28,B);\n        mVar21 = *pmVar22;\n        pmVar34 = pmVar17 + (int)B;\n      } while (mVar21 == 0);\nLAB_0004160c:\n      mVar21 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar17,B);\n      if (*pmVar34 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B);\n        mVar21 = iVar7 + mVar21 + *pmVar22;\n      }\n      pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))\n          && (1 < (int)B << 1)) && (uVar6 = puVar19[1], puVar19[1] = uVar6 + 1, uVar6 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + (int)B * 2) break;\n          uVar6 = *puVar20;\n          *puVar20 = uVar6 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar6 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar9 = 0x230;\n    local_74 = Ap;\n    if ((int)B < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(B,T);\n    iVar7 = 1 << (uVar6 & 0x1f);\n    if ((iVar7 - 1U & (uint)B) != 0) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1c1,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490);\n      return mVar21;\n    }\n    iVar24 = iVar7;\n    if (iVar7 < 0x20) {\n      iVar24 = 0x20;\n    }\n    iVar42 = (int)B >> (uVar6 & 0x1f);\n    if (iVar24 == 0) {\n      trap(7);\n    }\n    iVar24 = ((int)((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24) / iVar24) * iVar24;\n    iVar43 = iVar24;\n    if (iVar24 < 0) {\n      iVar43 = iVar24 + 0x1f;\n    }\n    uVar26 = iVar43 >> 5;\n    if (iVar9 <= (int)uVar26) {\n      while( true ) {\n        uVar8 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T);\n        iVar9 = 1 << (uVar8 & 0x1f);\n        if ((iVar9 - 1U & uVar26) == 0) break;\n        uVar26 = -iVar9 & (uVar26 + iVar9) - 1;\n        iVar24 = uVar26 << 5;\n      }\n    }\n    if ((int)B <= (int)uVar26) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1d7,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c);\n      return mVar21;\n    }\n    iVar9 = 4 << (uVar6 & 0x1f);\n    uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);\n    iVar43 = uVar26 + 1;\n    uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);\n    iVar24 = iVar24 >> (uVar6 & 0x1f);\n    iVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                      (&__tmp_marker,(iVar43 * 2 << (uVar6 & 0x1f)) << 2);\n    uVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar43 * 8);\n    iVar43 = iVar9 + (iVar43 << (uVar6 & 0x1f)) * 4;\n    ppiVar36 = (int **)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                                 (&__tmp_marker,(uVar6 + 1) * 4);\n    piVar13 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                               (&__tmp_marker,8 << (uVar6 & 0x1f));\n    if (-1 < (int)uVar6) {\n      uVar8 = 0;\n      ppiVar25 = ppiVar36;\n      do {\n        uVar2 = uVar8 & 0x1f;\n        *ppiVar25 = piVar13;\n        uVar8 = uVar8 + 1;\n        piVar13 = (int *)((int)piVar13 + (4 << uVar2));\n        ppiVar25 = ppiVar25 + 1;\n      } while (uVar8 != uVar6 + 1);\n    }\n    mpn_fft_initl(ppiVar36,uVar6);\n    if (0 < iVar33) {\n      iVar14 = (iVar42 << (uVar6 & 0x1f)) + 1;\n      pcVar15 = (code *)(PTR_LAB_00097078 + 0xad4);\n      pcVar16 = (code *)(PTR_LAB_00097078 + -0x4ac);\n      iVar39 = 0;\n      do {\n        ppmVar35 = Ap + iVar39;\n        pmVar34 = *ppmVar35;\n        pmVar28 = pmVar34 + (int)B;\n        pmVar17 = pmVar34;\n        if (*pmVar28 != 0) {\n          do {\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n          pmVar17 = pmVar34;\n          pmVar22 = B;\n          if (*pmVar28 == 0) {\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }\n          else {\n            *pmVar28 = 0;\n          }\n        }\n        if (Ap == local_74) {\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n        }\n        else {\n          pmVar28 = local_74[iVar39];\n          pmVar22 = pmVar28 + (int)B;\n          pmVar17 = pmVar28;\n          if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);\n        }\n        iVar39 = iVar39 + 1;\n        mVar21 = (*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T);\n        (*ppmVar35)[(int)B] = mVar21;\n      } while (iVar33 != iVar39);\n    }\n  }\nLAB_00040f88:\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  iVar9 = (int)B + 1;\n  ppiVar25 = fft_l + iVar9;\n  mpn_fft_fftinv(Ap,iVar33,iVar30,(mp_size_t)B,(mp_ptr)fft_l);\n  puVar4 = PTR_LAB_00097078;\n  *Bp = (mp_ptr)ppiVar25;\n  mpn_fft_mul_2exp_modF((mp_ptr)ppiVar25,*Ap,(int)B * 0x40 - k,(mp_size_t)B);\n  ppiVar29 = ppiVar25 + (int)B;\n  ppiVar36 = ppiVar25;\n  if (*ppiVar29 != (int *)0x0) {\n    do {\n      piVar13 = *ppiVar36;\n      *ppiVar36 = (int *)((int)piVar13 - 1);\n      ppiVar36 = ppiVar36 + 1;\n    } while (piVar13 == (int *)0x0);\n    if (*ppiVar29 == (int *)0x0) {\n      pmVar17 = B;\n      if (B != (mp_ptr)0x0) {\n        do {\n          pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n          *ppiVar25 = (int *)0x0;\n          ppiVar25 = ppiVar25 + 1;\n        } while (pmVar17 != (mp_ptr)0x0);\n      }\n      *ppiVar29 = (int *)&DAT_00000001;\n    }\n    else {\n      *ppiVar29 = (int *)0x0;\n    }\n  }\n  if (1 < iVar33) {\n    ppmVar40 = Ap + 1;\n    iVar30 = (int)B * 0x40 - ((iVar33 + -1) * l + k);\n    ppmVar35 = Bp;\n    do {\n      ppmVar35 = ppmVar35 + 1;\n      pmVar28 = ppmVar40[-1];\n      *ppmVar35 = pmVar28;\n      (*(code *)(puVar4 + -0xa24))(pmVar28,*ppmVar40,iVar30,B);\n      pmVar34 = pmVar28 + (int)B;\n      pmVar17 = pmVar28;\n      if (*pmVar34 != 0) {\n        do {\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          pmVar17 = pmVar17 + 1;\n        } while (mVar21 == 0);\n        if (*pmVar34 == 0) {\n          pmVar17 = B;\n          if (B != (mp_ptr)0x0) {\n            do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);\n          }\n          *pmVar34 = 1;\n        }\n        else {\n          *pmVar34 = 0;\n        }\n      }\n      ppmVar40 = ppmVar40 + 1;\n      iVar30 = iVar30 + l;\n    } while (ppmVar40 != (mp_ptr *)((int)Ap + (4 << (k & 0x1fU))));\n  }\n  local_74 = (mp_ptr *)(iVar33 - 1);\n  ppiVar36 = fft_l;\n  iVar30 = iVar9;\n  if (B != (mp_ptr)0xffffffff) {\n    do {\n      iVar30 = iVar30 + -1;\n      *ppiVar36 = (int *)0x0;\n      ppiVar36 = ppiVar36 + 1;\n    } while (iVar30 != 0);\n  }\n  iVar42 = (int)local_74 * nprime;\n  iVar7 = pl * 2;\n  pmVar28 = (mp_ptr)((int)B + iVar42);\n  iVar24 = (int)pmVar28 + 1;\n  pmVar17 = A;\n  iVar30 = iVar24;\n  if (iVar24 == 0) {\n    pmVar34 = (mp_ptr)0xffffffff;\n  }\n  else {\n    do {\n      iVar30 = iVar30 + -1;\n      *pmVar17 = 0;\n      pmVar17 = pmVar17 + 1;\n      pmVar34 = pmVar28;\n    } while (iVar30 != 0);\n  }\n  if (-1 < (int)local_74) {\n    local_68 = 0;\n    pmVar22 = A + iVar9 + iVar42 + 1;\n    pmVar37 = A + (int)pmVar34;\n    pmVar38 = A + iVar42;\n    ppmVar35 = local_74;\n    pmVar17 = B;\nLAB_000411b8:\n    do {\n      uVar6 = (uint)ppmVar35;\n      iVar30 = (*(code *)PTR___gmpn_add_n_00097334)\n                         (pmVar38,pmVar38,Bp[iVar33 - uVar6 & (uint)local_74],iVar9);\n      if ((iVar30 != 0) && (mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0)) {\n        if ((int)pmVar17 - (int)B < 2) {\nLAB_00041254:\n          local_68 = local_68 + 1;\n        }\n        else {\n          mVar21 = *pmVar22;\n          *pmVar22 = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n      pmVar18 = Bp[iVar33 - uVar6 & (uint)local_74];\n      fft_l[nprime * 2] = (int *)(uVar6 + 1);\n      puVar19 = pmVar18 + (int)B;\n      iVar30 = iVar9;\n      ppiVar36 = fft_l + (int)B;\n      do {\n        iVar30 = iVar30 + -1;\n        if (iVar30 < 0) goto LAB_000412a0;\n        piVar13 = (int *)*puVar19;\n        piVar31 = *ppiVar36;\n        puVar19 = puVar19 + -1;\n        ppiVar36 = ppiVar36 + -1;\n      } while (piVar13 == piVar31);\n      if (piVar31 < piVar13) {\n        mVar21 = *pmVar38;\n        *pmVar38 = mVar21 - 1;\n        if (mVar21 == 0) {\n          if ((int)pmVar17 + 1 < 2) {\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }\n          else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }\n        }\n        mVar21 = *pmVar37;\n        *pmVar37 = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;\n          if (iVar30 < 2) {\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }\n          mVar21 = pmVar37[1];\n          pmVar37[1] = mVar21 - 1;\n          if (mVar21 == 0) {\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }\n        }\n      }\nLAB_000412a0:\n      pmVar38 = pmVar38 + -nprime;\n      pmVar22 = pmVar22 + -nprime;\n      pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n      pmVar37 = pmVar37 + -nprime;\n      ppmVar35 = (mp_ptr *)(uVar6 - 1);\n    } while (uVar6 - 1 != 0xffffffff);\n    if (local_68 == uVar6 - 1) {\n      iVar30 = iVar24 - pl;\n      pmVar17 = A + iVar30;\n      mVar21 = *pmVar17;\n      *pmVar17 = mVar21 + 1;\n      if (mVar21 + 1 == 0) {\n        if (pl < 2) {\n          pmVar17 = A + iVar30 + -1;\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          if ((mVar21 == 0) && (pl == 1)) {\n            mVar21 = pmVar17[1];\nLAB_00041a38:\n            pmVar17[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }\n          }\nLAB_00041a74:\n          A[(int)pmVar28] = A[(int)pmVar28] - 1;\n        }\n        else {\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n    }\n    else if (local_68 == 1) {\n      if (iVar24 < iVar7) {\n        pmVar17 = A + (iVar24 - pl);\n        mVar21 = *pmVar17;\n        *pmVar17 = mVar21 - 1;\n        if (((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)) {\n          iVar30 = 2;\n          pmVar17 = pmVar17 + 2;\n          do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n        }\n      }\n      else {\n        pmVar17 = A + iVar24 + pl * -2;\n        while( true ) {\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }\n      }\n    }\n  }\nLAB_000412d8:\n  iVar30 = iVar24 + pl * -2;\n  if (iVar30 < 1) {\n    if (pl != 0) {\n      iVar33 = pl + -1;\n      mVar21 = *A;\n      pmVar23 = op;\n      pmVar3 = A;\n      if (iVar33 == 0) {\n        *op = mVar21;\n      }\n      else {\n        do {\n          *pmVar23 = mVar21;\n          iVar33 = iVar33 + -1;\n          mVar21 = pmVar3[1];\n          pmVar23 = pmVar23 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (iVar33 != 0);\n        op[pl + -1] = mVar21;\n      }\n    }\n    uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl + iVar30);\n    pmVar28 = op + pl + iVar30;\n    uVar26 = *pmVar28;\n    pmVar17 = (mp_ptr)(uVar26 - uVar6);\n    *pmVar28 = (mp_limb_t)pmVar17;\n    if (uVar26 < uVar6) {\n      if (iVar7 - iVar24 < 2) {\nLAB_000413d8:\n        mVar21 = *op;\n        *op = mVar21 + 1;\n        if (mVar21 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        mVar21 = pmVar28[1];\n        pmVar28[1] = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = 2;\n          pmVar28 = pmVar28 + 2;\n          do {\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          } while (mVar27 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR___gmpn_add_n_00097334)(op,A,A + pl * 2,iVar30);\n    puVar41 = A + iVar30;\n    puVar19 = op + iVar30;\n    iVar30 = pl - iVar30;\n    uVar26 = *puVar41;\n    *puVar19 = uVar6 + uVar26;\n    if (uVar6 + uVar26 < uVar6) {\n      if (iVar30 < 2) {\nLAB_00041994:\n        mVar21 = 1;\n      }\n      else {\n        uVar6 = puVar41[1];\n        puVar19[1] = uVar6 + 1;\n        if (uVar6 + 1 == 0) {\n          puVar32 = puVar41 + 2;\n          iVar33 = 2;\n          puVar20 = puVar19 + 2;\n          do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);\n        }\n        else {\n          iVar33 = 2;\n        }\n        if ((puVar19 == puVar41) || (iVar30 <= iVar33)) goto LAB_00041acc;\n        puVar20 = puVar41 + iVar33;\n        puVar19 = puVar19 + iVar33;\n        do {\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n          puVar19 = puVar19 + 1;\n        } while (puVar20 != puVar41 + iVar30);\n        mVar21 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar41) && (puVar20 = puVar41 + 1, 1 < iVar30)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n        } while (puVar41 + iVar30 != puVar20);\n      }\nLAB_00041acc:\n      mVar21 = 0;\n    }\n    pmVar17 = op;\n    uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl);\n    uVar26 = op[pl];\n    op[pl] = uVar26 - uVar6;\n    if ((uVar6 <= uVar26) || (mVar21 = mVar21 - 1, mVar21 != 0xffffffff)) goto LAB_000418b4;\n    mVar21 = *op;\n    *op = mVar21 + 1;\n    if (mVar21 + 1 != 0) {\n      mVar21 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if (pl < 2) {\nLAB_00041438:\n      mVar21 = 1;\n      goto LAB_000418b4;\n    }\n    mVar21 = op[1];\n    op[1] = mVar21 + 1;\n    if (mVar21 + 1 == 0) {\n      iVar30 = 2;\n      pmVar28 = op + 2;\n      do {\n        bVar1 = pl == iVar30;\n        iVar30 = iVar30 + 1;\n        pmVar17 = (mp_ptr)pl;\n        if (bVar1) goto LAB_00041438;\n        mVar21 = *pmVar28;\n        *pmVar28 = mVar21 + 1;\n        pmVar28 = pmVar28 + 1;\n      } while (mVar21 + 1 == 0);\n    }\n  }\n  mVar21 = 0;\nLAB_000418b4:\n  if (local_2c != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)pmVar17 & 0x1f)) + 1 << ((uint)pmVar17 & 0x1f);\n  }\n  return mVar21;\n}" type_identifier (function_declarator "mpn_mul_fft_internal\n                    (mp_ptr op,mp_size_t pl,int k,mp_ptr *Ap,mp_ptr *Bp,mp_ptr A,mp_ptr B,\n                    mp_size_t nprime,mp_size_t l,mp_size_t Mp,int **fft_l,mp_ptr T,int sqr)" identifier (parameter_list "(mp_ptr op,mp_size_t pl,int k,mp_ptr *Ap,mp_ptr *Bp,mp_ptr A,mp_ptr B,\n                    mp_size_t nprime,mp_size_t l,mp_size_t Mp,int **fft_l,mp_ptr T,int sqr)" ( (parameter_declaration "mp_ptr op" type_identifier identifier) , (parameter_declaration "mp_size_t pl" type_identifier identifier) , (parameter_declaration "int k" primitive_type identifier) , (parameter_declaration "mp_ptr *Ap" type_identifier (pointer_declarator "*Ap" * identifier)) , (parameter_declaration "mp_ptr *Bp" type_identifier (pointer_declarator "*Bp" * identifier)) , (parameter_declaration "mp_ptr A" type_identifier identifier) , (parameter_declaration "mp_ptr B" type_identifier identifier) , (parameter_declaration "mp_size_t nprime" type_identifier identifier) , (parameter_declaration "mp_size_t l" type_identifier identifier) , (parameter_declaration "mp_size_t Mp" type_identifier identifier) , (parameter_declaration "int **fft_l" primitive_type (pointer_declarator "**fft_l" * (pointer_declarator "*fft_l" * identifier))) , (parameter_declaration "mp_ptr T" type_identifier identifier) , (parameter_declaration "int sqr" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  uint uVar2;\n  mp_limb_t *pmVar3;\n  undefined *puVar4;\n  undefined *puVar5;\n  uint uVar6;\n  int iVar7;\n  uint uVar8;\n  int iVar9;\n  undefined4 uVar10;\n  undefined4 uVar11;\n  undefined4 uVar12;\n  int *piVar13;\n  int iVar14;\n  code *pcVar15;\n  code *pcVar16;\n  mp_ptr pmVar17;\n  mp_ptr pmVar18;\n  uint *puVar19;\n  uint *puVar20;\n  mp_limb_t mVar21;\n  mp_ptr pmVar22;\n  mp_limb_t *pmVar23;\n  int iVar24;\n  int **ppiVar25;\n  uint uVar26;\n  mp_limb_t mVar27;\n  mp_ptr pmVar28;\n  int **ppiVar29;\n  int iVar30;\n  int *piVar31;\n  uint *puVar32;\n  int iVar33;\n  mp_ptr pmVar34;\n  mp_ptr *ppmVar35;\n  mp_limb_t __gmp_c;\n  int **ppiVar36;\n  mp_ptr pmVar37;\n  mp_ptr pmVar38;\n  mp_ptr tp;\n  int iVar39;\n  mp_ptr *ppmVar40;\n  uint *puVar41;\n  int iVar42;\n  int iVar43;\n  mp_ptr *local_74;\n  int local_68;\n  tmp_reentrant_t *__tmp_marker;\n  int local_2c;\n  \n  puVar5 = PTR___stack_chk_guard_00097540;\n  iVar33 = 1 << (k & 0x1fU);\n  ppiVar36 = (int **)(Mp + k * 4);\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar30 = l << 1;\n  mpn_fft_fft(Ap,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l);\n  if (T == (mp_ptr)0x0) {\n    mpn_fft_fft(Bp,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l);\n    if (Ap == Bp) {\n      T = (mp_ptr)&DAT_00000001;\n      goto LAB_00040bb8;\n    }\n    iVar9 = 0x270;\n    local_74 = Bp;\n    if (0x26f < (int)B) goto LAB_00040bc8;\nLAB_0004149c:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,(int)B * 8);\n    puVar41 = puVar19 + (int)B;\n    if (0 < iVar33) {\n      iVar9 = 0;\n      pmVar28 = *Ap;\n      pmVar17 = *local_74;\n      if (Ap == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      pmVar22 = pmVar28 + (int)B;\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,pmVar17,pmVar28,B);\n      mVar21 = *pmVar22;\n      pmVar34 = pmVar17 + (int)B;\n      if (mVar21 != 0) goto LAB_0004160c;\n      do {\n        pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*pmVar34 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar15)(pmVar28,puVar19,puVar41,B);\n        if ((iVar7 == 0) || (mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0)) {\nLAB_0004199c:\n          mVar21 = 0;\n        }\n        else {\n          mVar21 = 1;\n          if (1 < (int)B) {\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *pmVar22 = mVar21;\n        iVar9 = iVar9 + 1;\n        if (iVar33 == iVar9) goto LAB_00040f88;\n        pmVar28 = Ap[iVar9];\n        pmVar17 = local_74[iVar9];\n        if (Ap != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        pmVar22 = pmVar28 + (int)B;\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,pmVar28,B);\n        mVar21 = *pmVar22;\n        pmVar34 = pmVar17 + (int)B;\n      } while (mVar21 == 0);\nLAB_0004160c:\n      mVar21 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar17,B);\n      if (*pmVar34 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B);\n        mVar21 = iVar7 + mVar21 + *pmVar22;\n      }\n      pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))\n          && (1 < (int)B << 1)) && (uVar6 = puVar19[1], puVar19[1] = uVar6 + 1, uVar6 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + (int)B * 2) break;\n          uVar6 = *puVar20;\n          *puVar20 = uVar6 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar6 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar9 = 0x230;\n    local_74 = Ap;\n    if ((int)B < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(B,T);\n    iVar7 = 1 << (uVar6 & 0x1f);\n    if ((iVar7 - 1U & (uint)B) != 0) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1c1,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490);\n      return mVar21;\n    }\n    iVar24 = iVar7;\n    if (iVar7 < 0x20) {\n      iVar24 = 0x20;\n    }\n    iVar42 = (int)B >> (uVar6 & 0x1f);\n    if (iVar24 == 0) {\n      trap(7);\n    }\n    iVar24 = ((int)((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24) / iVar24) * iVar24;\n    iVar43 = iVar24;\n    if (iVar24 < 0) {\n      iVar43 = iVar24 + 0x1f;\n    }\n    uVar26 = iVar43 >> 5;\n    if (iVar9 <= (int)uVar26) {\n      while( true ) {\n        uVar8 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T);\n        iVar9 = 1 << (uVar8 & 0x1f);\n        if ((iVar9 - 1U & uVar26) == 0) break;\n        uVar26 = -iVar9 & (uVar26 + iVar9) - 1;\n        iVar24 = uVar26 << 5;\n      }\n    }\n    if ((int)B <= (int)uVar26) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1d7,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c);\n      return mVar21;\n    }\n    iVar9 = 4 << (uVar6 & 0x1f);\n    uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);\n    iVar43 = uVar26 + 1;\n    uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);\n    iVar24 = iVar24 >> (uVar6 & 0x1f);\n    iVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                      (&__tmp_marker,(iVar43 * 2 << (uVar6 & 0x1f)) << 2);\n    uVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar43 * 8);\n    iVar43 = iVar9 + (iVar43 << (uVar6 & 0x1f)) * 4;\n    ppiVar36 = (int **)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                                 (&__tmp_marker,(uVar6 + 1) * 4);\n    piVar13 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                               (&__tmp_marker,8 << (uVar6 & 0x1f));\n    if (-1 < (int)uVar6) {\n      uVar8 = 0;\n      ppiVar25 = ppiVar36;\n      do {\n        uVar2 = uVar8 & 0x1f;\n        *ppiVar25 = piVar13;\n        uVar8 = uVar8 + 1;\n        piVar13 = (int *)((int)piVar13 + (4 << uVar2));\n        ppiVar25 = ppiVar25 + 1;\n      } while (uVar8 != uVar6 + 1);\n    }\n    mpn_fft_initl(ppiVar36,uVar6);\n    if (0 < iVar33) {\n      iVar14 = (iVar42 << (uVar6 & 0x1f)) + 1;\n      pcVar15 = (code *)(PTR_LAB_00097078 + 0xad4);\n      pcVar16 = (code *)(PTR_LAB_00097078 + -0x4ac);\n      iVar39 = 0;\n      do {\n        ppmVar35 = Ap + iVar39;\n        pmVar34 = *ppmVar35;\n        pmVar28 = pmVar34 + (int)B;\n        pmVar17 = pmVar34;\n        if (*pmVar28 != 0) {\n          do {\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n          pmVar17 = pmVar34;\n          pmVar22 = B;\n          if (*pmVar28 == 0) {\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }\n          else {\n            *pmVar28 = 0;\n          }\n        }\n        if (Ap == local_74) {\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n        }\n        else {\n          pmVar28 = local_74[iVar39];\n          pmVar22 = pmVar28 + (int)B;\n          pmVar17 = pmVar28;\n          if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);\n        }\n        iVar39 = iVar39 + 1;\n        mVar21 = (*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T);\n        (*ppmVar35)[(int)B] = mVar21;\n      } while (iVar33 != iVar39);\n    }\n  }\nLAB_00040f88:\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }\n  iVar9 = (int)B + 1;\n  ppiVar25 = fft_l + iVar9;\n  mpn_fft_fftinv(Ap,iVar33,iVar30,(mp_size_t)B,(mp_ptr)fft_l);\n  puVar4 = PTR_LAB_00097078;\n  *Bp = (mp_ptr)ppiVar25;\n  mpn_fft_mul_2exp_modF((mp_ptr)ppiVar25,*Ap,(int)B * 0x40 - k,(mp_size_t)B);\n  ppiVar29 = ppiVar25 + (int)B;\n  ppiVar36 = ppiVar25;\n  if (*ppiVar29 != (int *)0x0) {\n    do {\n      piVar13 = *ppiVar36;\n      *ppiVar36 = (int *)((int)piVar13 - 1);\n      ppiVar36 = ppiVar36 + 1;\n    } while (piVar13 == (int *)0x0);\n    if (*ppiVar29 == (int *)0x0) {\n      pmVar17 = B;\n      if (B != (mp_ptr)0x0) {\n        do {\n          pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n          *ppiVar25 = (int *)0x0;\n          ppiVar25 = ppiVar25 + 1;\n        } while (pmVar17 != (mp_ptr)0x0);\n      }\n      *ppiVar29 = (int *)&DAT_00000001;\n    }\n    else {\n      *ppiVar29 = (int *)0x0;\n    }\n  }\n  if (1 < iVar33) {\n    ppmVar40 = Ap + 1;\n    iVar30 = (int)B * 0x40 - ((iVar33 + -1) * l + k);\n    ppmVar35 = Bp;\n    do {\n      ppmVar35 = ppmVar35 + 1;\n      pmVar28 = ppmVar40[-1];\n      *ppmVar35 = pmVar28;\n      (*(code *)(puVar4 + -0xa24))(pmVar28,*ppmVar40,iVar30,B);\n      pmVar34 = pmVar28 + (int)B;\n      pmVar17 = pmVar28;\n      if (*pmVar34 != 0) {\n        do {\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          pmVar17 = pmVar17 + 1;\n        } while (mVar21 == 0);\n        if (*pmVar34 == 0) {\n          pmVar17 = B;\n          if (B != (mp_ptr)0x0) {\n            do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);\n          }\n          *pmVar34 = 1;\n        }\n        else {\n          *pmVar34 = 0;\n        }\n      }\n      ppmVar40 = ppmVar40 + 1;\n      iVar30 = iVar30 + l;\n    } while (ppmVar40 != (mp_ptr *)((int)Ap + (4 << (k & 0x1fU))));\n  }\n  local_74 = (mp_ptr *)(iVar33 - 1);\n  ppiVar36 = fft_l;\n  iVar30 = iVar9;\n  if (B != (mp_ptr)0xffffffff) {\n    do {\n      iVar30 = iVar30 + -1;\n      *ppiVar36 = (int *)0x0;\n      ppiVar36 = ppiVar36 + 1;\n    } while (iVar30 != 0);\n  }\n  iVar42 = (int)local_74 * nprime;\n  iVar7 = pl * 2;\n  pmVar28 = (mp_ptr)((int)B + iVar42);\n  iVar24 = (int)pmVar28 + 1;\n  pmVar17 = A;\n  iVar30 = iVar24;\n  if (iVar24 == 0) {\n    pmVar34 = (mp_ptr)0xffffffff;\n  }\n  else {\n    do {\n      iVar30 = iVar30 + -1;\n      *pmVar17 = 0;\n      pmVar17 = pmVar17 + 1;\n      pmVar34 = pmVar28;\n    } while (iVar30 != 0);\n  }\n  if (-1 < (int)local_74) {\n    local_68 = 0;\n    pmVar22 = A + iVar9 + iVar42 + 1;\n    pmVar37 = A + (int)pmVar34;\n    pmVar38 = A + iVar42;\n    ppmVar35 = local_74;\n    pmVar17 = B;\nLAB_000411b8:\n    do {\n      uVar6 = (uint)ppmVar35;\n      iVar30 = (*(code *)PTR___gmpn_add_n_00097334)\n                         (pmVar38,pmVar38,Bp[iVar33 - uVar6 & (uint)local_74],iVar9);\n      if ((iVar30 != 0) && (mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0)) {\n        if ((int)pmVar17 - (int)B < 2) {\nLAB_00041254:\n          local_68 = local_68 + 1;\n        }\n        else {\n          mVar21 = *pmVar22;\n          *pmVar22 = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n      pmVar18 = Bp[iVar33 - uVar6 & (uint)local_74];\n      fft_l[nprime * 2] = (int *)(uVar6 + 1);\n      puVar19 = pmVar18 + (int)B;\n      iVar30 = iVar9;\n      ppiVar36 = fft_l + (int)B;\n      do {\n        iVar30 = iVar30 + -1;\n        if (iVar30 < 0) goto LAB_000412a0;\n        piVar13 = (int *)*puVar19;\n        piVar31 = *ppiVar36;\n        puVar19 = puVar19 + -1;\n        ppiVar36 = ppiVar36 + -1;\n      } while (piVar13 == piVar31);\n      if (piVar31 < piVar13) {\n        mVar21 = *pmVar38;\n        *pmVar38 = mVar21 - 1;\n        if (mVar21 == 0) {\n          if ((int)pmVar17 + 1 < 2) {\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }\n          else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }\n        }\n        mVar21 = *pmVar37;\n        *pmVar37 = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;\n          if (iVar30 < 2) {\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }\n          mVar21 = pmVar37[1];\n          pmVar37[1] = mVar21 - 1;\n          if (mVar21 == 0) {\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }\n        }\n      }\nLAB_000412a0:\n      pmVar38 = pmVar38 + -nprime;\n      pmVar22 = pmVar22 + -nprime;\n      pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n      pmVar37 = pmVar37 + -nprime;\n      ppmVar35 = (mp_ptr *)(uVar6 - 1);\n    } while (uVar6 - 1 != 0xffffffff);\n    if (local_68 == uVar6 - 1) {\n      iVar30 = iVar24 - pl;\n      pmVar17 = A + iVar30;\n      mVar21 = *pmVar17;\n      *pmVar17 = mVar21 + 1;\n      if (mVar21 + 1 == 0) {\n        if (pl < 2) {\n          pmVar17 = A + iVar30 + -1;\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          if ((mVar21 == 0) && (pl == 1)) {\n            mVar21 = pmVar17[1];\nLAB_00041a38:\n            pmVar17[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }\n          }\nLAB_00041a74:\n          A[(int)pmVar28] = A[(int)pmVar28] - 1;\n        }\n        else {\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n    }\n    else if (local_68 == 1) {\n      if (iVar24 < iVar7) {\n        pmVar17 = A + (iVar24 - pl);\n        mVar21 = *pmVar17;\n        *pmVar17 = mVar21 - 1;\n        if (((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)) {\n          iVar30 = 2;\n          pmVar17 = pmVar17 + 2;\n          do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n        }\n      }\n      else {\n        pmVar17 = A + iVar24 + pl * -2;\n        while( true ) {\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }\n      }\n    }\n  }\nLAB_000412d8:\n  iVar30 = iVar24 + pl * -2;\n  if (iVar30 < 1) {\n    if (pl != 0) {\n      iVar33 = pl + -1;\n      mVar21 = *A;\n      pmVar23 = op;\n      pmVar3 = A;\n      if (iVar33 == 0) {\n        *op = mVar21;\n      }\n      else {\n        do {\n          *pmVar23 = mVar21;\n          iVar33 = iVar33 + -1;\n          mVar21 = pmVar3[1];\n          pmVar23 = pmVar23 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (iVar33 != 0);\n        op[pl + -1] = mVar21;\n      }\n    }\n    uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl + iVar30);\n    pmVar28 = op + pl + iVar30;\n    uVar26 = *pmVar28;\n    pmVar17 = (mp_ptr)(uVar26 - uVar6);\n    *pmVar28 = (mp_limb_t)pmVar17;\n    if (uVar26 < uVar6) {\n      if (iVar7 - iVar24 < 2) {\nLAB_000413d8:\n        mVar21 = *op;\n        *op = mVar21 + 1;\n        if (mVar21 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        mVar21 = pmVar28[1];\n        pmVar28[1] = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = 2;\n          pmVar28 = pmVar28 + 2;\n          do {\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          } while (mVar27 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR___gmpn_add_n_00097334)(op,A,A + pl * 2,iVar30);\n    puVar41 = A + iVar30;\n    puVar19 = op + iVar30;\n    iVar30 = pl - iVar30;\n    uVar26 = *puVar41;\n    *puVar19 = uVar6 + uVar26;\n    if (uVar6 + uVar26 < uVar6) {\n      if (iVar30 < 2) {\nLAB_00041994:\n        mVar21 = 1;\n      }\n      else {\n        uVar6 = puVar41[1];\n        puVar19[1] = uVar6 + 1;\n        if (uVar6 + 1 == 0) {\n          puVar32 = puVar41 + 2;\n          iVar33 = 2;\n          puVar20 = puVar19 + 2;\n          do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);\n        }\n        else {\n          iVar33 = 2;\n        }\n        if ((puVar19 == puVar41) || (iVar30 <= iVar33)) goto LAB_00041acc;\n        puVar20 = puVar41 + iVar33;\n        puVar19 = puVar19 + iVar33;\n        do {\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n          puVar19 = puVar19 + 1;\n        } while (puVar20 != puVar41 + iVar30);\n        mVar21 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar41) && (puVar20 = puVar41 + 1, 1 < iVar30)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n        } while (puVar41 + iVar30 != puVar20);\n      }\nLAB_00041acc:\n      mVar21 = 0;\n    }\n    pmVar17 = op;\n    uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl);\n    uVar26 = op[pl];\n    op[pl] = uVar26 - uVar6;\n    if ((uVar6 <= uVar26) || (mVar21 = mVar21 - 1, mVar21 != 0xffffffff)) goto LAB_000418b4;\n    mVar21 = *op;\n    *op = mVar21 + 1;\n    if (mVar21 + 1 != 0) {\n      mVar21 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if (pl < 2) {\nLAB_00041438:\n      mVar21 = 1;\n      goto LAB_000418b4;\n    }\n    mVar21 = op[1];\n    op[1] = mVar21 + 1;\n    if (mVar21 + 1 == 0) {\n      iVar30 = 2;\n      pmVar28 = op + 2;\n      do {\n        bVar1 = pl == iVar30;\n        iVar30 = iVar30 + 1;\n        pmVar17 = (mp_ptr)pl;\n        if (bVar1) goto LAB_00041438;\n        mVar21 = *pmVar28;\n        *pmVar28 = mVar21 + 1;\n        pmVar28 = pmVar28 + 1;\n      } while (mVar21 + 1 == 0);\n    }\n  }\n  mVar21 = 0;\nLAB_000418b4:\n  if (local_2c != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)pmVar17 & 0x1f)) + 1 << ((uint)pmVar17 & 0x1f);\n  }\n  return mVar21;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "uint uVar2;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar3;" type_identifier (pointer_declarator "*pmVar3" * identifier) ;) (declaration "undefined *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "undefined *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "undefined4 uVar11;" type_identifier identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "code *pcVar16;" type_identifier (pointer_declarator "*pcVar16" * identifier) ;) (declaration "mp_ptr pmVar17;" type_identifier identifier ;) (declaration "mp_ptr pmVar18;" type_identifier identifier ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uint *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "mp_limb_t mVar21;" type_identifier identifier ;) (declaration "mp_ptr pmVar22;" type_identifier identifier ;) (declaration "mp_limb_t *pmVar23;" type_identifier (pointer_declarator "*pmVar23" * identifier) ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "int **ppiVar25;" primitive_type (pointer_declarator "**ppiVar25" * (pointer_declarator "*ppiVar25" * identifier)) ;) (declaration "uint uVar26;" type_identifier identifier ;) (declaration "mp_limb_t mVar27;" type_identifier identifier ;) (declaration "mp_ptr pmVar28;" type_identifier identifier ;) (declaration "int **ppiVar29;" primitive_type (pointer_declarator "**ppiVar29" * (pointer_declarator "*ppiVar29" * identifier)) ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "int *piVar31;" primitive_type (pointer_declarator "*piVar31" * identifier) ;) (declaration "uint *puVar32;" type_identifier (pointer_declarator "*puVar32" * identifier) ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "mp_ptr pmVar34;" type_identifier identifier ;) (declaration "mp_ptr *ppmVar35;" type_identifier (pointer_declarator "*ppmVar35" * identifier) ;) (declaration "mp_limb_t __gmp_c;" type_identifier identifier ;) (declaration "int **ppiVar36;" primitive_type (pointer_declarator "**ppiVar36" * (pointer_declarator "*ppiVar36" * identifier)) ;) (declaration "mp_ptr pmVar37;" type_identifier identifier ;) (declaration "mp_ptr pmVar38;" type_identifier identifier ;) (declaration "mp_ptr tp;" type_identifier identifier ;) (declaration "int iVar39;" primitive_type identifier ;) (declaration "mp_ptr *ppmVar40;" type_identifier (pointer_declarator "*ppmVar40" * identifier) ;) (declaration "uint *puVar41;" type_identifier (pointer_declarator "*puVar41" * identifier) ;) (declaration "int iVar42;" primitive_type identifier ;) (declaration "int iVar43;" primitive_type identifier ;) (declaration "mp_ptr *local_74;" type_identifier (pointer_declarator "*local_74" * identifier) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "tmp_reentrant_t *__tmp_marker;" type_identifier (pointer_declarator "*__tmp_marker" * identifier) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar5 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar5 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "iVar33 = 1 << (k & 0x1fU);" (assignment_expression "iVar33 = 1 << (k & 0x1fU)" identifier = (binary_expression "1 << (k & 0x1fU)" number_literal << (parenthesized_expression "(k & 0x1fU)" ( (binary_expression "k & 0x1fU" identifier & number_literal) )))) ;) (expression_statement "ppiVar36 = (int **)(Mp + k * 4);" (assignment_expression "ppiVar36 = (int **)(Mp + k * 4)" identifier = (cast_expression "(int **)(Mp + k * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(Mp + k * 4)" ( (binary_expression "Mp + k * 4" identifier + (binary_expression "k * 4" identifier * number_literal)) )))) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar30 = l << 1;" (assignment_expression "iVar30 = l << 1" identifier = (binary_expression "l << 1" identifier << number_literal)) ;) (expression_statement "mpn_fft_fft(Ap,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l);" (call_expression "mpn_fft_fft(Ap,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l)" identifier (argument_list "(Ap,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l)" ( identifier , identifier , identifier , identifier , (cast_expression "(mp_size_t)B" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) , number_literal , (cast_expression "(mp_ptr)fft_l" ( (type_descriptor "mp_ptr" type_identifier) ) identifier) ))) ;) (if_statement "if (T == (mp_ptr)0x0) {\n    mpn_fft_fft(Bp,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l);\n    if (Ap == Bp) {\n      T = (mp_ptr)&DAT_00000001;\n      goto LAB_00040bb8;\n    }\n    iVar9 = 0x270;\n    local_74 = Bp;\n    if (0x26f < (int)B) goto LAB_00040bc8;\nLAB_0004149c:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,(int)B * 8);\n    puVar41 = puVar19 + (int)B;\n    if (0 < iVar33) {\n      iVar9 = 0;\n      pmVar28 = *Ap;\n      pmVar17 = *local_74;\n      if (Ap == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      pmVar22 = pmVar28 + (int)B;\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,pmVar17,pmVar28,B);\n      mVar21 = *pmVar22;\n      pmVar34 = pmVar17 + (int)B;\n      if (mVar21 != 0) goto LAB_0004160c;\n      do {\n        pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*pmVar34 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar15)(pmVar28,puVar19,puVar41,B);\n        if ((iVar7 == 0) || (mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0)) {\nLAB_0004199c:\n          mVar21 = 0;\n        }\n        else {\n          mVar21 = 1;\n          if (1 < (int)B) {\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *pmVar22 = mVar21;\n        iVar9 = iVar9 + 1;\n        if (iVar33 == iVar9) goto LAB_00040f88;\n        pmVar28 = Ap[iVar9];\n        pmVar17 = local_74[iVar9];\n        if (Ap != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        pmVar22 = pmVar28 + (int)B;\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,pmVar28,B);\n        mVar21 = *pmVar22;\n        pmVar34 = pmVar17 + (int)B;\n      } while (mVar21 == 0);\nLAB_0004160c:\n      mVar21 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar17,B);\n      if (*pmVar34 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B);\n        mVar21 = iVar7 + mVar21 + *pmVar22;\n      }\n      pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))\n          && (1 < (int)B << 1)) && (uVar6 = puVar19[1], puVar19[1] = uVar6 + 1, uVar6 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + (int)B * 2) break;\n          uVar6 = *puVar20;\n          *puVar20 = uVar6 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar6 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar9 = 0x230;\n    local_74 = Ap;\n    if ((int)B < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(B,T);\n    iVar7 = 1 << (uVar6 & 0x1f);\n    if ((iVar7 - 1U & (uint)B) != 0) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1c1,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490);\n      return mVar21;\n    }\n    iVar24 = iVar7;\n    if (iVar7 < 0x20) {\n      iVar24 = 0x20;\n    }\n    iVar42 = (int)B >> (uVar6 & 0x1f);\n    if (iVar24 == 0) {\n      trap(7);\n    }\n    iVar24 = ((int)((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24) / iVar24) * iVar24;\n    iVar43 = iVar24;\n    if (iVar24 < 0) {\n      iVar43 = iVar24 + 0x1f;\n    }\n    uVar26 = iVar43 >> 5;\n    if (iVar9 <= (int)uVar26) {\n      while( true ) {\n        uVar8 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T);\n        iVar9 = 1 << (uVar8 & 0x1f);\n        if ((iVar9 - 1U & uVar26) == 0) break;\n        uVar26 = -iVar9 & (uVar26 + iVar9) - 1;\n        iVar24 = uVar26 << 5;\n      }\n    }\n    if ((int)B <= (int)uVar26) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1d7,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c);\n      return mVar21;\n    }\n    iVar9 = 4 << (uVar6 & 0x1f);\n    uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);\n    iVar43 = uVar26 + 1;\n    uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);\n    iVar24 = iVar24 >> (uVar6 & 0x1f);\n    iVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                      (&__tmp_marker,(iVar43 * 2 << (uVar6 & 0x1f)) << 2);\n    uVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar43 * 8);\n    iVar43 = iVar9 + (iVar43 << (uVar6 & 0x1f)) * 4;\n    ppiVar36 = (int **)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                                 (&__tmp_marker,(uVar6 + 1) * 4);\n    piVar13 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                               (&__tmp_marker,8 << (uVar6 & 0x1f));\n    if (-1 < (int)uVar6) {\n      uVar8 = 0;\n      ppiVar25 = ppiVar36;\n      do {\n        uVar2 = uVar8 & 0x1f;\n        *ppiVar25 = piVar13;\n        uVar8 = uVar8 + 1;\n        piVar13 = (int *)((int)piVar13 + (4 << uVar2));\n        ppiVar25 = ppiVar25 + 1;\n      } while (uVar8 != uVar6 + 1);\n    }\n    mpn_fft_initl(ppiVar36,uVar6);\n    if (0 < iVar33) {\n      iVar14 = (iVar42 << (uVar6 & 0x1f)) + 1;\n      pcVar15 = (code *)(PTR_LAB_00097078 + 0xad4);\n      pcVar16 = (code *)(PTR_LAB_00097078 + -0x4ac);\n      iVar39 = 0;\n      do {\n        ppmVar35 = Ap + iVar39;\n        pmVar34 = *ppmVar35;\n        pmVar28 = pmVar34 + (int)B;\n        pmVar17 = pmVar34;\n        if (*pmVar28 != 0) {\n          do {\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n          pmVar17 = pmVar34;\n          pmVar22 = B;\n          if (*pmVar28 == 0) {\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }\n          else {\n            *pmVar28 = 0;\n          }\n        }\n        if (Ap == local_74) {\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n        }\n        else {\n          pmVar28 = local_74[iVar39];\n          pmVar22 = pmVar28 + (int)B;\n          pmVar17 = pmVar28;\n          if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);\n        }\n        iVar39 = iVar39 + 1;\n        mVar21 = (*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T);\n        (*ppmVar35)[(int)B] = mVar21;\n      } while (iVar33 != iVar39);\n    }\n  }" if (parenthesized_expression "(T == (mp_ptr)0x0)" ( (binary_expression "T == (mp_ptr)0x0" identifier == (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    mpn_fft_fft(Bp,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l);\n    if (Ap == Bp) {\n      T = (mp_ptr)&DAT_00000001;\n      goto LAB_00040bb8;\n    }\n    iVar9 = 0x270;\n    local_74 = Bp;\n    if (0x26f < (int)B) goto LAB_00040bc8;\nLAB_0004149c:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,(int)B * 8);\n    puVar41 = puVar19 + (int)B;\n    if (0 < iVar33) {\n      iVar9 = 0;\n      pmVar28 = *Ap;\n      pmVar17 = *local_74;\n      if (Ap == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      pmVar22 = pmVar28 + (int)B;\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,pmVar17,pmVar28,B);\n      mVar21 = *pmVar22;\n      pmVar34 = pmVar17 + (int)B;\n      if (mVar21 != 0) goto LAB_0004160c;\n      do {\n        pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*pmVar34 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar15)(pmVar28,puVar19,puVar41,B);\n        if ((iVar7 == 0) || (mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0)) {\nLAB_0004199c:\n          mVar21 = 0;\n        }\n        else {\n          mVar21 = 1;\n          if (1 < (int)B) {\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *pmVar22 = mVar21;\n        iVar9 = iVar9 + 1;\n        if (iVar33 == iVar9) goto LAB_00040f88;\n        pmVar28 = Ap[iVar9];\n        pmVar17 = local_74[iVar9];\n        if (Ap != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        pmVar22 = pmVar28 + (int)B;\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,pmVar28,B);\n        mVar21 = *pmVar22;\n        pmVar34 = pmVar17 + (int)B;\n      } while (mVar21 == 0);\nLAB_0004160c:\n      mVar21 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar17,B);\n      if (*pmVar34 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B);\n        mVar21 = iVar7 + mVar21 + *pmVar22;\n      }\n      pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))\n          && (1 < (int)B << 1)) && (uVar6 = puVar19[1], puVar19[1] = uVar6 + 1, uVar6 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + (int)B * 2) break;\n          uVar6 = *puVar20;\n          *puVar20 = uVar6 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar6 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\n  }" { (expression_statement "mpn_fft_fft(Bp,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l);" (call_expression "mpn_fft_fft(Bp,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l)" identifier (argument_list "(Bp,iVar33,ppiVar36,iVar30,(mp_size_t)B,1,(mp_ptr)fft_l)" ( identifier , identifier , identifier , identifier , (cast_expression "(mp_size_t)B" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) , number_literal , (cast_expression "(mp_ptr)fft_l" ( (type_descriptor "mp_ptr" type_identifier) ) identifier) ))) ;) (if_statement "if (Ap == Bp) {\n      T = (mp_ptr)&DAT_00000001;\n      goto LAB_00040bb8;\n    }" if (parenthesized_expression "(Ap == Bp)" ( (binary_expression "Ap == Bp" identifier == identifier) )) (compound_statement "{\n      T = (mp_ptr)&DAT_00000001;\n      goto LAB_00040bb8;\n    }" { (expression_statement "T = (mp_ptr)&DAT_00000001;" (assignment_expression "T = (mp_ptr)&DAT_00000001" identifier = (binary_expression "(mp_ptr)&DAT_00000001" (parenthesized_expression "(mp_ptr)" ( identifier )) & identifier)) ;) (goto_statement "goto LAB_00040bb8;" goto statement_identifier ;) })) (expression_statement "iVar9 = 0x270;" (assignment_expression "iVar9 = 0x270" identifier = number_literal) ;) (expression_statement "local_74 = Bp;" (assignment_expression "local_74 = Bp" identifier = identifier) ;) (if_statement "if (0x26f < (int)B) goto LAB_00040bc8;" if (parenthesized_expression "(0x26f < (int)B)" ( (binary_expression "0x26f < (int)B" number_literal < (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00040bc8;" goto statement_identifier ;)) (labeled_statement "LAB_0004149c:\n    __tmp_marker = (tmp_reentrant_t *)0x0;" statement_identifier : (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,(int)B * 8);" (assignment_expression "puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,(int)B * 8)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,(int)B * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,(int)B * 8)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker,(int)B * 8)" ( (pointer_expression "&__tmp_marker" & identifier) , (binary_expression "(int)B * 8" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ))))) ;) (expression_statement "puVar41 = puVar19 + (int)B;" (assignment_expression "puVar41 = puVar19 + (int)B" identifier = (binary_expression "puVar19 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (0 < iVar33) {\n      iVar9 = 0;\n      pmVar28 = *Ap;\n      pmVar17 = *local_74;\n      if (Ap == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      pmVar22 = pmVar28 + (int)B;\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,pmVar17,pmVar28,B);\n      mVar21 = *pmVar22;\n      pmVar34 = pmVar17 + (int)B;\n      if (mVar21 != 0) goto LAB_0004160c;\n      do {\n        pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*pmVar34 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar15)(pmVar28,puVar19,puVar41,B);\n        if ((iVar7 == 0) || (mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0)) {\nLAB_0004199c:\n          mVar21 = 0;\n        }\n        else {\n          mVar21 = 1;\n          if (1 < (int)B) {\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *pmVar22 = mVar21;\n        iVar9 = iVar9 + 1;\n        if (iVar33 == iVar9) goto LAB_00040f88;\n        pmVar28 = Ap[iVar9];\n        pmVar17 = local_74[iVar9];\n        if (Ap != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        pmVar22 = pmVar28 + (int)B;\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,pmVar28,B);\n        mVar21 = *pmVar22;\n        pmVar34 = pmVar17 + (int)B;\n      } while (mVar21 == 0);\nLAB_0004160c:\n      mVar21 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar17,B);\n      if (*pmVar34 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B);\n        mVar21 = iVar7 + mVar21 + *pmVar22;\n      }\n      pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))\n          && (1 < (int)B << 1)) && (uVar6 = puVar19[1], puVar19[1] = uVar6 + 1, uVar6 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + (int)B * 2) break;\n          uVar6 = *puVar20;\n          *puVar20 = uVar6 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar6 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }" if (parenthesized_expression "(0 < iVar33)" ( (binary_expression "0 < iVar33" number_literal < identifier) )) (compound_statement "{\n      iVar9 = 0;\n      pmVar28 = *Ap;\n      pmVar17 = *local_74;\n      if (Ap == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      pmVar22 = pmVar28 + (int)B;\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,pmVar17,pmVar28,B);\n      mVar21 = *pmVar22;\n      pmVar34 = pmVar17 + (int)B;\n      if (mVar21 != 0) goto LAB_0004160c;\n      do {\n        pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*pmVar34 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar15)(pmVar28,puVar19,puVar41,B);\n        if ((iVar7 == 0) || (mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0)) {\nLAB_0004199c:\n          mVar21 = 0;\n        }\n        else {\n          mVar21 = 1;\n          if (1 < (int)B) {\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *pmVar22 = mVar21;\n        iVar9 = iVar9 + 1;\n        if (iVar33 == iVar9) goto LAB_00040f88;\n        pmVar28 = Ap[iVar9];\n        pmVar17 = local_74[iVar9];\n        if (Ap != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        pmVar22 = pmVar28 + (int)B;\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,pmVar28,B);\n        mVar21 = *pmVar22;\n        pmVar34 = pmVar17 + (int)B;\n      } while (mVar21 == 0);\nLAB_0004160c:\n      mVar21 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar17,B);\n      if (*pmVar34 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B);\n        mVar21 = iVar7 + mVar21 + *pmVar22;\n      }\n      pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))\n          && (1 < (int)B << 1)) && (uVar6 = puVar19[1], puVar19[1] = uVar6 + 1, uVar6 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + (int)B * 2) break;\n          uVar6 = *puVar20;\n          *puVar20 = uVar6 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar6 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (expression_statement "pmVar28 = *Ap;" (assignment_expression "pmVar28 = *Ap" identifier = (pointer_expression "*Ap" * identifier)) ;) (expression_statement "pmVar17 = *local_74;" (assignment_expression "pmVar17 = *local_74" identifier = (pointer_expression "*local_74" * identifier)) ;) (if_statement "if (Ap == local_74) goto LAB_000415dc;" if (parenthesized_expression "(Ap == local_74)" ( (binary_expression "Ap == local_74" identifier == identifier) )) (goto_statement "goto LAB_000415dc;" goto statement_identifier ;)) (labeled_statement "LAB_000414fc:\n      pmVar22 = pmVar28 + (int)B;" statement_identifier : (expression_statement "pmVar22 = pmVar28 + (int)B;" (assignment_expression "pmVar22 = pmVar28 + (int)B" identifier = (binary_expression "pmVar28 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (expression_statement "(*(code *)PTR___gmpn_mul_n_00097364)(puVar19,pmVar17,pmVar28,B);" (call_expression "(*(code *)PTR___gmpn_mul_n_00097364)(puVar19,pmVar17,pmVar28,B)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_n_00097364)" ( (pointer_expression "*(code *)PTR___gmpn_mul_n_00097364" * (cast_expression "(code *)PTR___gmpn_mul_n_00097364" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar19,pmVar17,pmVar28,B)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "mVar21 = *pmVar22;" (assignment_expression "mVar21 = *pmVar22" identifier = (pointer_expression "*pmVar22" * identifier)) ;) (expression_statement "pmVar34 = pmVar17 + (int)B;" (assignment_expression "pmVar34 = pmVar17 + (int)B" identifier = (binary_expression "pmVar17 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (mVar21 != 0) goto LAB_0004160c;" if (parenthesized_expression "(mVar21 != 0)" ( (binary_expression "mVar21 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004160c;" goto statement_identifier ;)) (do_statement "do {\n        pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*pmVar34 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar15)(pmVar28,puVar19,puVar41,B);\n        if ((iVar7 == 0) || (mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0)) {\nLAB_0004199c:\n          mVar21 = 0;\n        }\n        else {\n          mVar21 = 1;\n          if (1 < (int)B) {\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *pmVar22 = mVar21;\n        iVar9 = iVar9 + 1;\n        if (iVar33 == iVar9) goto LAB_00040f88;\n        pmVar28 = Ap[iVar9];\n        pmVar17 = local_74[iVar9];\n        if (Ap != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        pmVar22 = pmVar28 + (int)B;\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,pmVar28,B);\n        mVar21 = *pmVar22;\n        pmVar34 = pmVar17 + (int)B;\n      } while (mVar21 == 0);" do (compound_statement "{\n        pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*pmVar34 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar15)(pmVar28,puVar19,puVar41,B);\n        if ((iVar7 == 0) || (mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0)) {\nLAB_0004199c:\n          mVar21 = 0;\n        }\n        else {\n          mVar21 = 1;\n          if (1 < (int)B) {\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *pmVar22 = mVar21;\n        iVar9 = iVar9 + 1;\n        if (iVar33 == iVar9) goto LAB_00040f88;\n        pmVar28 = Ap[iVar9];\n        pmVar17 = local_74[iVar9];\n        if (Ap != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        pmVar22 = pmVar28 + (int)B;\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,pmVar28,B);\n        mVar21 = *pmVar22;\n        pmVar34 = pmVar17 + (int)B;\n      }" { (expression_statement "pcVar15 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar15 = (code *)PTR___gmpn_sub_n_00097514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (*pmVar34 != 0) goto LAB_00041640;" if (parenthesized_expression "(*pmVar34 != 0)" ( (binary_expression "*pmVar34 != 0" (pointer_expression "*pmVar34" * identifier) != number_literal) )) (goto_statement "goto LAB_00041640;" goto statement_identifier ;)) (labeled_statement "LAB_00041544:\n        iVar7 = (*pcVar15)(pmVar28,puVar19,puVar41,B);" statement_identifier : (expression_statement "iVar7 = (*pcVar15)(pmVar28,puVar19,puVar41,B);" (assignment_expression "iVar7 = (*pcVar15)(pmVar28,puVar19,puVar41,B)" identifier = (call_expression "(*pcVar15)(pmVar28,puVar19,puVar41,B)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(pmVar28,puVar19,puVar41,B)" ( identifier , identifier , identifier , identifier )))) ;)) (if_statement "if ((iVar7 == 0) || (mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0)) {\nLAB_0004199c:\n          mVar21 = 0;\n        }\n        else {\n          mVar21 = 1;\n          if (1 < (int)B) {\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }" if (parenthesized_expression "((iVar7 == 0) || (mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0))" ( (binary_expression "(iVar7 == 0) || (mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0)" (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) || (parenthesized_expression "(mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0)" ( (comma_expression "mVar21 = *pmVar28, *pmVar28 = mVar21 + 1, mVar21 + 1 != 0" (assignment_expression "mVar21 = *pmVar28" identifier = (pointer_expression "*pmVar28" * identifier)) , (comma_expression "*pmVar28 = mVar21 + 1, mVar21 + 1 != 0" (assignment_expression "*pmVar28 = mVar21 + 1" (pointer_expression "*pmVar28" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) , (binary_expression "mVar21 + 1 != 0" (binary_expression "mVar21 + 1" identifier + number_literal) != number_literal))) ))) )) (compound_statement "{\nLAB_0004199c:\n          mVar21 = 0;\n        }" { (labeled_statement "LAB_0004199c:\n          mVar21 = 0;" statement_identifier : (expression_statement "mVar21 = 0;" (assignment_expression "mVar21 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n          mVar21 = 1;\n          if (1 < (int)B) {\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }" else (compound_statement "{\n          mVar21 = 1;\n          if (1 < (int)B) {\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }" { (expression_statement "mVar21 = 1;" (assignment_expression "mVar21 = 1" identifier = number_literal) ;) (if_statement "if (1 < (int)B) {\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }" if (parenthesized_expression "(1 < (int)B)" ( (binary_expression "1 < (int)B" number_literal < (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            mVar21 = pmVar28[1];\n            pmVar28[1] = mVar21 + 1;\n            if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }" { (expression_statement "mVar21 = pmVar28[1];" (assignment_expression "mVar21 = pmVar28[1]" identifier = (subscript_expression "pmVar28[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar28[1] = mVar21 + 1;" (assignment_expression "pmVar28[1] = mVar21 + 1" (subscript_expression "pmVar28[1]" identifier [ number_literal ]) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (if_statement "if (mVar21 + 1 == 0) {\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }" if (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              pmVar17 = pmVar28 + 2;\n              do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);\n            }" { (expression_statement "pmVar17 = pmVar28 + 2;" (assignment_expression "pmVar17 = pmVar28 + 2" identifier = (binary_expression "pmVar28 + 2" identifier + number_literal)) ;) (do_statement "do {\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 + 1 == 0);" do (compound_statement "{\n                if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 + 1;\n                pmVar17 = pmVar17 + 1;\n              }" { (if_statement "if (pmVar17 == pmVar22) {\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }" if (parenthesized_expression "(pmVar17 == pmVar22)" ( (binary_expression "pmVar17 == pmVar22" identifier == identifier) )) (compound_statement "{\n                  mVar21 = 1;\n                  goto LAB_000415b0;\n                }" { (expression_statement "mVar21 = 1;" (assignment_expression "mVar21 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000415b0;" goto statement_identifier ;) })) (expression_statement "mVar21 = *pmVar17;" (assignment_expression "mVar21 = *pmVar17" identifier = (pointer_expression "*pmVar17" * identifier)) ;) (expression_statement "*pmVar17 = mVar21 + 1;" (assignment_expression "*pmVar17 = mVar21 + 1" (pointer_expression "*pmVar17" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (expression_statement "pmVar17 = pmVar17 + 1;" (assignment_expression "pmVar17 = pmVar17 + 1" identifier = (binary_expression "pmVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) ;) })) (goto_statement "goto LAB_0004199c;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000415b0:\n        *pmVar22 = mVar21;" statement_identifier : (expression_statement "*pmVar22 = mVar21;" (assignment_expression "*pmVar22 = mVar21" (pointer_expression "*pmVar22" * identifier) = identifier) ;)) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (if_statement "if (iVar33 == iVar9) goto LAB_00040f88;" if (parenthesized_expression "(iVar33 == iVar9)" ( (binary_expression "iVar33 == iVar9" identifier == identifier) )) (goto_statement "goto LAB_00040f88;" goto statement_identifier ;)) (expression_statement "pmVar28 = Ap[iVar9];" (assignment_expression "pmVar28 = Ap[iVar9]" identifier = (subscript_expression "Ap[iVar9]" identifier [ identifier ])) ;) (expression_statement "pmVar17 = local_74[iVar9];" (assignment_expression "pmVar17 = local_74[iVar9]" identifier = (subscript_expression "local_74[iVar9]" identifier [ identifier ])) ;) (if_statement "if (Ap != local_74) goto LAB_000414fc;" if (parenthesized_expression "(Ap != local_74)" ( (binary_expression "Ap != local_74" identifier != identifier) )) (goto_statement "goto LAB_000414fc;" goto statement_identifier ;)) (labeled_statement "LAB_000415dc:\n        pmVar22 = pmVar28 + (int)B;" statement_identifier : (expression_statement "pmVar22 = pmVar28 + (int)B;" (assignment_expression "pmVar22 = pmVar28 + (int)B" identifier = (binary_expression "pmVar28 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;)) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(puVar19,pmVar28,B);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(puVar19,pmVar28,B)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" * (cast_expression "(code *)PTR___gmpn_sqr_00097394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar19,pmVar28,B)" ( identifier , identifier , identifier ))) ;) (expression_statement "mVar21 = *pmVar22;" (assignment_expression "mVar21 = *pmVar22" identifier = (pointer_expression "*pmVar22" * identifier)) ;) (expression_statement "pmVar34 = pmVar17 + (int)B;" (assignment_expression "pmVar34 = pmVar17 + (int)B" identifier = (binary_expression "pmVar17 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }) while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) ;) (labeled_statement "LAB_0004160c:\n      mVar21 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar17,B);" statement_identifier : (expression_statement "mVar21 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar17,B);" (assignment_expression "mVar21 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar17,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar17,B)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar41,puVar41,pmVar17,B)" ( identifier , identifier , identifier , identifier )))) ;)) (if_statement "if (*pmVar34 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B);\n        mVar21 = iVar7 + mVar21 + *pmVar22;\n      }" if (parenthesized_expression "(*pmVar34 != 0)" ( (binary_expression "*pmVar34 != 0" (pointer_expression "*pmVar34" * identifier) != number_literal) )) (compound_statement "{\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B);\n        mVar21 = iVar7 + mVar21 + *pmVar22;\n      }" { (labeled_statement "LAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B);" statement_identifier : (expression_statement "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B);" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(puVar41,puVar41,pmVar28,B)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar41,puVar41,pmVar28,B)" ( identifier , identifier , identifier , identifier )))) ;)) (expression_statement "mVar21 = iVar7 + mVar21 + *pmVar22;" (assignment_expression "mVar21 = iVar7 + mVar21 + *pmVar22" identifier = (binary_expression "iVar7 + mVar21 + *pmVar22" (binary_expression "iVar7 + mVar21" identifier + identifier) + (pointer_expression "*pmVar22" * identifier))) ;) })) (expression_statement "pcVar15 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar15 = (code *)PTR___gmpn_sub_n_00097514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))\n          && (1 < (int)B << 1)) && (uVar6 = puVar19[1], puVar19[1] = uVar6 + 1, uVar6 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + (int)B * 2) break;\n          uVar6 = *puVar20;\n          *puVar20 = uVar6 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar6 + 1 == 0);\n      }" if (parenthesized_expression "((((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))\n          && (1 < (int)B << 1)) && (uVar6 = puVar19[1], puVar19[1] = uVar6 + 1, uVar6 + 1 == 0))" ( (binary_expression "(((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))\n          && (1 < (int)B << 1)) && (uVar6 = puVar19[1], puVar19[1] = uVar6 + 1, uVar6 + 1 == 0)" (parenthesized_expression "(((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))\n          && (1 < (int)B << 1))" ( (binary_expression "((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))\n          && (1 < (int)B << 1)" (parenthesized_expression "((mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21))" ( (binary_expression "(mVar21 != 0) && (uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21)" (parenthesized_expression "(mVar21 != 0)" ( (binary_expression "mVar21 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21)" ( (comma_expression "uVar6 = *puVar19, *puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21" (assignment_expression "uVar6 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) , (comma_expression "*puVar19 = mVar21 + uVar6, mVar21 + uVar6 < mVar21" (assignment_expression "*puVar19 = mVar21 + uVar6" (pointer_expression "*puVar19" * identifier) = (binary_expression "mVar21 + uVar6" identifier + identifier)) , (binary_expression "mVar21 + uVar6 < mVar21" (binary_expression "mVar21 + uVar6" identifier + identifier) < identifier))) ))) )) && (parenthesized_expression "(1 < (int)B << 1)" ( (binary_expression "1 < (int)B << 1" number_literal < (binary_expression "(int)B << 1" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal)) ))) )) && (parenthesized_expression "(uVar6 = puVar19[1], puVar19[1] = uVar6 + 1, uVar6 + 1 == 0)" ( (comma_expression "uVar6 = puVar19[1], puVar19[1] = uVar6 + 1, uVar6 + 1 == 0" (assignment_expression "uVar6 = puVar19[1]" identifier = (subscript_expression "puVar19[1]" identifier [ number_literal ])) , (comma_expression "puVar19[1] = uVar6 + 1, uVar6 + 1 == 0" (assignment_expression "puVar19[1] = uVar6 + 1" (subscript_expression "puVar19[1]" identifier [ number_literal ]) = (binary_expression "uVar6 + 1" identifier + number_literal)) , (binary_expression "uVar6 + 1 == 0" (binary_expression "uVar6 + 1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + (int)B * 2) break;\n          uVar6 = *puVar20;\n          *puVar20 = uVar6 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar6 + 1 == 0);\n      }" { (expression_statement "puVar20 = puVar19 + 2;" (assignment_expression "puVar20 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (do_statement "do {\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + (int)B * 2) break;\n          uVar6 = *puVar20;\n          *puVar20 = uVar6 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar6 + 1 == 0);" do (compound_statement "{\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + (int)B * 2) break;\n          uVar6 = *puVar20;\n          *puVar20 = uVar6 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar15 = (code *)PTR___gmpn_sub_n_00097514;\n        }" { (expression_statement "pcVar15 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar15 = (code *)PTR___gmpn_sub_n_00097514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar20 == puVar19 + (int)B * 2) break;" if (parenthesized_expression "(puVar20 == puVar19 + (int)B * 2)" ( (binary_expression "puVar20 == puVar19 + (int)B * 2" identifier == (binary_expression "puVar19 + (int)B * 2" identifier + (binary_expression "(int)B * 2" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) )) (break_statement "break;" break ;)) (expression_statement "uVar6 = *puVar20;" (assignment_expression "uVar6 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "*puVar20 = uVar6 + 1;" (assignment_expression "*puVar20 = uVar6 + 1" (pointer_expression "*puVar20" * identifier) = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (expression_statement "pcVar15 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar15 = (code *)PTR___gmpn_sub_n_00097514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(uVar6 + 1 == 0)" ( (binary_expression "uVar6 + 1 == 0" (binary_expression "uVar6 + 1" identifier + number_literal) == number_literal) )) ;) })) (goto_statement "goto LAB_00041544;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00040bb8:\n    iVar9 = 0x230;\n    local_74 = Ap;\n    if ((int)B < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(B,T);\n    iVar7 = 1 << (uVar6 & 0x1f);\n    if ((iVar7 - 1U & (uint)B) != 0) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1c1,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490);\n      return mVar21;\n    }\n    iVar24 = iVar7;\n    if (iVar7 < 0x20) {\n      iVar24 = 0x20;\n    }\n    iVar42 = (int)B >> (uVar6 & 0x1f);\n    if (iVar24 == 0) {\n      trap(7);\n    }\n    iVar24 = ((int)((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24) / iVar24) * iVar24;\n    iVar43 = iVar24;\n    if (iVar24 < 0) {\n      iVar43 = iVar24 + 0x1f;\n    }\n    uVar26 = iVar43 >> 5;\n    if (iVar9 <= (int)uVar26) {\n      while( true ) {\n        uVar8 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T);\n        iVar9 = 1 << (uVar8 & 0x1f);\n        if ((iVar9 - 1U & uVar26) == 0) break;\n        uVar26 = -iVar9 & (uVar26 + iVar9) - 1;\n        iVar24 = uVar26 << 5;\n      }\n    }\n    if ((int)B <= (int)uVar26) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1d7,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c);\n      return mVar21;\n    }\n    iVar9 = 4 << (uVar6 & 0x1f);\n    uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);\n    iVar43 = uVar26 + 1;\n    uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);\n    iVar24 = iVar24 >> (uVar6 & 0x1f);\n    iVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                      (&__tmp_marker,(iVar43 * 2 << (uVar6 & 0x1f)) << 2);\n    uVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar43 * 8);\n    iVar43 = iVar9 + (iVar43 << (uVar6 & 0x1f)) * 4;\n    ppiVar36 = (int **)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                                 (&__tmp_marker,(uVar6 + 1) * 4);\n    piVar13 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                               (&__tmp_marker,8 << (uVar6 & 0x1f));\n    if (-1 < (int)uVar6) {\n      uVar8 = 0;\n      ppiVar25 = ppiVar36;\n      do {\n        uVar2 = uVar8 & 0x1f;\n        *ppiVar25 = piVar13;\n        uVar8 = uVar8 + 1;\n        piVar13 = (int *)((int)piVar13 + (4 << uVar2));\n        ppiVar25 = ppiVar25 + 1;\n      } while (uVar8 != uVar6 + 1);\n    }\n    mpn_fft_initl(ppiVar36,uVar6);\n    if (0 < iVar33) {\n      iVar14 = (iVar42 << (uVar6 & 0x1f)) + 1;\n      pcVar15 = (code *)(PTR_LAB_00097078 + 0xad4);\n      pcVar16 = (code *)(PTR_LAB_00097078 + -0x4ac);\n      iVar39 = 0;\n      do {\n        ppmVar35 = Ap + iVar39;\n        pmVar34 = *ppmVar35;\n        pmVar28 = pmVar34 + (int)B;\n        pmVar17 = pmVar34;\n        if (*pmVar28 != 0) {\n          do {\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n          pmVar17 = pmVar34;\n          pmVar22 = B;\n          if (*pmVar28 == 0) {\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }\n          else {\n            *pmVar28 = 0;\n          }\n        }\n        if (Ap == local_74) {\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n        }\n        else {\n          pmVar28 = local_74[iVar39];\n          pmVar22 = pmVar28 + (int)B;\n          pmVar17 = pmVar28;\n          if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);\n        }\n        iVar39 = iVar39 + 1;\n        mVar21 = (*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T);\n        (*ppmVar35)[(int)B] = mVar21;\n      } while (iVar33 != iVar39);\n    }\n  }" else (compound_statement "{\nLAB_00040bb8:\n    iVar9 = 0x230;\n    local_74 = Ap;\n    if ((int)B < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    __tmp_marker = (tmp_reentrant_t *)0x0;\n    uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(B,T);\n    iVar7 = 1 << (uVar6 & 0x1f);\n    if ((iVar7 - 1U & (uint)B) != 0) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1c1,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490);\n      return mVar21;\n    }\n    iVar24 = iVar7;\n    if (iVar7 < 0x20) {\n      iVar24 = 0x20;\n    }\n    iVar42 = (int)B >> (uVar6 & 0x1f);\n    if (iVar24 == 0) {\n      trap(7);\n    }\n    iVar24 = ((int)((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24) / iVar24) * iVar24;\n    iVar43 = iVar24;\n    if (iVar24 < 0) {\n      iVar43 = iVar24 + 0x1f;\n    }\n    uVar26 = iVar43 >> 5;\n    if (iVar9 <= (int)uVar26) {\n      while( true ) {\n        uVar8 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T);\n        iVar9 = 1 << (uVar8 & 0x1f);\n        if ((iVar9 - 1U & uVar26) == 0) break;\n        uVar26 = -iVar9 & (uVar26 + iVar9) - 1;\n        iVar24 = uVar26 << 5;\n      }\n    }\n    if ((int)B <= (int)uVar26) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1d7,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c);\n      return mVar21;\n    }\n    iVar9 = 4 << (uVar6 & 0x1f);\n    uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);\n    iVar43 = uVar26 + 1;\n    uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);\n    iVar24 = iVar24 >> (uVar6 & 0x1f);\n    iVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                      (&__tmp_marker,(iVar43 * 2 << (uVar6 & 0x1f)) << 2);\n    uVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar43 * 8);\n    iVar43 = iVar9 + (iVar43 << (uVar6 & 0x1f)) * 4;\n    ppiVar36 = (int **)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                                 (&__tmp_marker,(uVar6 + 1) * 4);\n    piVar13 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                               (&__tmp_marker,8 << (uVar6 & 0x1f));\n    if (-1 < (int)uVar6) {\n      uVar8 = 0;\n      ppiVar25 = ppiVar36;\n      do {\n        uVar2 = uVar8 & 0x1f;\n        *ppiVar25 = piVar13;\n        uVar8 = uVar8 + 1;\n        piVar13 = (int *)((int)piVar13 + (4 << uVar2));\n        ppiVar25 = ppiVar25 + 1;\n      } while (uVar8 != uVar6 + 1);\n    }\n    mpn_fft_initl(ppiVar36,uVar6);\n    if (0 < iVar33) {\n      iVar14 = (iVar42 << (uVar6 & 0x1f)) + 1;\n      pcVar15 = (code *)(PTR_LAB_00097078 + 0xad4);\n      pcVar16 = (code *)(PTR_LAB_00097078 + -0x4ac);\n      iVar39 = 0;\n      do {\n        ppmVar35 = Ap + iVar39;\n        pmVar34 = *ppmVar35;\n        pmVar28 = pmVar34 + (int)B;\n        pmVar17 = pmVar34;\n        if (*pmVar28 != 0) {\n          do {\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n          pmVar17 = pmVar34;\n          pmVar22 = B;\n          if (*pmVar28 == 0) {\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }\n          else {\n            *pmVar28 = 0;\n          }\n        }\n        if (Ap == local_74) {\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n        }\n        else {\n          pmVar28 = local_74[iVar39];\n          pmVar22 = pmVar28 + (int)B;\n          pmVar17 = pmVar28;\n          if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);\n        }\n        iVar39 = iVar39 + 1;\n        mVar21 = (*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T);\n        (*ppmVar35)[(int)B] = mVar21;\n      } while (iVar33 != iVar39);\n    }\n  }" { (labeled_statement "LAB_00040bb8:\n    iVar9 = 0x230;" statement_identifier : (expression_statement "iVar9 = 0x230;" (assignment_expression "iVar9 = 0x230" identifier = number_literal) ;)) (expression_statement "local_74 = Ap;" (assignment_expression "local_74 = Ap" identifier = identifier) ;) (if_statement "if ((int)B < 0x230) goto LAB_0004149c;" if (parenthesized_expression "((int)B < 0x230)" ( (binary_expression "(int)B < 0x230" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0004149c;" goto statement_identifier ;)) (labeled_statement "LAB_00040bc8:\n    __tmp_marker = (tmp_reentrant_t *)0x0;" statement_identifier : (expression_statement "__tmp_marker = (tmp_reentrant_t *)0x0;" (assignment_expression "__tmp_marker = (tmp_reentrant_t *)0x0" identifier = (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(B,T);" (assignment_expression "uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(B,T)" identifier = (call_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)(B,T)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)" ( (pointer_expression "*(code *)PTR___gmpn_fft_best_k_00097320" * (cast_expression "(code *)PTR___gmpn_fft_best_k_00097320" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(B,T)" ( identifier , identifier )))) ;) (expression_statement "iVar7 = 1 << (uVar6 & 0x1f);" (assignment_expression "iVar7 = 1 << (uVar6 & 0x1f)" identifier = (binary_expression "1 << (uVar6 & 0x1f)" number_literal << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((iVar7 - 1U & (uint)B) != 0) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1c1,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490);\n      return mVar21;\n    }" if (parenthesized_expression "((iVar7 - 1U & (uint)B) != 0)" ( (binary_expression "(iVar7 - 1U & (uint)B) != 0" (parenthesized_expression "(iVar7 - 1U & (uint)B)" ( (binary_expression "iVar7 - 1U & (uint)B" (binary_expression "iVar7 - 1U" identifier - number_literal) & (cast_expression "(uint)B" ( (type_descriptor "uint" type_identifier) ) identifier)) )) != number_literal) )) (compound_statement "{\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1c1,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490);\n      return mVar21;\n    }" { (expression_statement "mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1c1,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490);" (assignment_expression "mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1c1,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490)" identifier = (call_expression "(*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1c1,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_00097420)" ( (pointer_expression "*(code *)PTR___gmp_assert_fail_00097420" * (cast_expression "(code *)PTR___gmp_assert_fail_00097420" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1c1,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490)" ( (binary_expression "PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c" identifier + number_literal) , number_literal , (binary_expression "PTR_gmp_primes_ptab_92__ppp_0009706c + -0x1490" identifier + number_literal) )))) ;) (return_statement "return mVar21;" return identifier ;) })) (expression_statement "iVar24 = iVar7;" (assignment_expression "iVar24 = iVar7" identifier = identifier) ;) (if_statement "if (iVar7 < 0x20) {\n      iVar24 = 0x20;\n    }" if (parenthesized_expression "(iVar7 < 0x20)" ( (binary_expression "iVar7 < 0x20" identifier < number_literal) )) (compound_statement "{\n      iVar24 = 0x20;\n    }" { (expression_statement "iVar24 = 0x20;" (assignment_expression "iVar24 = 0x20" identifier = number_literal) ;) })) (expression_statement "iVar42 = (int)B >> (uVar6 & 0x1f);" (assignment_expression "iVar42 = (int)B >> (uVar6 & 0x1f)" identifier = (binary_expression "(int)B >> (uVar6 & 0x1f)" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if (iVar24 == 0) {\n      trap(7);\n    }" if (parenthesized_expression "(iVar24 == 0)" ( (binary_expression "iVar24 == 0" identifier == number_literal) )) (compound_statement "{\n      trap(7);\n    }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar24 = ((int)((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24) / iVar24) * iVar24;" (assignment_expression "iVar24 = ((int)((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24) / iVar24) * iVar24" identifier = (binary_expression "((int)((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24) / iVar24) * iVar24" (parenthesized_expression "((int)((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24) / iVar24)" ( (binary_expression "(int)((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24) / iVar24" (cast_expression "(int)((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24)" ( (binary_expression "(((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2 + iVar24" (binary_expression "(((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6 + 2" (binary_expression "(((int)B << 5) >> (uVar6 & 0x1f)) * 2 + uVar6" (binary_expression "(((int)B << 5) >> (uVar6 & 0x1f)) * 2" (parenthesized_expression "(((int)B << 5) >> (uVar6 & 0x1f))" ( (binary_expression "((int)B << 5) >> (uVar6 & 0x1f)" (parenthesized_expression "((int)B << 5)" ( (binary_expression "(int)B << 5" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) << number_literal) )) >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))) )) * number_literal) + identifier) + number_literal) + identifier) ))) / identifier) )) * identifier)) ;) (expression_statement "iVar43 = iVar24;" (assignment_expression "iVar43 = iVar24" identifier = identifier) ;) (if_statement "if (iVar24 < 0) {\n      iVar43 = iVar24 + 0x1f;\n    }" if (parenthesized_expression "(iVar24 < 0)" ( (binary_expression "iVar24 < 0" identifier < number_literal) )) (compound_statement "{\n      iVar43 = iVar24 + 0x1f;\n    }" { (expression_statement "iVar43 = iVar24 + 0x1f;" (assignment_expression "iVar43 = iVar24 + 0x1f" identifier = (binary_expression "iVar24 + 0x1f" identifier + number_literal)) ;) })) (expression_statement "uVar26 = iVar43 >> 5;" (assignment_expression "uVar26 = iVar43 >> 5" identifier = (binary_expression "iVar43 >> 5" identifier >> number_literal)) ;) (if_statement "if (iVar9 <= (int)uVar26) {\n      while( true ) {\n        uVar8 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T);\n        iVar9 = 1 << (uVar8 & 0x1f);\n        if ((iVar9 - 1U & uVar26) == 0) break;\n        uVar26 = -iVar9 & (uVar26 + iVar9) - 1;\n        iVar24 = uVar26 << 5;\n      }\n    }" if (parenthesized_expression "(iVar9 <= (int)uVar26)" ( (binary_expression "iVar9 <= (int)uVar26" identifier <= (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      while( true ) {\n        uVar8 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T);\n        iVar9 = 1 << (uVar8 & 0x1f);\n        if ((iVar9 - 1U & uVar26) == 0) break;\n        uVar26 = -iVar9 & (uVar26 + iVar9) - 1;\n        iVar24 = uVar26 << 5;\n      }\n    }" { (while_statement "while( true ) {\n        uVar8 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T);\n        iVar9 = 1 << (uVar8 & 0x1f);\n        if ((iVar9 - 1U & uVar26) == 0) break;\n        uVar26 = -iVar9 & (uVar26 + iVar9) - 1;\n        iVar24 = uVar26 << 5;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        uVar8 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T);\n        iVar9 = 1 << (uVar8 & 0x1f);\n        if ((iVar9 - 1U & uVar26) == 0) break;\n        uVar26 = -iVar9 & (uVar26 + iVar9) - 1;\n        iVar24 = uVar26 << 5;\n      }" { (expression_statement "uVar8 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T);" (assignment_expression "uVar8 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T)" identifier = (call_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)(uVar26,T)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)" ( (pointer_expression "*(code *)PTR___gmpn_fft_best_k_00097320" * (cast_expression "(code *)PTR___gmpn_fft_best_k_00097320" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar26,T)" ( identifier , identifier )))) ;) (expression_statement "iVar9 = 1 << (uVar8 & 0x1f);" (assignment_expression "iVar9 = 1 << (uVar8 & 0x1f)" identifier = (binary_expression "1 << (uVar8 & 0x1f)" number_literal << (parenthesized_expression "(uVar8 & 0x1f)" ( (binary_expression "uVar8 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((iVar9 - 1U & uVar26) == 0) break;" if (parenthesized_expression "((iVar9 - 1U & uVar26) == 0)" ( (binary_expression "(iVar9 - 1U & uVar26) == 0" (parenthesized_expression "(iVar9 - 1U & uVar26)" ( (binary_expression "iVar9 - 1U & uVar26" (binary_expression "iVar9 - 1U" identifier - number_literal) & identifier) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar26 = -iVar9 & (uVar26 + iVar9) - 1;" (assignment_expression "uVar26 = -iVar9 & (uVar26 + iVar9) - 1" identifier = (binary_expression "-iVar9 & (uVar26 + iVar9) - 1" (unary_expression "-iVar9" - identifier) & (binary_expression "(uVar26 + iVar9) - 1" (parenthesized_expression "(uVar26 + iVar9)" ( (binary_expression "uVar26 + iVar9" identifier + identifier) )) - number_literal))) ;) (expression_statement "iVar24 = uVar26 << 5;" (assignment_expression "iVar24 = uVar26 << 5" identifier = (binary_expression "uVar26 << 5" identifier << number_literal)) ;) })) })) (if_statement "if ((int)B <= (int)uVar26) {\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1d7,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c);\n      return mVar21;\n    }" if (parenthesized_expression "((int)B <= (int)uVar26)" ( (binary_expression "(int)B <= (int)uVar26" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar26" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1d7,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c);\n      return mVar21;\n    }" { (expression_statement "mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1d7,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c);" (assignment_expression "mVar21 = (*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1d7,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c)" identifier = (call_expression "(*(code *)PTR___gmp_assert_fail_00097420)\n                         (PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1d7,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_00097420)" ( (pointer_expression "*(code *)PTR___gmp_assert_fail_00097420" * (cast_expression "(code *)PTR___gmp_assert_fail_00097420" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c,0x1d7,\n                          PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c)" ( (binary_expression "PTR_gmp_primes_ptab_92__ppp_0009706c + -0x149c" identifier + number_literal) , number_literal , (binary_expression "PTR_gmp_primes_ptab_92__ppp_0009706c + -0x147c" identifier + number_literal) )))) ;) (return_statement "return mVar21;" return identifier ;) })) (expression_statement "iVar9 = 4 << (uVar6 & 0x1f);" (assignment_expression "iVar9 = 4 << (uVar6 & 0x1f)" identifier = (binary_expression "4 << (uVar6 & 0x1f)" number_literal << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);" (assignment_expression "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker,iVar9)" ( (pointer_expression "&__tmp_marker" & identifier) , identifier )))) ;) (expression_statement "iVar43 = uVar26 + 1;" (assignment_expression "iVar43 = uVar26 + 1" identifier = (binary_expression "uVar26 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9);" (assignment_expression "uVar11 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar9)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker,iVar9)" ( (pointer_expression "&__tmp_marker" & identifier) , identifier )))) ;) (expression_statement "iVar24 = iVar24 >> (uVar6 & 0x1f);" (assignment_expression "iVar24 = iVar24 >> (uVar6 & 0x1f)" identifier = (binary_expression "iVar24 >> (uVar6 & 0x1f)" identifier >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "iVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                      (&__tmp_marker,(iVar43 * 2 << (uVar6 & 0x1f)) << 2);" (assignment_expression "iVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                      (&__tmp_marker,(iVar43 * 2 << (uVar6 & 0x1f)) << 2)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                      (&__tmp_marker,(iVar43 * 2 << (uVar6 & 0x1f)) << 2)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker,(iVar43 * 2 << (uVar6 & 0x1f)) << 2)" ( (pointer_expression "&__tmp_marker" & identifier) , (binary_expression "(iVar43 * 2 << (uVar6 & 0x1f)) << 2" (parenthesized_expression "(iVar43 * 2 << (uVar6 & 0x1f))" ( (binary_expression "iVar43 * 2 << (uVar6 & 0x1f)" (binary_expression "iVar43 * 2" identifier * number_literal) << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))) )) << number_literal) )))) ;) (expression_statement "uVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar43 * 8);" (assignment_expression "uVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar43 * 8)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&__tmp_marker,iVar43 * 8)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker,iVar43 * 8)" ( (pointer_expression "&__tmp_marker" & identifier) , (binary_expression "iVar43 * 8" identifier * number_literal) )))) ;) (expression_statement "iVar43 = iVar9 + (iVar43 << (uVar6 & 0x1f)) * 4;" (assignment_expression "iVar43 = iVar9 + (iVar43 << (uVar6 & 0x1f)) * 4" identifier = (binary_expression "iVar9 + (iVar43 << (uVar6 & 0x1f)) * 4" identifier + (binary_expression "(iVar43 << (uVar6 & 0x1f)) * 4" (parenthesized_expression "(iVar43 << (uVar6 & 0x1f))" ( (binary_expression "iVar43 << (uVar6 & 0x1f)" identifier << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))) )) * number_literal))) ;) (expression_statement "ppiVar36 = (int **)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                                 (&__tmp_marker,(uVar6 + 1) * 4);" (assignment_expression "ppiVar36 = (int **)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                                 (&__tmp_marker,(uVar6 + 1) * 4)" identifier = (cast_expression "(int **)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                                 (&__tmp_marker,(uVar6 + 1) * 4)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                                 (&__tmp_marker,(uVar6 + 1) * 4)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker,(uVar6 + 1) * 4)" ( (pointer_expression "&__tmp_marker" & identifier) , (binary_expression "(uVar6 + 1) * 4" (parenthesized_expression "(uVar6 + 1)" ( (binary_expression "uVar6 + 1" identifier + number_literal) )) * number_literal) ))))) ;) (expression_statement "piVar13 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                               (&__tmp_marker,8 << (uVar6 & 0x1f));" (assignment_expression "piVar13 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                               (&__tmp_marker,8 << (uVar6 & 0x1f))" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                               (&__tmp_marker,8 << (uVar6 & 0x1f))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                               (&__tmp_marker,8 << (uVar6 & 0x1f))" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&__tmp_marker,8 << (uVar6 & 0x1f))" ( (pointer_expression "&__tmp_marker" & identifier) , (binary_expression "8 << (uVar6 & 0x1f)" number_literal << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))) ))))) ;) (if_statement "if (-1 < (int)uVar6) {\n      uVar8 = 0;\n      ppiVar25 = ppiVar36;\n      do {\n        uVar2 = uVar8 & 0x1f;\n        *ppiVar25 = piVar13;\n        uVar8 = uVar8 + 1;\n        piVar13 = (int *)((int)piVar13 + (4 << uVar2));\n        ppiVar25 = ppiVar25 + 1;\n      } while (uVar8 != uVar6 + 1);\n    }" if (parenthesized_expression "(-1 < (int)uVar6)" ( (binary_expression "-1 < (int)uVar6" number_literal < (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      uVar8 = 0;\n      ppiVar25 = ppiVar36;\n      do {\n        uVar2 = uVar8 & 0x1f;\n        *ppiVar25 = piVar13;\n        uVar8 = uVar8 + 1;\n        piVar13 = (int *)((int)piVar13 + (4 << uVar2));\n        ppiVar25 = ppiVar25 + 1;\n      } while (uVar8 != uVar6 + 1);\n    }" { (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "ppiVar25 = ppiVar36;" (assignment_expression "ppiVar25 = ppiVar36" identifier = identifier) ;) (do_statement "do {\n        uVar2 = uVar8 & 0x1f;\n        *ppiVar25 = piVar13;\n        uVar8 = uVar8 + 1;\n        piVar13 = (int *)((int)piVar13 + (4 << uVar2));\n        ppiVar25 = ppiVar25 + 1;\n      } while (uVar8 != uVar6 + 1);" do (compound_statement "{\n        uVar2 = uVar8 & 0x1f;\n        *ppiVar25 = piVar13;\n        uVar8 = uVar8 + 1;\n        piVar13 = (int *)((int)piVar13 + (4 << uVar2));\n        ppiVar25 = ppiVar25 + 1;\n      }" { (expression_statement "uVar2 = uVar8 & 0x1f;" (assignment_expression "uVar2 = uVar8 & 0x1f" identifier = (binary_expression "uVar8 & 0x1f" identifier & number_literal)) ;) (expression_statement "*ppiVar25 = piVar13;" (assignment_expression "*ppiVar25 = piVar13" (pointer_expression "*ppiVar25" * identifier) = identifier) ;) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = (int *)((int)piVar13 + (4 << uVar2));" (assignment_expression "piVar13 = (int *)((int)piVar13 + (4 << uVar2))" identifier = (cast_expression "(int *)((int)piVar13 + (4 << uVar2))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 + (4 << uVar2))" ( (binary_expression "(int)piVar13 + (4 << uVar2)" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(4 << uVar2)" ( (binary_expression "4 << uVar2" number_literal << identifier) ))) )))) ;) (expression_statement "ppiVar25 = ppiVar25 + 1;" (assignment_expression "ppiVar25 = ppiVar25 + 1" identifier = (binary_expression "ppiVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar8 != uVar6 + 1)" ( (binary_expression "uVar8 != uVar6 + 1" identifier != (binary_expression "uVar6 + 1" identifier + number_literal)) )) ;) })) (expression_statement "mpn_fft_initl(ppiVar36,uVar6);" (call_expression "mpn_fft_initl(ppiVar36,uVar6)" identifier (argument_list "(ppiVar36,uVar6)" ( identifier , identifier ))) ;) (if_statement "if (0 < iVar33) {\n      iVar14 = (iVar42 << (uVar6 & 0x1f)) + 1;\n      pcVar15 = (code *)(PTR_LAB_00097078 + 0xad4);\n      pcVar16 = (code *)(PTR_LAB_00097078 + -0x4ac);\n      iVar39 = 0;\n      do {\n        ppmVar35 = Ap + iVar39;\n        pmVar34 = *ppmVar35;\n        pmVar28 = pmVar34 + (int)B;\n        pmVar17 = pmVar34;\n        if (*pmVar28 != 0) {\n          do {\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n          pmVar17 = pmVar34;\n          pmVar22 = B;\n          if (*pmVar28 == 0) {\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }\n          else {\n            *pmVar28 = 0;\n          }\n        }\n        if (Ap == local_74) {\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n        }\n        else {\n          pmVar28 = local_74[iVar39];\n          pmVar22 = pmVar28 + (int)B;\n          pmVar17 = pmVar28;\n          if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);\n        }\n        iVar39 = iVar39 + 1;\n        mVar21 = (*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T);\n        (*ppmVar35)[(int)B] = mVar21;\n      } while (iVar33 != iVar39);\n    }" if (parenthesized_expression "(0 < iVar33)" ( (binary_expression "0 < iVar33" number_literal < identifier) )) (compound_statement "{\n      iVar14 = (iVar42 << (uVar6 & 0x1f)) + 1;\n      pcVar15 = (code *)(PTR_LAB_00097078 + 0xad4);\n      pcVar16 = (code *)(PTR_LAB_00097078 + -0x4ac);\n      iVar39 = 0;\n      do {\n        ppmVar35 = Ap + iVar39;\n        pmVar34 = *ppmVar35;\n        pmVar28 = pmVar34 + (int)B;\n        pmVar17 = pmVar34;\n        if (*pmVar28 != 0) {\n          do {\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n          pmVar17 = pmVar34;\n          pmVar22 = B;\n          if (*pmVar28 == 0) {\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }\n          else {\n            *pmVar28 = 0;\n          }\n        }\n        if (Ap == local_74) {\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n        }\n        else {\n          pmVar28 = local_74[iVar39];\n          pmVar22 = pmVar28 + (int)B;\n          pmVar17 = pmVar28;\n          if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);\n        }\n        iVar39 = iVar39 + 1;\n        mVar21 = (*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T);\n        (*ppmVar35)[(int)B] = mVar21;\n      } while (iVar33 != iVar39);\n    }" { (expression_statement "iVar14 = (iVar42 << (uVar6 & 0x1f)) + 1;" (assignment_expression "iVar14 = (iVar42 << (uVar6 & 0x1f)) + 1" identifier = (binary_expression "(iVar42 << (uVar6 & 0x1f)) + 1" (parenthesized_expression "(iVar42 << (uVar6 & 0x1f))" ( (binary_expression "iVar42 << (uVar6 & 0x1f)" identifier << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))) )) + number_literal)) ;) (expression_statement "pcVar15 = (code *)(PTR_LAB_00097078 + 0xad4);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_00097078 + 0xad4)" identifier = (cast_expression "(code *)(PTR_LAB_00097078 + 0xad4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00097078 + 0xad4)" ( (binary_expression "PTR_LAB_00097078 + 0xad4" identifier + number_literal) )))) ;) (expression_statement "pcVar16 = (code *)(PTR_LAB_00097078 + -0x4ac);" (assignment_expression "pcVar16 = (code *)(PTR_LAB_00097078 + -0x4ac)" identifier = (cast_expression "(code *)(PTR_LAB_00097078 + -0x4ac)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00097078 + -0x4ac)" ( (binary_expression "PTR_LAB_00097078 + -0x4ac" identifier + number_literal) )))) ;) (expression_statement "iVar39 = 0;" (assignment_expression "iVar39 = 0" identifier = number_literal) ;) (do_statement "do {\n        ppmVar35 = Ap + iVar39;\n        pmVar34 = *ppmVar35;\n        pmVar28 = pmVar34 + (int)B;\n        pmVar17 = pmVar34;\n        if (*pmVar28 != 0) {\n          do {\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n          pmVar17 = pmVar34;\n          pmVar22 = B;\n          if (*pmVar28 == 0) {\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }\n          else {\n            *pmVar28 = 0;\n          }\n        }\n        if (Ap == local_74) {\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n        }\n        else {\n          pmVar28 = local_74[iVar39];\n          pmVar22 = pmVar28 + (int)B;\n          pmVar17 = pmVar28;\n          if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);\n        }\n        iVar39 = iVar39 + 1;\n        mVar21 = (*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T);\n        (*ppmVar35)[(int)B] = mVar21;\n      } while (iVar33 != iVar39);" do (compound_statement "{\n        ppmVar35 = Ap + iVar39;\n        pmVar34 = *ppmVar35;\n        pmVar28 = pmVar34 + (int)B;\n        pmVar17 = pmVar34;\n        if (*pmVar28 != 0) {\n          do {\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n          pmVar17 = pmVar34;\n          pmVar22 = B;\n          if (*pmVar28 == 0) {\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }\n          else {\n            *pmVar28 = 0;\n          }\n        }\n        if (Ap == local_74) {\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n        }\n        else {\n          pmVar28 = local_74[iVar39];\n          pmVar22 = pmVar28 + (int)B;\n          pmVar17 = pmVar28;\n          if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);\n        }\n        iVar39 = iVar39 + 1;\n        mVar21 = (*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T);\n        (*ppmVar35)[(int)B] = mVar21;\n      }" { (expression_statement "ppmVar35 = Ap + iVar39;" (assignment_expression "ppmVar35 = Ap + iVar39" identifier = (binary_expression "Ap + iVar39" identifier + identifier)) ;) (expression_statement "pmVar34 = *ppmVar35;" (assignment_expression "pmVar34 = *ppmVar35" identifier = (pointer_expression "*ppmVar35" * identifier)) ;) (expression_statement "pmVar28 = pmVar34 + (int)B;" (assignment_expression "pmVar28 = pmVar34 + (int)B" identifier = (binary_expression "pmVar34 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pmVar17 = pmVar34;" (assignment_expression "pmVar17 = pmVar34" identifier = identifier) ;) (if_statement "if (*pmVar28 != 0) {\n          do {\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n          pmVar17 = pmVar34;\n          pmVar22 = B;\n          if (*pmVar28 == 0) {\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }\n          else {\n            *pmVar28 = 0;\n          }\n        }" if (parenthesized_expression "(*pmVar28 != 0)" ( (binary_expression "*pmVar28 != 0" (pointer_expression "*pmVar28" * identifier) != number_literal) )) (compound_statement "{\n          do {\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n          pmVar17 = pmVar34;\n          pmVar22 = B;\n          if (*pmVar28 == 0) {\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }\n          else {\n            *pmVar28 = 0;\n          }\n        }" { (do_statement "do {\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);" do (compound_statement "{\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          }" { (expression_statement "mVar21 = *pmVar17;" (assignment_expression "mVar21 = *pmVar17" identifier = (pointer_expression "*pmVar17" * identifier)) ;) (expression_statement "*pmVar17 = mVar21 - 1;" (assignment_expression "*pmVar17 = mVar21 - 1" (pointer_expression "*pmVar17" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (expression_statement "pmVar17 = pmVar17 + 1;" (assignment_expression "pmVar17 = pmVar17 + 1" identifier = (binary_expression "pmVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) ;) (expression_statement "pmVar17 = pmVar34;" (assignment_expression "pmVar17 = pmVar34" identifier = identifier) ;) (expression_statement "pmVar22 = B;" (assignment_expression "pmVar22 = B" identifier = identifier) ;) (if_statement "if (*pmVar28 == 0) {\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }\n          else {\n            *pmVar28 = 0;\n          }" if (parenthesized_expression "(*pmVar28 == 0)" ( (binary_expression "*pmVar28 == 0" (pointer_expression "*pmVar28" * identifier) == number_literal) )) (compound_statement "{\n            do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);\n            *pmVar28 = 1;\n          }" { (do_statement "do {\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            } while (pmVar22 != (mp_ptr)0x0);" do (compound_statement "{\n              pmVar22 = (mp_ptr)((int)pmVar22 + -1);\n              *pmVar17 = 0;\n              pmVar17 = pmVar17 + 1;\n            }" { (expression_statement "pmVar22 = (mp_ptr)((int)pmVar22 + -1);" (assignment_expression "pmVar22 = (mp_ptr)((int)pmVar22 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar22 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar22 + -1)" ( (binary_expression "(int)pmVar22 + -1" (cast_expression "(int)pmVar22" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*pmVar17 = 0;" (assignment_expression "*pmVar17 = 0" (pointer_expression "*pmVar17" * identifier) = number_literal) ;) (expression_statement "pmVar17 = pmVar17 + 1;" (assignment_expression "pmVar17 = pmVar17 + 1" identifier = (binary_expression "pmVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar22 != (mp_ptr)0x0)" ( (binary_expression "pmVar22 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "*pmVar28 = 1;" (assignment_expression "*pmVar28 = 1" (pointer_expression "*pmVar28" * identifier) = number_literal) ;) }) (else_clause "else {\n            *pmVar28 = 0;\n          }" else (compound_statement "{\n            *pmVar28 = 0;\n          }" { (expression_statement "*pmVar28 = 0;" (assignment_expression "*pmVar28 = 0" (pointer_expression "*pmVar28" * identifier) = number_literal) ;) }))) })) (if_statement "if (Ap == local_74) {\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n        }\n        else {\n          pmVar28 = local_74[iVar39];\n          pmVar22 = pmVar28 + (int)B;\n          pmVar17 = pmVar28;\n          if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);\n        }" if (parenthesized_expression "(Ap == local_74)" ( (binary_expression "Ap == local_74" identifier == identifier) )) (compound_statement "{\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n        }" { (expression_statement "(*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);" (call_expression "(*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12)" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n          pmVar28 = local_74[iVar39];\n          pmVar22 = pmVar28 + (int)B;\n          pmVar17 = pmVar28;\n          if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);\n        }" else (compound_statement "{\n          pmVar28 = local_74[iVar39];\n          pmVar22 = pmVar28 + (int)B;\n          pmVar17 = pmVar28;\n          if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }\n          (*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);\n          (*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);\n        }" { (expression_statement "pmVar28 = local_74[iVar39];" (assignment_expression "pmVar28 = local_74[iVar39]" identifier = (subscript_expression "local_74[iVar39]" identifier [ identifier ])) ;) (expression_statement "pmVar22 = pmVar28 + (int)B;" (assignment_expression "pmVar22 = pmVar28 + (int)B" identifier = (binary_expression "pmVar28 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pmVar17 = pmVar28;" (assignment_expression "pmVar17 = pmVar28" identifier = identifier) ;) (if_statement "if (*pmVar22 != 0) {\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }" if (parenthesized_expression "(*pmVar22 != 0)" ( (binary_expression "*pmVar22 != 0" (pointer_expression "*pmVar22" * identifier) != number_literal) )) (compound_statement "{\n            do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);\n            pmVar17 = B;\n            if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }\n          }" { (do_statement "do {\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 == 0);" do (compound_statement "{\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 - 1;\n              pmVar17 = pmVar17 + 1;\n            }" { (expression_statement "mVar21 = *pmVar17;" (assignment_expression "mVar21 = *pmVar17" identifier = (pointer_expression "*pmVar17" * identifier)) ;) (expression_statement "*pmVar17 = mVar21 - 1;" (assignment_expression "*pmVar17 = mVar21 - 1" (pointer_expression "*pmVar17" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (expression_statement "pmVar17 = pmVar17 + 1;" (assignment_expression "pmVar17 = pmVar17 + 1" identifier = (binary_expression "pmVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) ;) (expression_statement "pmVar17 = B;" (assignment_expression "pmVar17 = B" identifier = identifier) ;) (if_statement "if (*pmVar22 == 0) {\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }\n            else {\n              *pmVar22 = 0;\n            }" if (parenthesized_expression "(*pmVar22 == 0)" ( (binary_expression "*pmVar22 == 0" (pointer_expression "*pmVar22" * identifier) == number_literal) )) (compound_statement "{\n              do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);\n              *pmVar22 = 1;\n            }" { (do_statement "do {\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              } while (pmVar17 != (mp_ptr)0x0);" do (compound_statement "{\n                pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n                *pmVar28 = 0;\n                pmVar28 = pmVar28 + 1;\n              }" { (expression_statement "pmVar17 = (mp_ptr)((int)pmVar17 + -1);" (assignment_expression "pmVar17 = (mp_ptr)((int)pmVar17 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar17 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar17 + -1)" ( (binary_expression "(int)pmVar17 + -1" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*pmVar28 = 0;" (assignment_expression "*pmVar28 = 0" (pointer_expression "*pmVar28" * identifier) = number_literal) ;) (expression_statement "pmVar28 = pmVar28 + 1;" (assignment_expression "pmVar28 = pmVar28 + 1" identifier = (binary_expression "pmVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar17 != (mp_ptr)0x0)" ( (binary_expression "pmVar17 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) (expression_statement "*pmVar22 = 1;" (assignment_expression "*pmVar22 = 1" (pointer_expression "*pmVar22" * identifier) = number_literal) ;) }) (else_clause "else {\n              *pmVar22 = 0;\n            }" else (compound_statement "{\n              *pmVar22 = 0;\n            }" { (expression_statement "*pmVar22 = 0;" (assignment_expression "*pmVar22 = 0" (pointer_expression "*pmVar22" * identifier) = number_literal) ;) }))) })) (expression_statement "(*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12);" (call_expression "(*pcVar16)(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12)" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "(iVar9,uVar10,iVar7,uVar26,pmVar34,iVar14,iVar42,iVar24,uVar12)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12);" (call_expression "(*pcVar16)(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12)" (parenthesized_expression "(*pcVar16)" ( (pointer_expression "*pcVar16" * identifier) )) (argument_list "(iVar43,uVar11,iVar7,uVar26,local_74[iVar39],iVar14,iVar42,iVar24,uVar12)" ( identifier , identifier , identifier , identifier , (subscript_expression "local_74[iVar39]" identifier [ identifier ]) , identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar39 = iVar39 + 1;" (assignment_expression "iVar39 = iVar39 + 1" identifier = (binary_expression "iVar39 + 1" identifier + number_literal)) ;) (expression_statement "mVar21 = (*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T);" (assignment_expression "mVar21 = (*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T)" identifier = (call_expression "(*pcVar15)(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(*ppmVar35,B,uVar6,uVar10,uVar11,iVar43,uVar26,iVar42,iVar24,ppiVar36,\n                            uVar12,T)" ( (pointer_expression "*ppmVar35" * identifier) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "(*ppmVar35)[(int)B] = mVar21;" (assignment_expression "(*ppmVar35)[(int)B] = mVar21" (subscript_expression "(*ppmVar35)[(int)B]" (parenthesized_expression "(*ppmVar35)" ( (pointer_expression "*ppmVar35" * identifier) )) [ (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) ]) = identifier) ;) }) while (parenthesized_expression "(iVar33 != iVar39)" ( (binary_expression "iVar33 != iVar39" identifier != identifier) )) ;) })) }))) (labeled_statement "LAB_00040f88:\n  if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }" statement_identifier : (if_statement "if (__tmp_marker != (tmp_reentrant_t *)0x0) {\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }" if (parenthesized_expression "(__tmp_marker != (tmp_reentrant_t *)0x0)" ( (binary_expression "__tmp_marker != (tmp_reentrant_t *)0x0" identifier != (cast_expression "(tmp_reentrant_t *)0x0" ( (type_descriptor "tmp_reentrant_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n  }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))) (expression_statement "iVar9 = (int)B + 1;" (assignment_expression "iVar9 = (int)B + 1" identifier = (binary_expression "(int)B + 1" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "ppiVar25 = fft_l + iVar9;" (assignment_expression "ppiVar25 = fft_l + iVar9" identifier = (binary_expression "fft_l + iVar9" identifier + identifier)) ;) (expression_statement "mpn_fft_fftinv(Ap,iVar33,iVar30,(mp_size_t)B,(mp_ptr)fft_l);" (call_expression "mpn_fft_fftinv(Ap,iVar33,iVar30,(mp_size_t)B,(mp_ptr)fft_l)" identifier (argument_list "(Ap,iVar33,iVar30,(mp_size_t)B,(mp_ptr)fft_l)" ( identifier , identifier , identifier , (cast_expression "(mp_size_t)B" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) , (cast_expression "(mp_ptr)fft_l" ( (type_descriptor "mp_ptr" type_identifier) ) identifier) ))) ;) (expression_statement "puVar4 = PTR_LAB_00097078;" (assignment_expression "puVar4 = PTR_LAB_00097078" identifier = identifier) ;) (expression_statement "*Bp = (mp_ptr)ppiVar25;" (assignment_expression "*Bp = (mp_ptr)ppiVar25" (pointer_expression "*Bp" * identifier) = (cast_expression "(mp_ptr)ppiVar25" ( (type_descriptor "mp_ptr" type_identifier) ) identifier)) ;) (expression_statement "mpn_fft_mul_2exp_modF((mp_ptr)ppiVar25,*Ap,(int)B * 0x40 - k,(mp_size_t)B);" (call_expression "mpn_fft_mul_2exp_modF((mp_ptr)ppiVar25,*Ap,(int)B * 0x40 - k,(mp_size_t)B)" identifier (argument_list "((mp_ptr)ppiVar25,*Ap,(int)B * 0x40 - k,(mp_size_t)B)" ( (cast_expression "(mp_ptr)ppiVar25" ( (type_descriptor "mp_ptr" type_identifier) ) identifier) , (pointer_expression "*Ap" * identifier) , (binary_expression "(int)B * 0x40 - k" (binary_expression "(int)B * 0x40" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - identifier) , (cast_expression "(mp_size_t)B" ( (type_descriptor "mp_size_t" type_identifier) ) identifier) ))) ;) (expression_statement "ppiVar29 = ppiVar25 + (int)B;" (assignment_expression "ppiVar29 = ppiVar25 + (int)B" identifier = (binary_expression "ppiVar25 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "ppiVar36 = ppiVar25;" (assignment_expression "ppiVar36 = ppiVar25" identifier = identifier) ;) (if_statement "if (*ppiVar29 != (int *)0x0) {\n    do {\n      piVar13 = *ppiVar36;\n      *ppiVar36 = (int *)((int)piVar13 - 1);\n      ppiVar36 = ppiVar36 + 1;\n    } while (piVar13 == (int *)0x0);\n    if (*ppiVar29 == (int *)0x0) {\n      pmVar17 = B;\n      if (B != (mp_ptr)0x0) {\n        do {\n          pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n          *ppiVar25 = (int *)0x0;\n          ppiVar25 = ppiVar25 + 1;\n        } while (pmVar17 != (mp_ptr)0x0);\n      }\n      *ppiVar29 = (int *)&DAT_00000001;\n    }\n    else {\n      *ppiVar29 = (int *)0x0;\n    }\n  }" if (parenthesized_expression "(*ppiVar29 != (int *)0x0)" ( (binary_expression "*ppiVar29 != (int *)0x0" (pointer_expression "*ppiVar29" * identifier) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      piVar13 = *ppiVar36;\n      *ppiVar36 = (int *)((int)piVar13 - 1);\n      ppiVar36 = ppiVar36 + 1;\n    } while (piVar13 == (int *)0x0);\n    if (*ppiVar29 == (int *)0x0) {\n      pmVar17 = B;\n      if (B != (mp_ptr)0x0) {\n        do {\n          pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n          *ppiVar25 = (int *)0x0;\n          ppiVar25 = ppiVar25 + 1;\n        } while (pmVar17 != (mp_ptr)0x0);\n      }\n      *ppiVar29 = (int *)&DAT_00000001;\n    }\n    else {\n      *ppiVar29 = (int *)0x0;\n    }\n  }" { (do_statement "do {\n      piVar13 = *ppiVar36;\n      *ppiVar36 = (int *)((int)piVar13 - 1);\n      ppiVar36 = ppiVar36 + 1;\n    } while (piVar13 == (int *)0x0);" do (compound_statement "{\n      piVar13 = *ppiVar36;\n      *ppiVar36 = (int *)((int)piVar13 - 1);\n      ppiVar36 = ppiVar36 + 1;\n    }" { (expression_statement "piVar13 = *ppiVar36;" (assignment_expression "piVar13 = *ppiVar36" identifier = (pointer_expression "*ppiVar36" * identifier)) ;) (expression_statement "*ppiVar36 = (int *)((int)piVar13 - 1);" (assignment_expression "*ppiVar36 = (int *)((int)piVar13 - 1)" (pointer_expression "*ppiVar36" * identifier) = (cast_expression "(int *)((int)piVar13 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar13 - 1)" ( (binary_expression "(int)piVar13 - 1" (cast_expression "(int)piVar13" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) ;) (expression_statement "ppiVar36 = ppiVar36 + 1;" (assignment_expression "ppiVar36 = ppiVar36 + 1" identifier = (binary_expression "ppiVar36 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar13 == (int *)0x0)" ( (binary_expression "piVar13 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if (*ppiVar29 == (int *)0x0) {\n      pmVar17 = B;\n      if (B != (mp_ptr)0x0) {\n        do {\n          pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n          *ppiVar25 = (int *)0x0;\n          ppiVar25 = ppiVar25 + 1;\n        } while (pmVar17 != (mp_ptr)0x0);\n      }\n      *ppiVar29 = (int *)&DAT_00000001;\n    }\n    else {\n      *ppiVar29 = (int *)0x0;\n    }" if (parenthesized_expression "(*ppiVar29 == (int *)0x0)" ( (binary_expression "*ppiVar29 == (int *)0x0" (pointer_expression "*ppiVar29" * identifier) == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pmVar17 = B;\n      if (B != (mp_ptr)0x0) {\n        do {\n          pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n          *ppiVar25 = (int *)0x0;\n          ppiVar25 = ppiVar25 + 1;\n        } while (pmVar17 != (mp_ptr)0x0);\n      }\n      *ppiVar29 = (int *)&DAT_00000001;\n    }" { (expression_statement "pmVar17 = B;" (assignment_expression "pmVar17 = B" identifier = identifier) ;) (if_statement "if (B != (mp_ptr)0x0) {\n        do {\n          pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n          *ppiVar25 = (int *)0x0;\n          ppiVar25 = ppiVar25 + 1;\n        } while (pmVar17 != (mp_ptr)0x0);\n      }" if (parenthesized_expression "(B != (mp_ptr)0x0)" ( (binary_expression "B != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n        do {\n          pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n          *ppiVar25 = (int *)0x0;\n          ppiVar25 = ppiVar25 + 1;\n        } while (pmVar17 != (mp_ptr)0x0);\n      }" { (do_statement "do {\n          pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n          *ppiVar25 = (int *)0x0;\n          ppiVar25 = ppiVar25 + 1;\n        } while (pmVar17 != (mp_ptr)0x0);" do (compound_statement "{\n          pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n          *ppiVar25 = (int *)0x0;\n          ppiVar25 = ppiVar25 + 1;\n        }" { (expression_statement "pmVar17 = (mp_ptr)((int)pmVar17 + -1);" (assignment_expression "pmVar17 = (mp_ptr)((int)pmVar17 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar17 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar17 + -1)" ( (binary_expression "(int)pmVar17 + -1" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*ppiVar25 = (int *)0x0;" (assignment_expression "*ppiVar25 = (int *)0x0" (pointer_expression "*ppiVar25" * identifier) = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppiVar25 = ppiVar25 + 1;" (assignment_expression "ppiVar25 = ppiVar25 + 1" identifier = (binary_expression "ppiVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar17 != (mp_ptr)0x0)" ( (binary_expression "pmVar17 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) })) (expression_statement "*ppiVar29 = (int *)&DAT_00000001;" (assignment_expression "*ppiVar29 = (int *)&DAT_00000001" (pointer_expression "*ppiVar29" * identifier) = (cast_expression "(int *)&DAT_00000001" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&DAT_00000001" & identifier))) ;) }) (else_clause "else {\n      *ppiVar29 = (int *)0x0;\n    }" else (compound_statement "{\n      *ppiVar29 = (int *)0x0;\n    }" { (expression_statement "*ppiVar29 = (int *)0x0;" (assignment_expression "*ppiVar29 = (int *)0x0" (pointer_expression "*ppiVar29" * identifier) = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) })) (if_statement "if (1 < iVar33) {\n    ppmVar40 = Ap + 1;\n    iVar30 = (int)B * 0x40 - ((iVar33 + -1) * l + k);\n    ppmVar35 = Bp;\n    do {\n      ppmVar35 = ppmVar35 + 1;\n      pmVar28 = ppmVar40[-1];\n      *ppmVar35 = pmVar28;\n      (*(code *)(puVar4 + -0xa24))(pmVar28,*ppmVar40,iVar30,B);\n      pmVar34 = pmVar28 + (int)B;\n      pmVar17 = pmVar28;\n      if (*pmVar34 != 0) {\n        do {\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          pmVar17 = pmVar17 + 1;\n        } while (mVar21 == 0);\n        if (*pmVar34 == 0) {\n          pmVar17 = B;\n          if (B != (mp_ptr)0x0) {\n            do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);\n          }\n          *pmVar34 = 1;\n        }\n        else {\n          *pmVar34 = 0;\n        }\n      }\n      ppmVar40 = ppmVar40 + 1;\n      iVar30 = iVar30 + l;\n    } while (ppmVar40 != (mp_ptr *)((int)Ap + (4 << (k & 0x1fU))));\n  }" if (parenthesized_expression "(1 < iVar33)" ( (binary_expression "1 < iVar33" number_literal < identifier) )) (compound_statement "{\n    ppmVar40 = Ap + 1;\n    iVar30 = (int)B * 0x40 - ((iVar33 + -1) * l + k);\n    ppmVar35 = Bp;\n    do {\n      ppmVar35 = ppmVar35 + 1;\n      pmVar28 = ppmVar40[-1];\n      *ppmVar35 = pmVar28;\n      (*(code *)(puVar4 + -0xa24))(pmVar28,*ppmVar40,iVar30,B);\n      pmVar34 = pmVar28 + (int)B;\n      pmVar17 = pmVar28;\n      if (*pmVar34 != 0) {\n        do {\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          pmVar17 = pmVar17 + 1;\n        } while (mVar21 == 0);\n        if (*pmVar34 == 0) {\n          pmVar17 = B;\n          if (B != (mp_ptr)0x0) {\n            do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);\n          }\n          *pmVar34 = 1;\n        }\n        else {\n          *pmVar34 = 0;\n        }\n      }\n      ppmVar40 = ppmVar40 + 1;\n      iVar30 = iVar30 + l;\n    } while (ppmVar40 != (mp_ptr *)((int)Ap + (4 << (k & 0x1fU))));\n  }" { (expression_statement "ppmVar40 = Ap + 1;" (assignment_expression "ppmVar40 = Ap + 1" identifier = (binary_expression "Ap + 1" identifier + number_literal)) ;) (expression_statement "iVar30 = (int)B * 0x40 - ((iVar33 + -1) * l + k);" (assignment_expression "iVar30 = (int)B * 0x40 - ((iVar33 + -1) * l + k)" identifier = (binary_expression "(int)B * 0x40 - ((iVar33 + -1) * l + k)" (binary_expression "(int)B * 0x40" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) - (parenthesized_expression "((iVar33 + -1) * l + k)" ( (binary_expression "(iVar33 + -1) * l + k" (binary_expression "(iVar33 + -1) * l" (parenthesized_expression "(iVar33 + -1)" ( (binary_expression "iVar33 + -1" identifier + number_literal) )) * identifier) + identifier) )))) ;) (expression_statement "ppmVar35 = Bp;" (assignment_expression "ppmVar35 = Bp" identifier = identifier) ;) (do_statement "do {\n      ppmVar35 = ppmVar35 + 1;\n      pmVar28 = ppmVar40[-1];\n      *ppmVar35 = pmVar28;\n      (*(code *)(puVar4 + -0xa24))(pmVar28,*ppmVar40,iVar30,B);\n      pmVar34 = pmVar28 + (int)B;\n      pmVar17 = pmVar28;\n      if (*pmVar34 != 0) {\n        do {\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          pmVar17 = pmVar17 + 1;\n        } while (mVar21 == 0);\n        if (*pmVar34 == 0) {\n          pmVar17 = B;\n          if (B != (mp_ptr)0x0) {\n            do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);\n          }\n          *pmVar34 = 1;\n        }\n        else {\n          *pmVar34 = 0;\n        }\n      }\n      ppmVar40 = ppmVar40 + 1;\n      iVar30 = iVar30 + l;\n    } while (ppmVar40 != (mp_ptr *)((int)Ap + (4 << (k & 0x1fU))));" do (compound_statement "{\n      ppmVar35 = ppmVar35 + 1;\n      pmVar28 = ppmVar40[-1];\n      *ppmVar35 = pmVar28;\n      (*(code *)(puVar4 + -0xa24))(pmVar28,*ppmVar40,iVar30,B);\n      pmVar34 = pmVar28 + (int)B;\n      pmVar17 = pmVar28;\n      if (*pmVar34 != 0) {\n        do {\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          pmVar17 = pmVar17 + 1;\n        } while (mVar21 == 0);\n        if (*pmVar34 == 0) {\n          pmVar17 = B;\n          if (B != (mp_ptr)0x0) {\n            do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);\n          }\n          *pmVar34 = 1;\n        }\n        else {\n          *pmVar34 = 0;\n        }\n      }\n      ppmVar40 = ppmVar40 + 1;\n      iVar30 = iVar30 + l;\n    }" { (expression_statement "ppmVar35 = ppmVar35 + 1;" (assignment_expression "ppmVar35 = ppmVar35 + 1" identifier = (binary_expression "ppmVar35 + 1" identifier + number_literal)) ;) (expression_statement "pmVar28 = ppmVar40[-1];" (assignment_expression "pmVar28 = ppmVar40[-1]" identifier = (subscript_expression "ppmVar40[-1]" identifier [ number_literal ])) ;) (expression_statement "*ppmVar35 = pmVar28;" (assignment_expression "*ppmVar35 = pmVar28" (pointer_expression "*ppmVar35" * identifier) = identifier) ;) (expression_statement "(*(code *)(puVar4 + -0xa24))(pmVar28,*ppmVar40,iVar30,B);" (call_expression "(*(code *)(puVar4 + -0xa24))(pmVar28,*ppmVar40,iVar30,B)" (parenthesized_expression "(*(code *)(puVar4 + -0xa24))" ( (pointer_expression "*(code *)(puVar4 + -0xa24)" * (cast_expression "(code *)(puVar4 + -0xa24)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + -0xa24)" ( (binary_expression "puVar4 + -0xa24" identifier + number_literal) )))) )) (argument_list "(pmVar28,*ppmVar40,iVar30,B)" ( identifier , (pointer_expression "*ppmVar40" * identifier) , identifier , identifier ))) ;) (expression_statement "pmVar34 = pmVar28 + (int)B;" (assignment_expression "pmVar34 = pmVar28 + (int)B" identifier = (binary_expression "pmVar28 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pmVar17 = pmVar28;" (assignment_expression "pmVar17 = pmVar28" identifier = identifier) ;) (if_statement "if (*pmVar34 != 0) {\n        do {\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          pmVar17 = pmVar17 + 1;\n        } while (mVar21 == 0);\n        if (*pmVar34 == 0) {\n          pmVar17 = B;\n          if (B != (mp_ptr)0x0) {\n            do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);\n          }\n          *pmVar34 = 1;\n        }\n        else {\n          *pmVar34 = 0;\n        }\n      }" if (parenthesized_expression "(*pmVar34 != 0)" ( (binary_expression "*pmVar34 != 0" (pointer_expression "*pmVar34" * identifier) != number_literal) )) (compound_statement "{\n        do {\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          pmVar17 = pmVar17 + 1;\n        } while (mVar21 == 0);\n        if (*pmVar34 == 0) {\n          pmVar17 = B;\n          if (B != (mp_ptr)0x0) {\n            do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);\n          }\n          *pmVar34 = 1;\n        }\n        else {\n          *pmVar34 = 0;\n        }\n      }" { (do_statement "do {\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          pmVar17 = pmVar17 + 1;\n        } while (mVar21 == 0);" do (compound_statement "{\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          pmVar17 = pmVar17 + 1;\n        }" { (expression_statement "mVar21 = *pmVar17;" (assignment_expression "mVar21 = *pmVar17" identifier = (pointer_expression "*pmVar17" * identifier)) ;) (expression_statement "*pmVar17 = mVar21 - 1;" (assignment_expression "*pmVar17 = mVar21 - 1" (pointer_expression "*pmVar17" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (expression_statement "pmVar17 = pmVar17 + 1;" (assignment_expression "pmVar17 = pmVar17 + 1" identifier = (binary_expression "pmVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) ;) (if_statement "if (*pmVar34 == 0) {\n          pmVar17 = B;\n          if (B != (mp_ptr)0x0) {\n            do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);\n          }\n          *pmVar34 = 1;\n        }\n        else {\n          *pmVar34 = 0;\n        }" if (parenthesized_expression "(*pmVar34 == 0)" ( (binary_expression "*pmVar34 == 0" (pointer_expression "*pmVar34" * identifier) == number_literal) )) (compound_statement "{\n          pmVar17 = B;\n          if (B != (mp_ptr)0x0) {\n            do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);\n          }\n          *pmVar34 = 1;\n        }" { (expression_statement "pmVar17 = B;" (assignment_expression "pmVar17 = B" identifier = identifier) ;) (if_statement "if (B != (mp_ptr)0x0) {\n            do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);\n          }" if (parenthesized_expression "(B != (mp_ptr)0x0)" ( (binary_expression "B != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n            do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);\n          }" { (do_statement "do {\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            } while (pmVar17 != (mp_ptr)0x0);" do (compound_statement "{\n              pmVar17 = (mp_ptr)((int)pmVar17 + -1);\n              *pmVar28 = 0;\n              pmVar28 = pmVar28 + 1;\n            }" { (expression_statement "pmVar17 = (mp_ptr)((int)pmVar17 + -1);" (assignment_expression "pmVar17 = (mp_ptr)((int)pmVar17 + -1)" identifier = (call_expression "(mp_ptr)((int)pmVar17 + -1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar17 + -1)" ( (binary_expression "(int)pmVar17 + -1" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "*pmVar28 = 0;" (assignment_expression "*pmVar28 = 0" (pointer_expression "*pmVar28" * identifier) = number_literal) ;) (expression_statement "pmVar28 = pmVar28 + 1;" (assignment_expression "pmVar28 = pmVar28 + 1" identifier = (binary_expression "pmVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pmVar17 != (mp_ptr)0x0)" ( (binary_expression "pmVar17 != (mp_ptr)0x0" identifier != (cast_expression "(mp_ptr)0x0" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) ;) })) (expression_statement "*pmVar34 = 1;" (assignment_expression "*pmVar34 = 1" (pointer_expression "*pmVar34" * identifier) = number_literal) ;) }) (else_clause "else {\n          *pmVar34 = 0;\n        }" else (compound_statement "{\n          *pmVar34 = 0;\n        }" { (expression_statement "*pmVar34 = 0;" (assignment_expression "*pmVar34 = 0" (pointer_expression "*pmVar34" * identifier) = number_literal) ;) }))) })) (expression_statement "ppmVar40 = ppmVar40 + 1;" (assignment_expression "ppmVar40 = ppmVar40 + 1" identifier = (binary_expression "ppmVar40 + 1" identifier + number_literal)) ;) (expression_statement "iVar30 = iVar30 + l;" (assignment_expression "iVar30 = iVar30 + l" identifier = (binary_expression "iVar30 + l" identifier + identifier)) ;) }) while (parenthesized_expression "(ppmVar40 != (mp_ptr *)((int)Ap + (4 << (k & 0x1fU))))" ( (binary_expression "ppmVar40 != (mp_ptr *)((int)Ap + (4 << (k & 0x1fU)))" identifier != (cast_expression "(mp_ptr *)((int)Ap + (4 << (k & 0x1fU)))" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)Ap + (4 << (k & 0x1fU)))" ( (binary_expression "(int)Ap + (4 << (k & 0x1fU))" (cast_expression "(int)Ap" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(4 << (k & 0x1fU))" ( (binary_expression "4 << (k & 0x1fU)" number_literal << (parenthesized_expression "(k & 0x1fU)" ( (binary_expression "k & 0x1fU" identifier & number_literal) ))) ))) )))) )) ;) })) (expression_statement "local_74 = (mp_ptr *)(iVar33 - 1);" (assignment_expression "local_74 = (mp_ptr *)(iVar33 - 1)" identifier = (cast_expression "(mp_ptr *)(iVar33 - 1)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar33 - 1)" ( (binary_expression "iVar33 - 1" identifier - number_literal) )))) ;) (expression_statement "ppiVar36 = fft_l;" (assignment_expression "ppiVar36 = fft_l" identifier = identifier) ;) (expression_statement "iVar30 = iVar9;" (assignment_expression "iVar30 = iVar9" identifier = identifier) ;) (if_statement "if (B != (mp_ptr)0xffffffff) {\n    do {\n      iVar30 = iVar30 + -1;\n      *ppiVar36 = (int *)0x0;\n      ppiVar36 = ppiVar36 + 1;\n    } while (iVar30 != 0);\n  }" if (parenthesized_expression "(B != (mp_ptr)0xffffffff)" ( (binary_expression "B != (mp_ptr)0xffffffff" identifier != (cast_expression "(mp_ptr)0xffffffff" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) )) (compound_statement "{\n    do {\n      iVar30 = iVar30 + -1;\n      *ppiVar36 = (int *)0x0;\n      ppiVar36 = ppiVar36 + 1;\n    } while (iVar30 != 0);\n  }" { (do_statement "do {\n      iVar30 = iVar30 + -1;\n      *ppiVar36 = (int *)0x0;\n      ppiVar36 = ppiVar36 + 1;\n    } while (iVar30 != 0);" do (compound_statement "{\n      iVar30 = iVar30 + -1;\n      *ppiVar36 = (int *)0x0;\n      ppiVar36 = ppiVar36 + 1;\n    }" { (expression_statement "iVar30 = iVar30 + -1;" (assignment_expression "iVar30 = iVar30 + -1" identifier = (binary_expression "iVar30 + -1" identifier + number_literal)) ;) (expression_statement "*ppiVar36 = (int *)0x0;" (assignment_expression "*ppiVar36 = (int *)0x0" (pointer_expression "*ppiVar36" * identifier) = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "ppiVar36 = ppiVar36 + 1;" (assignment_expression "ppiVar36 = ppiVar36 + 1" identifier = (binary_expression "ppiVar36 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar30 != 0)" ( (binary_expression "iVar30 != 0" identifier != number_literal) )) ;) })) (expression_statement "iVar42 = (int)local_74 * nprime;" (assignment_expression "iVar42 = (int)local_74 * nprime" identifier = (binary_expression "(int)local_74 * nprime" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) * identifier)) ;) (expression_statement "iVar7 = pl * 2;" (assignment_expression "iVar7 = pl * 2" identifier = (binary_expression "pl * 2" identifier * number_literal)) ;) (expression_statement "pmVar28 = (mp_ptr)((int)B + iVar42);" (assignment_expression "pmVar28 = (mp_ptr)((int)B + iVar42)" identifier = (call_expression "(mp_ptr)((int)B + iVar42)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)B + iVar42)" ( (binary_expression "(int)B + iVar42" (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "iVar24 = (int)pmVar28 + 1;" (assignment_expression "iVar24 = (int)pmVar28 + 1" identifier = (binary_expression "(int)pmVar28 + 1" (cast_expression "(int)pmVar28" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "pmVar17 = A;" (assignment_expression "pmVar17 = A" identifier = identifier) ;) (expression_statement "iVar30 = iVar24;" (assignment_expression "iVar30 = iVar24" identifier = identifier) ;) (if_statement "if (iVar24 == 0) {\n    pmVar34 = (mp_ptr)0xffffffff;\n  }\n  else {\n    do {\n      iVar30 = iVar30 + -1;\n      *pmVar17 = 0;\n      pmVar17 = pmVar17 + 1;\n      pmVar34 = pmVar28;\n    } while (iVar30 != 0);\n  }" if (parenthesized_expression "(iVar24 == 0)" ( (binary_expression "iVar24 == 0" identifier == number_literal) )) (compound_statement "{\n    pmVar34 = (mp_ptr)0xffffffff;\n  }" { (expression_statement "pmVar34 = (mp_ptr)0xffffffff;" (assignment_expression "pmVar34 = (mp_ptr)0xffffffff" identifier = (cast_expression "(mp_ptr)0xffffffff" ( (type_descriptor "mp_ptr" type_identifier) ) number_literal)) ;) }) (else_clause "else {\n    do {\n      iVar30 = iVar30 + -1;\n      *pmVar17 = 0;\n      pmVar17 = pmVar17 + 1;\n      pmVar34 = pmVar28;\n    } while (iVar30 != 0);\n  }" else (compound_statement "{\n    do {\n      iVar30 = iVar30 + -1;\n      *pmVar17 = 0;\n      pmVar17 = pmVar17 + 1;\n      pmVar34 = pmVar28;\n    } while (iVar30 != 0);\n  }" { (do_statement "do {\n      iVar30 = iVar30 + -1;\n      *pmVar17 = 0;\n      pmVar17 = pmVar17 + 1;\n      pmVar34 = pmVar28;\n    } while (iVar30 != 0);" do (compound_statement "{\n      iVar30 = iVar30 + -1;\n      *pmVar17 = 0;\n      pmVar17 = pmVar17 + 1;\n      pmVar34 = pmVar28;\n    }" { (expression_statement "iVar30 = iVar30 + -1;" (assignment_expression "iVar30 = iVar30 + -1" identifier = (binary_expression "iVar30 + -1" identifier + number_literal)) ;) (expression_statement "*pmVar17 = 0;" (assignment_expression "*pmVar17 = 0" (pointer_expression "*pmVar17" * identifier) = number_literal) ;) (expression_statement "pmVar17 = pmVar17 + 1;" (assignment_expression "pmVar17 = pmVar17 + 1" identifier = (binary_expression "pmVar17 + 1" identifier + number_literal)) ;) (expression_statement "pmVar34 = pmVar28;" (assignment_expression "pmVar34 = pmVar28" identifier = identifier) ;) }) while (parenthesized_expression "(iVar30 != 0)" ( (binary_expression "iVar30 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (-1 < (int)local_74) {\n    local_68 = 0;\n    pmVar22 = A + iVar9 + iVar42 + 1;\n    pmVar37 = A + (int)pmVar34;\n    pmVar38 = A + iVar42;\n    ppmVar35 = local_74;\n    pmVar17 = B;\nLAB_000411b8:\n    do {\n      uVar6 = (uint)ppmVar35;\n      iVar30 = (*(code *)PTR___gmpn_add_n_00097334)\n                         (pmVar38,pmVar38,Bp[iVar33 - uVar6 & (uint)local_74],iVar9);\n      if ((iVar30 != 0) && (mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0)) {\n        if ((int)pmVar17 - (int)B < 2) {\nLAB_00041254:\n          local_68 = local_68 + 1;\n        }\n        else {\n          mVar21 = *pmVar22;\n          *pmVar22 = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n      pmVar18 = Bp[iVar33 - uVar6 & (uint)local_74];\n      fft_l[nprime * 2] = (int *)(uVar6 + 1);\n      puVar19 = pmVar18 + (int)B;\n      iVar30 = iVar9;\n      ppiVar36 = fft_l + (int)B;\n      do {\n        iVar30 = iVar30 + -1;\n        if (iVar30 < 0) goto LAB_000412a0;\n        piVar13 = (int *)*puVar19;\n        piVar31 = *ppiVar36;\n        puVar19 = puVar19 + -1;\n        ppiVar36 = ppiVar36 + -1;\n      } while (piVar13 == piVar31);\n      if (piVar31 < piVar13) {\n        mVar21 = *pmVar38;\n        *pmVar38 = mVar21 - 1;\n        if (mVar21 == 0) {\n          if ((int)pmVar17 + 1 < 2) {\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }\n          else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }\n        }\n        mVar21 = *pmVar37;\n        *pmVar37 = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;\n          if (iVar30 < 2) {\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }\n          mVar21 = pmVar37[1];\n          pmVar37[1] = mVar21 - 1;\n          if (mVar21 == 0) {\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }\n        }\n      }\nLAB_000412a0:\n      pmVar38 = pmVar38 + -nprime;\n      pmVar22 = pmVar22 + -nprime;\n      pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n      pmVar37 = pmVar37 + -nprime;\n      ppmVar35 = (mp_ptr *)(uVar6 - 1);\n    } while (uVar6 - 1 != 0xffffffff);\n    if (local_68 == uVar6 - 1) {\n      iVar30 = iVar24 - pl;\n      pmVar17 = A + iVar30;\n      mVar21 = *pmVar17;\n      *pmVar17 = mVar21 + 1;\n      if (mVar21 + 1 == 0) {\n        if (pl < 2) {\n          pmVar17 = A + iVar30 + -1;\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          if ((mVar21 == 0) && (pl == 1)) {\n            mVar21 = pmVar17[1];\nLAB_00041a38:\n            pmVar17[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }\n          }\nLAB_00041a74:\n          A[(int)pmVar28] = A[(int)pmVar28] - 1;\n        }\n        else {\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n    }\n    else if (local_68 == 1) {\n      if (iVar24 < iVar7) {\n        pmVar17 = A + (iVar24 - pl);\n        mVar21 = *pmVar17;\n        *pmVar17 = mVar21 - 1;\n        if (((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)) {\n          iVar30 = 2;\n          pmVar17 = pmVar17 + 2;\n          do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n        }\n      }\n      else {\n        pmVar17 = A + iVar24 + pl * -2;\n        while( true ) {\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }\n      }\n    }\n  }" if (parenthesized_expression "(-1 < (int)local_74)" ( (binary_expression "-1 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    local_68 = 0;\n    pmVar22 = A + iVar9 + iVar42 + 1;\n    pmVar37 = A + (int)pmVar34;\n    pmVar38 = A + iVar42;\n    ppmVar35 = local_74;\n    pmVar17 = B;\nLAB_000411b8:\n    do {\n      uVar6 = (uint)ppmVar35;\n      iVar30 = (*(code *)PTR___gmpn_add_n_00097334)\n                         (pmVar38,pmVar38,Bp[iVar33 - uVar6 & (uint)local_74],iVar9);\n      if ((iVar30 != 0) && (mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0)) {\n        if ((int)pmVar17 - (int)B < 2) {\nLAB_00041254:\n          local_68 = local_68 + 1;\n        }\n        else {\n          mVar21 = *pmVar22;\n          *pmVar22 = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n      pmVar18 = Bp[iVar33 - uVar6 & (uint)local_74];\n      fft_l[nprime * 2] = (int *)(uVar6 + 1);\n      puVar19 = pmVar18 + (int)B;\n      iVar30 = iVar9;\n      ppiVar36 = fft_l + (int)B;\n      do {\n        iVar30 = iVar30 + -1;\n        if (iVar30 < 0) goto LAB_000412a0;\n        piVar13 = (int *)*puVar19;\n        piVar31 = *ppiVar36;\n        puVar19 = puVar19 + -1;\n        ppiVar36 = ppiVar36 + -1;\n      } while (piVar13 == piVar31);\n      if (piVar31 < piVar13) {\n        mVar21 = *pmVar38;\n        *pmVar38 = mVar21 - 1;\n        if (mVar21 == 0) {\n          if ((int)pmVar17 + 1 < 2) {\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }\n          else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }\n        }\n        mVar21 = *pmVar37;\n        *pmVar37 = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;\n          if (iVar30 < 2) {\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }\n          mVar21 = pmVar37[1];\n          pmVar37[1] = mVar21 - 1;\n          if (mVar21 == 0) {\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }\n        }\n      }\nLAB_000412a0:\n      pmVar38 = pmVar38 + -nprime;\n      pmVar22 = pmVar22 + -nprime;\n      pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n      pmVar37 = pmVar37 + -nprime;\n      ppmVar35 = (mp_ptr *)(uVar6 - 1);\n    } while (uVar6 - 1 != 0xffffffff);\n    if (local_68 == uVar6 - 1) {\n      iVar30 = iVar24 - pl;\n      pmVar17 = A + iVar30;\n      mVar21 = *pmVar17;\n      *pmVar17 = mVar21 + 1;\n      if (mVar21 + 1 == 0) {\n        if (pl < 2) {\n          pmVar17 = A + iVar30 + -1;\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          if ((mVar21 == 0) && (pl == 1)) {\n            mVar21 = pmVar17[1];\nLAB_00041a38:\n            pmVar17[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }\n          }\nLAB_00041a74:\n          A[(int)pmVar28] = A[(int)pmVar28] - 1;\n        }\n        else {\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n    }\n    else if (local_68 == 1) {\n      if (iVar24 < iVar7) {\n        pmVar17 = A + (iVar24 - pl);\n        mVar21 = *pmVar17;\n        *pmVar17 = mVar21 - 1;\n        if (((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)) {\n          iVar30 = 2;\n          pmVar17 = pmVar17 + 2;\n          do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n        }\n      }\n      else {\n        pmVar17 = A + iVar24 + pl * -2;\n        while( true ) {\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }\n      }\n    }\n  }" { (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "pmVar22 = A + iVar9 + iVar42 + 1;" (assignment_expression "pmVar22 = A + iVar9 + iVar42 + 1" identifier = (binary_expression "A + iVar9 + iVar42 + 1" (binary_expression "A + iVar9 + iVar42" (binary_expression "A + iVar9" identifier + identifier) + identifier) + number_literal)) ;) (expression_statement "pmVar37 = A + (int)pmVar34;" (assignment_expression "pmVar37 = A + (int)pmVar34" identifier = (binary_expression "A + (int)pmVar34" identifier + (cast_expression "(int)pmVar34" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pmVar38 = A + iVar42;" (assignment_expression "pmVar38 = A + iVar42" identifier = (binary_expression "A + iVar42" identifier + identifier)) ;) (expression_statement "ppmVar35 = local_74;" (assignment_expression "ppmVar35 = local_74" identifier = identifier) ;) (expression_statement "pmVar17 = B;" (assignment_expression "pmVar17 = B" identifier = identifier) ;) (labeled_statement "LAB_000411b8:\n    do {\n      uVar6 = (uint)ppmVar35;\n      iVar30 = (*(code *)PTR___gmpn_add_n_00097334)\n                         (pmVar38,pmVar38,Bp[iVar33 - uVar6 & (uint)local_74],iVar9);\n      if ((iVar30 != 0) && (mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0)) {\n        if ((int)pmVar17 - (int)B < 2) {\nLAB_00041254:\n          local_68 = local_68 + 1;\n        }\n        else {\n          mVar21 = *pmVar22;\n          *pmVar22 = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n      pmVar18 = Bp[iVar33 - uVar6 & (uint)local_74];\n      fft_l[nprime * 2] = (int *)(uVar6 + 1);\n      puVar19 = pmVar18 + (int)B;\n      iVar30 = iVar9;\n      ppiVar36 = fft_l + (int)B;\n      do {\n        iVar30 = iVar30 + -1;\n        if (iVar30 < 0) goto LAB_000412a0;\n        piVar13 = (int *)*puVar19;\n        piVar31 = *ppiVar36;\n        puVar19 = puVar19 + -1;\n        ppiVar36 = ppiVar36 + -1;\n      } while (piVar13 == piVar31);\n      if (piVar31 < piVar13) {\n        mVar21 = *pmVar38;\n        *pmVar38 = mVar21 - 1;\n        if (mVar21 == 0) {\n          if ((int)pmVar17 + 1 < 2) {\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }\n          else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }\n        }\n        mVar21 = *pmVar37;\n        *pmVar37 = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;\n          if (iVar30 < 2) {\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }\n          mVar21 = pmVar37[1];\n          pmVar37[1] = mVar21 - 1;\n          if (mVar21 == 0) {\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }\n        }\n      }\nLAB_000412a0:\n      pmVar38 = pmVar38 + -nprime;\n      pmVar22 = pmVar22 + -nprime;\n      pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n      pmVar37 = pmVar37 + -nprime;\n      ppmVar35 = (mp_ptr *)(uVar6 - 1);\n    } while (uVar6 - 1 != 0xffffffff);" statement_identifier : (do_statement "do {\n      uVar6 = (uint)ppmVar35;\n      iVar30 = (*(code *)PTR___gmpn_add_n_00097334)\n                         (pmVar38,pmVar38,Bp[iVar33 - uVar6 & (uint)local_74],iVar9);\n      if ((iVar30 != 0) && (mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0)) {\n        if ((int)pmVar17 - (int)B < 2) {\nLAB_00041254:\n          local_68 = local_68 + 1;\n        }\n        else {\n          mVar21 = *pmVar22;\n          *pmVar22 = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n      pmVar18 = Bp[iVar33 - uVar6 & (uint)local_74];\n      fft_l[nprime * 2] = (int *)(uVar6 + 1);\n      puVar19 = pmVar18 + (int)B;\n      iVar30 = iVar9;\n      ppiVar36 = fft_l + (int)B;\n      do {\n        iVar30 = iVar30 + -1;\n        if (iVar30 < 0) goto LAB_000412a0;\n        piVar13 = (int *)*puVar19;\n        piVar31 = *ppiVar36;\n        puVar19 = puVar19 + -1;\n        ppiVar36 = ppiVar36 + -1;\n      } while (piVar13 == piVar31);\n      if (piVar31 < piVar13) {\n        mVar21 = *pmVar38;\n        *pmVar38 = mVar21 - 1;\n        if (mVar21 == 0) {\n          if ((int)pmVar17 + 1 < 2) {\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }\n          else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }\n        }\n        mVar21 = *pmVar37;\n        *pmVar37 = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;\n          if (iVar30 < 2) {\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }\n          mVar21 = pmVar37[1];\n          pmVar37[1] = mVar21 - 1;\n          if (mVar21 == 0) {\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }\n        }\n      }\nLAB_000412a0:\n      pmVar38 = pmVar38 + -nprime;\n      pmVar22 = pmVar22 + -nprime;\n      pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n      pmVar37 = pmVar37 + -nprime;\n      ppmVar35 = (mp_ptr *)(uVar6 - 1);\n    } while (uVar6 - 1 != 0xffffffff);" do (compound_statement "{\n      uVar6 = (uint)ppmVar35;\n      iVar30 = (*(code *)PTR___gmpn_add_n_00097334)\n                         (pmVar38,pmVar38,Bp[iVar33 - uVar6 & (uint)local_74],iVar9);\n      if ((iVar30 != 0) && (mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0)) {\n        if ((int)pmVar17 - (int)B < 2) {\nLAB_00041254:\n          local_68 = local_68 + 1;\n        }\n        else {\n          mVar21 = *pmVar22;\n          *pmVar22 = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n      pmVar18 = Bp[iVar33 - uVar6 & (uint)local_74];\n      fft_l[nprime * 2] = (int *)(uVar6 + 1);\n      puVar19 = pmVar18 + (int)B;\n      iVar30 = iVar9;\n      ppiVar36 = fft_l + (int)B;\n      do {\n        iVar30 = iVar30 + -1;\n        if (iVar30 < 0) goto LAB_000412a0;\n        piVar13 = (int *)*puVar19;\n        piVar31 = *ppiVar36;\n        puVar19 = puVar19 + -1;\n        ppiVar36 = ppiVar36 + -1;\n      } while (piVar13 == piVar31);\n      if (piVar31 < piVar13) {\n        mVar21 = *pmVar38;\n        *pmVar38 = mVar21 - 1;\n        if (mVar21 == 0) {\n          if ((int)pmVar17 + 1 < 2) {\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }\n          else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }\n        }\n        mVar21 = *pmVar37;\n        *pmVar37 = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;\n          if (iVar30 < 2) {\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }\n          mVar21 = pmVar37[1];\n          pmVar37[1] = mVar21 - 1;\n          if (mVar21 == 0) {\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }\n        }\n      }\nLAB_000412a0:\n      pmVar38 = pmVar38 + -nprime;\n      pmVar22 = pmVar22 + -nprime;\n      pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n      pmVar37 = pmVar37 + -nprime;\n      ppmVar35 = (mp_ptr *)(uVar6 - 1);\n    }" { (expression_statement "uVar6 = (uint)ppmVar35;" (assignment_expression "uVar6 = (uint)ppmVar35" identifier = (cast_expression "(uint)ppmVar35" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar30 = (*(code *)PTR___gmpn_add_n_00097334)\n                         (pmVar38,pmVar38,Bp[iVar33 - uVar6 & (uint)local_74],iVar9);" (assignment_expression "iVar30 = (*(code *)PTR___gmpn_add_n_00097334)\n                         (pmVar38,pmVar38,Bp[iVar33 - uVar6 & (uint)local_74],iVar9)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)\n                         (pmVar38,pmVar38,Bp[iVar33 - uVar6 & (uint)local_74],iVar9)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmVar38,pmVar38,Bp[iVar33 - uVar6 & (uint)local_74],iVar9)" ( identifier , identifier , (subscript_expression "Bp[iVar33 - uVar6 & (uint)local_74]" identifier [ (binary_expression "iVar33 - uVar6 & (uint)local_74" (binary_expression "iVar33 - uVar6" identifier - identifier) & (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier)) ]) , identifier )))) ;) (if_statement "if ((iVar30 != 0) && (mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0)) {\n        if ((int)pmVar17 - (int)B < 2) {\nLAB_00041254:\n          local_68 = local_68 + 1;\n        }\n        else {\n          mVar21 = *pmVar22;\n          *pmVar22 = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }" if (parenthesized_expression "((iVar30 != 0) && (mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0))" ( (binary_expression "(iVar30 != 0) && (mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0)" (parenthesized_expression "(iVar30 != 0)" ( (binary_expression "iVar30 != 0" identifier != number_literal) )) && (parenthesized_expression "(mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0)" ( (comma_expression "mVar21 = pmVar22[-1], pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0" (assignment_expression "mVar21 = pmVar22[-1]" identifier = (subscript_expression "pmVar22[-1]" identifier [ number_literal ])) , (comma_expression "pmVar22[-1] = mVar21 + 1, mVar21 + 1 == 0" (assignment_expression "pmVar22[-1] = mVar21 + 1" (subscript_expression "pmVar22[-1]" identifier [ number_literal ]) = (binary_expression "mVar21 + 1" identifier + number_literal)) , (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n        if ((int)pmVar17 - (int)B < 2) {\nLAB_00041254:\n          local_68 = local_68 + 1;\n        }\n        else {\n          mVar21 = *pmVar22;\n          *pmVar22 = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }" { (if_statement "if ((int)pmVar17 - (int)B < 2) {\nLAB_00041254:\n          local_68 = local_68 + 1;\n        }\n        else {\n          mVar21 = *pmVar22;\n          *pmVar22 = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }" if (parenthesized_expression "((int)pmVar17 - (int)B < 2)" ( (binary_expression "(int)pmVar17 - (int)B < 2" (binary_expression "(int)pmVar17 - (int)B" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) < number_literal) )) (compound_statement "{\nLAB_00041254:\n          local_68 = local_68 + 1;\n        }" { (labeled_statement "LAB_00041254:\n          local_68 = local_68 + 1;" statement_identifier : (expression_statement "local_68 = local_68 + 1;" (assignment_expression "local_68 = local_68 + 1" identifier = (binary_expression "local_68 + 1" identifier + number_literal)) ;)) }) (else_clause "else {\n          mVar21 = *pmVar22;\n          *pmVar22 = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }" else (compound_statement "{\n          mVar21 = *pmVar22;\n          *pmVar22 = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }" { (expression_statement "mVar21 = *pmVar22;" (assignment_expression "mVar21 = *pmVar22" identifier = (pointer_expression "*pmVar22" * identifier)) ;) (expression_statement "*pmVar22 = mVar21 + 1;" (assignment_expression "*pmVar22 = mVar21 + 1" (pointer_expression "*pmVar22" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (if_statement "if (mVar21 + 1 == 0) {\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }" if (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            iVar30 = 2;\n            pmVar18 = pmVar22;\n            do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);\n          }" { (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" identifier = number_literal) ;) (expression_statement "pmVar18 = pmVar22;" (assignment_expression "pmVar18 = pmVar22" identifier = identifier) ;) (do_statement "do {\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            } while (mVar21 + 1 == 0);" do (compound_statement "{\n              pmVar18 = pmVar18 + 1;\n              if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;\n              mVar21 = *pmVar18;\n              iVar30 = iVar30 + 1;\n              *pmVar18 = mVar21 + 1;\n            }" { (expression_statement "pmVar18 = pmVar18 + 1;" (assignment_expression "pmVar18 = pmVar18 + 1" identifier = (binary_expression "pmVar18 + 1" identifier + number_literal)) ;) (if_statement "if ((int)pmVar17 - (int)B == iVar30) goto LAB_00041254;" if (parenthesized_expression "((int)pmVar17 - (int)B == iVar30)" ( (binary_expression "(int)pmVar17 - (int)B == iVar30" (binary_expression "(int)pmVar17 - (int)B" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier)) == identifier) )) (goto_statement "goto LAB_00041254;" goto statement_identifier ;)) (expression_statement "mVar21 = *pmVar18;" (assignment_expression "mVar21 = *pmVar18" identifier = (pointer_expression "*pmVar18" * identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar18 = mVar21 + 1;" (assignment_expression "*pmVar18 = mVar21 + 1" (pointer_expression "*pmVar18" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) ;) })) }))) })) (expression_statement "pmVar18 = Bp[iVar33 - uVar6 & (uint)local_74];" (assignment_expression "pmVar18 = Bp[iVar33 - uVar6 & (uint)local_74]" identifier = (subscript_expression "Bp[iVar33 - uVar6 & (uint)local_74]" identifier [ (binary_expression "iVar33 - uVar6 & (uint)local_74" (binary_expression "iVar33 - uVar6" identifier - identifier) & (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier)) ])) ;) (expression_statement "fft_l[nprime * 2] = (int *)(uVar6 + 1);" (assignment_expression "fft_l[nprime * 2] = (int *)(uVar6 + 1)" (subscript_expression "fft_l[nprime * 2]" identifier [ (binary_expression "nprime * 2" identifier * number_literal) ]) = (cast_expression "(int *)(uVar6 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + 1)" ( (binary_expression "uVar6 + 1" identifier + number_literal) )))) ;) (expression_statement "puVar19 = pmVar18 + (int)B;" (assignment_expression "puVar19 = pmVar18 + (int)B" identifier = (binary_expression "pmVar18 + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar30 = iVar9;" (assignment_expression "iVar30 = iVar9" identifier = identifier) ;) (expression_statement "ppiVar36 = fft_l + (int)B;" (assignment_expression "ppiVar36 = fft_l + (int)B" identifier = (binary_expression "fft_l + (int)B" identifier + (cast_expression "(int)B" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (do_statement "do {\n        iVar30 = iVar30 + -1;\n        if (iVar30 < 0) goto LAB_000412a0;\n        piVar13 = (int *)*puVar19;\n        piVar31 = *ppiVar36;\n        puVar19 = puVar19 + -1;\n        ppiVar36 = ppiVar36 + -1;\n      } while (piVar13 == piVar31);" do (compound_statement "{\n        iVar30 = iVar30 + -1;\n        if (iVar30 < 0) goto LAB_000412a0;\n        piVar13 = (int *)*puVar19;\n        piVar31 = *ppiVar36;\n        puVar19 = puVar19 + -1;\n        ppiVar36 = ppiVar36 + -1;\n      }" { (expression_statement "iVar30 = iVar30 + -1;" (assignment_expression "iVar30 = iVar30 + -1" identifier = (binary_expression "iVar30 + -1" identifier + number_literal)) ;) (if_statement "if (iVar30 < 0) goto LAB_000412a0;" if (parenthesized_expression "(iVar30 < 0)" ( (binary_expression "iVar30 < 0" identifier < number_literal) )) (goto_statement "goto LAB_000412a0;" goto statement_identifier ;)) (expression_statement "piVar13 = (int *)*puVar19;" (assignment_expression "piVar13 = (int *)*puVar19" identifier = (cast_expression "(int *)*puVar19" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "piVar31 = *ppiVar36;" (assignment_expression "piVar31 = *ppiVar36" identifier = (pointer_expression "*ppiVar36" * identifier)) ;) (expression_statement "puVar19 = puVar19 + -1;" (assignment_expression "puVar19 = puVar19 + -1" identifier = (binary_expression "puVar19 + -1" identifier + number_literal)) ;) (expression_statement "ppiVar36 = ppiVar36 + -1;" (assignment_expression "ppiVar36 = ppiVar36 + -1" identifier = (binary_expression "ppiVar36 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar13 == piVar31)" ( (binary_expression "piVar13 == piVar31" identifier == identifier) )) ;) (if_statement "if (piVar31 < piVar13) {\n        mVar21 = *pmVar38;\n        *pmVar38 = mVar21 - 1;\n        if (mVar21 == 0) {\n          if ((int)pmVar17 + 1 < 2) {\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }\n          else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }\n        }\n        mVar21 = *pmVar37;\n        *pmVar37 = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;\n          if (iVar30 < 2) {\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }\n          mVar21 = pmVar37[1];\n          pmVar37[1] = mVar21 - 1;\n          if (mVar21 == 0) {\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }\n        }\n      }" if (parenthesized_expression "(piVar31 < piVar13)" ( (binary_expression "piVar31 < piVar13" identifier < identifier) )) (compound_statement "{\n        mVar21 = *pmVar38;\n        *pmVar38 = mVar21 - 1;\n        if (mVar21 == 0) {\n          if ((int)pmVar17 + 1 < 2) {\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }\n          else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }\n        }\n        mVar21 = *pmVar37;\n        *pmVar37 = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;\n          if (iVar30 < 2) {\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }\n          mVar21 = pmVar37[1];\n          pmVar37[1] = mVar21 - 1;\n          if (mVar21 == 0) {\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }\n        }\n      }" { (expression_statement "mVar21 = *pmVar38;" (assignment_expression "mVar21 = *pmVar38" identifier = (pointer_expression "*pmVar38" * identifier)) ;) (expression_statement "*pmVar38 = mVar21 - 1;" (assignment_expression "*pmVar38 = mVar21 - 1" (pointer_expression "*pmVar38" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (if_statement "if (mVar21 == 0) {\n          if ((int)pmVar17 + 1 < 2) {\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }\n          else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) (compound_statement "{\n          if ((int)pmVar17 + 1 < 2) {\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }\n          else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)pmVar17 + 1 < 2) {\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }\n          else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }" if (parenthesized_expression "((int)pmVar17 + 1 < 2)" ( (binary_expression "(int)pmVar17 + 1 < 2" (binary_expression "(int)pmVar17 + 1" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) < number_literal) )) (compound_statement "{\nLAB_000417cc:\n            local_68 = local_68 + -1;\n          }" { (labeled_statement "LAB_000417cc:\n            local_68 = local_68 + -1;" statement_identifier : (expression_statement "local_68 = local_68 + -1;" (assignment_expression "local_68 = local_68 + -1" identifier = (binary_expression "local_68 + -1" identifier + number_literal)) ;)) }) (else_clause "else {\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }" else (compound_statement "{\n            mVar21 = pmVar38[1];\n            pmVar38[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }\n          }" { (expression_statement "mVar21 = pmVar38[1];" (assignment_expression "mVar21 = pmVar38[1]" identifier = (subscript_expression "pmVar38[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar38[1] = mVar21 - 1;" (assignment_expression "pmVar38[1] = mVar21 - 1" (subscript_expression "pmVar38[1]" identifier [ number_literal ]) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (if_statement "if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }" if (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar30 = 2;\n              pmVar18 = pmVar38 + 2;\n              do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);\n            }" { (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" identifier = number_literal) ;) (expression_statement "pmVar18 = pmVar38 + 2;" (assignment_expression "pmVar18 = pmVar38 + 2" identifier = (binary_expression "pmVar38 + 2" identifier + number_literal)) ;) (do_statement "do {\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              } while (mVar21 == 0);" do (compound_statement "{\n                bVar1 = (int)pmVar17 + 1 == iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) goto LAB_000417cc;\n                mVar21 = *pmVar18;\n                *pmVar18 = mVar21 - 1;\n                pmVar18 = pmVar18 + 1;\n              }" { (expression_statement "bVar1 = (int)pmVar17 + 1 == iVar30;" (assignment_expression "bVar1 = (int)pmVar17 + 1 == iVar30" identifier = (binary_expression "(int)pmVar17 + 1 == iVar30" (binary_expression "(int)pmVar17 + 1" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) == identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_000417cc;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000417cc;" goto statement_identifier ;)) (expression_statement "mVar21 = *pmVar18;" (assignment_expression "mVar21 = *pmVar18" identifier = (pointer_expression "*pmVar18" * identifier)) ;) (expression_statement "*pmVar18 = mVar21 - 1;" (assignment_expression "*pmVar18 = mVar21 - 1" (pointer_expression "*pmVar18" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (expression_statement "pmVar18 = pmVar18 + 1;" (assignment_expression "pmVar18 = pmVar18 + 1" identifier = (binary_expression "pmVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) ;) })) }))) })) (expression_statement "mVar21 = *pmVar37;" (assignment_expression "mVar21 = *pmVar37" identifier = (pointer_expression "*pmVar37" * identifier)) ;) (expression_statement "*pmVar37 = mVar21 - 1;" (assignment_expression "*pmVar37 = mVar21 - 1" (pointer_expression "*pmVar37" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (if_statement "if (mVar21 == 0) {\n          iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;\n          if (iVar30 < 2) {\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }\n          mVar21 = pmVar37[1];\n          pmVar37[1] = mVar21 - 1;\n          if (mVar21 == 0) {\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }\n        }" if (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;\n          if (iVar30 < 2) {\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }\n          mVar21 = pmVar37[1];\n          pmVar37[1] = mVar21 - 1;\n          if (mVar21 == 0) {\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }\n        }" { (expression_statement "iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17;" (assignment_expression "iVar30 = ((iVar42 + 1) - (int)pmVar34) + (int)pmVar17" identifier = (binary_expression "((iVar42 + 1) - (int)pmVar34) + (int)pmVar17" (parenthesized_expression "((iVar42 + 1) - (int)pmVar34)" ( (binary_expression "(iVar42 + 1) - (int)pmVar34" (parenthesized_expression "(iVar42 + 1)" ( (binary_expression "iVar42 + 1" identifier + number_literal) )) - (cast_expression "(int)pmVar34" ( (type_descriptor "int" primitive_type) ) identifier)) )) + (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (iVar30 < 2) {\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }" if (parenthesized_expression "(iVar30 < 2)" ( (binary_expression "iVar30 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00041838:\n            pmVar38 = pmVar38 + -nprime;\n            pmVar22 = pmVar22 + -nprime;\n            local_68 = local_68 + -1;\n            pmVar17 = (mp_ptr)((int)pmVar17 + nprime);\n            pmVar37 = pmVar37 + -nprime;\n            ppmVar35 = (mp_ptr *)(uVar6 - 1);\n            if (uVar6 - 1 == 0xffffffff) break;\n            goto LAB_000411b8;\n          }" { (labeled_statement "LAB_00041838:\n            pmVar38 = pmVar38 + -nprime;" statement_identifier : (expression_statement "pmVar38 = pmVar38 + -nprime;" (assignment_expression "pmVar38 = pmVar38 + -nprime" identifier = (binary_expression "pmVar38 + -nprime" identifier + (unary_expression "-nprime" - identifier))) ;)) (expression_statement "pmVar22 = pmVar22 + -nprime;" (assignment_expression "pmVar22 = pmVar22 + -nprime" identifier = (binary_expression "pmVar22 + -nprime" identifier + (unary_expression "-nprime" - identifier))) ;) (expression_statement "local_68 = local_68 + -1;" (assignment_expression "local_68 = local_68 + -1" identifier = (binary_expression "local_68 + -1" identifier + number_literal)) ;) (expression_statement "pmVar17 = (mp_ptr)((int)pmVar17 + nprime);" (assignment_expression "pmVar17 = (mp_ptr)((int)pmVar17 + nprime)" identifier = (call_expression "(mp_ptr)((int)pmVar17 + nprime)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar17 + nprime)" ( (binary_expression "(int)pmVar17 + nprime" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "pmVar37 = pmVar37 + -nprime;" (assignment_expression "pmVar37 = pmVar37 + -nprime" identifier = (binary_expression "pmVar37 + -nprime" identifier + (unary_expression "-nprime" - identifier))) ;) (expression_statement "ppmVar35 = (mp_ptr *)(uVar6 - 1);" (assignment_expression "ppmVar35 = (mp_ptr *)(uVar6 - 1)" identifier = (cast_expression "(mp_ptr *)(uVar6 - 1)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) )))) ;) (if_statement "if (uVar6 - 1 == 0xffffffff) break;" if (parenthesized_expression "(uVar6 - 1 == 0xffffffff)" ( (binary_expression "uVar6 - 1 == 0xffffffff" (binary_expression "uVar6 - 1" identifier - number_literal) == number_literal) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_000411b8;" goto statement_identifier ;) })) (expression_statement "mVar21 = pmVar37[1];" (assignment_expression "mVar21 = pmVar37[1]" identifier = (subscript_expression "pmVar37[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar37[1] = mVar21 - 1;" (assignment_expression "pmVar37[1] = mVar21 - 1" (subscript_expression "pmVar37[1]" identifier [ number_literal ]) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (if_statement "if (mVar21 == 0) {\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }" if (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar43 = 2;\n            pmVar18 = pmVar37 + 2;\n            do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);\n          }" { (expression_statement "iVar43 = 2;" (assignment_expression "iVar43 = 2" identifier = number_literal) ;) (expression_statement "pmVar18 = pmVar37 + 2;" (assignment_expression "pmVar18 = pmVar37 + 2" identifier = (binary_expression "pmVar37 + 2" identifier + number_literal)) ;) (do_statement "do {\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            } while (mVar21 == 0);" do (compound_statement "{\n              if (iVar43 == iVar30) goto LAB_00041838;\n              mVar21 = *pmVar18;\n              iVar43 = iVar43 + 1;\n              *pmVar18 = mVar21 - 1;\n              pmVar18 = pmVar18 + 1;\n            }" { (if_statement "if (iVar43 == iVar30) goto LAB_00041838;" if (parenthesized_expression "(iVar43 == iVar30)" ( (binary_expression "iVar43 == iVar30" identifier == identifier) )) (goto_statement "goto LAB_00041838;" goto statement_identifier ;)) (expression_statement "mVar21 = *pmVar18;" (assignment_expression "mVar21 = *pmVar18" identifier = (pointer_expression "*pmVar18" * identifier)) ;) (expression_statement "iVar43 = iVar43 + 1;" (assignment_expression "iVar43 = iVar43 + 1" identifier = (binary_expression "iVar43 + 1" identifier + number_literal)) ;) (expression_statement "*pmVar18 = mVar21 - 1;" (assignment_expression "*pmVar18 = mVar21 - 1" (pointer_expression "*pmVar18" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (expression_statement "pmVar18 = pmVar18 + 1;" (assignment_expression "pmVar18 = pmVar18 + 1" identifier = (binary_expression "pmVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) ;) })) })) })) (labeled_statement "LAB_000412a0:\n      pmVar38 = pmVar38 + -nprime;" statement_identifier : (expression_statement "pmVar38 = pmVar38 + -nprime;" (assignment_expression "pmVar38 = pmVar38 + -nprime" identifier = (binary_expression "pmVar38 + -nprime" identifier + (unary_expression "-nprime" - identifier))) ;)) (expression_statement "pmVar22 = pmVar22 + -nprime;" (assignment_expression "pmVar22 = pmVar22 + -nprime" identifier = (binary_expression "pmVar22 + -nprime" identifier + (unary_expression "-nprime" - identifier))) ;) (expression_statement "pmVar17 = (mp_ptr)((int)pmVar17 + nprime);" (assignment_expression "pmVar17 = (mp_ptr)((int)pmVar17 + nprime)" identifier = (call_expression "(mp_ptr)((int)pmVar17 + nprime)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "((int)pmVar17 + nprime)" ( (binary_expression "(int)pmVar17 + nprime" (cast_expression "(int)pmVar17" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "pmVar37 = pmVar37 + -nprime;" (assignment_expression "pmVar37 = pmVar37 + -nprime" identifier = (binary_expression "pmVar37 + -nprime" identifier + (unary_expression "-nprime" - identifier))) ;) (expression_statement "ppmVar35 = (mp_ptr *)(uVar6 - 1);" (assignment_expression "ppmVar35 = (mp_ptr *)(uVar6 - 1)" identifier = (cast_expression "(mp_ptr *)(uVar6 - 1)" ( (type_descriptor "mp_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 - 1)" ( (binary_expression "uVar6 - 1" identifier - number_literal) )))) ;) }) while (parenthesized_expression "(uVar6 - 1 != 0xffffffff)" ( (binary_expression "uVar6 - 1 != 0xffffffff" (binary_expression "uVar6 - 1" identifier - number_literal) != number_literal) )) ;)) (if_statement "if (local_68 == uVar6 - 1) {\n      iVar30 = iVar24 - pl;\n      pmVar17 = A + iVar30;\n      mVar21 = *pmVar17;\n      *pmVar17 = mVar21 + 1;\n      if (mVar21 + 1 == 0) {\n        if (pl < 2) {\n          pmVar17 = A + iVar30 + -1;\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          if ((mVar21 == 0) && (pl == 1)) {\n            mVar21 = pmVar17[1];\nLAB_00041a38:\n            pmVar17[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }\n          }\nLAB_00041a74:\n          A[(int)pmVar28] = A[(int)pmVar28] - 1;\n        }\n        else {\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n    }\n    else if (local_68 == 1) {\n      if (iVar24 < iVar7) {\n        pmVar17 = A + (iVar24 - pl);\n        mVar21 = *pmVar17;\n        *pmVar17 = mVar21 - 1;\n        if (((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)) {\n          iVar30 = 2;\n          pmVar17 = pmVar17 + 2;\n          do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n        }\n      }\n      else {\n        pmVar17 = A + iVar24 + pl * -2;\n        while( true ) {\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }\n      }\n    }" if (parenthesized_expression "(local_68 == uVar6 - 1)" ( (binary_expression "local_68 == uVar6 - 1" identifier == (binary_expression "uVar6 - 1" identifier - number_literal)) )) (compound_statement "{\n      iVar30 = iVar24 - pl;\n      pmVar17 = A + iVar30;\n      mVar21 = *pmVar17;\n      *pmVar17 = mVar21 + 1;\n      if (mVar21 + 1 == 0) {\n        if (pl < 2) {\n          pmVar17 = A + iVar30 + -1;\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          if ((mVar21 == 0) && (pl == 1)) {\n            mVar21 = pmVar17[1];\nLAB_00041a38:\n            pmVar17[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }\n          }\nLAB_00041a74:\n          A[(int)pmVar28] = A[(int)pmVar28] - 1;\n        }\n        else {\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }\n    }" { (expression_statement "iVar30 = iVar24 - pl;" (assignment_expression "iVar30 = iVar24 - pl" identifier = (binary_expression "iVar24 - pl" identifier - identifier)) ;) (expression_statement "pmVar17 = A + iVar30;" (assignment_expression "pmVar17 = A + iVar30" identifier = (binary_expression "A + iVar30" identifier + identifier)) ;) (expression_statement "mVar21 = *pmVar17;" (assignment_expression "mVar21 = *pmVar17" identifier = (pointer_expression "*pmVar17" * identifier)) ;) (expression_statement "*pmVar17 = mVar21 + 1;" (assignment_expression "*pmVar17 = mVar21 + 1" (pointer_expression "*pmVar17" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (if_statement "if (mVar21 + 1 == 0) {\n        if (pl < 2) {\n          pmVar17 = A + iVar30 + -1;\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          if ((mVar21 == 0) && (pl == 1)) {\n            mVar21 = pmVar17[1];\nLAB_00041a38:\n            pmVar17[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }\n          }\nLAB_00041a74:\n          A[(int)pmVar28] = A[(int)pmVar28] - 1;\n        }\n        else {\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }" if (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n        if (pl < 2) {\n          pmVar17 = A + iVar30 + -1;\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          if ((mVar21 == 0) && (pl == 1)) {\n            mVar21 = pmVar17[1];\nLAB_00041a38:\n            pmVar17[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }\n          }\nLAB_00041a74:\n          A[(int)pmVar28] = A[(int)pmVar28] - 1;\n        }\n        else {\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }\n      }" { (if_statement "if (pl < 2) {\n          pmVar17 = A + iVar30 + -1;\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          if ((mVar21 == 0) && (pl == 1)) {\n            mVar21 = pmVar17[1];\nLAB_00041a38:\n            pmVar17[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }\n          }\nLAB_00041a74:\n          A[(int)pmVar28] = A[(int)pmVar28] - 1;\n        }\n        else {\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }" if (parenthesized_expression "(pl < 2)" ( (binary_expression "pl < 2" identifier < number_literal) )) (compound_statement "{\n          pmVar17 = A + iVar30 + -1;\n          mVar21 = *pmVar17;\n          *pmVar17 = mVar21 - 1;\n          if ((mVar21 == 0) && (pl == 1)) {\n            mVar21 = pmVar17[1];\nLAB_00041a38:\n            pmVar17[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }\n          }\nLAB_00041a74:\n          A[(int)pmVar28] = A[(int)pmVar28] - 1;\n        }" { (expression_statement "pmVar17 = A + iVar30 + -1;" (assignment_expression "pmVar17 = A + iVar30 + -1" identifier = (binary_expression "A + iVar30 + -1" (binary_expression "A + iVar30" identifier + identifier) + number_literal)) ;) (expression_statement "mVar21 = *pmVar17;" (assignment_expression "mVar21 = *pmVar17" identifier = (pointer_expression "*pmVar17" * identifier)) ;) (expression_statement "*pmVar17 = mVar21 - 1;" (assignment_expression "*pmVar17 = mVar21 - 1" (pointer_expression "*pmVar17" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (if_statement "if ((mVar21 == 0) && (pl == 1)) {\n            mVar21 = pmVar17[1];\nLAB_00041a38:\n            pmVar17[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }\n          }" if (parenthesized_expression "((mVar21 == 0) && (pl == 1))" ( (binary_expression "(mVar21 == 0) && (pl == 1)" (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) && (parenthesized_expression "(pl == 1)" ( (binary_expression "pl == 1" identifier == number_literal) ))) )) (compound_statement "{\n            mVar21 = pmVar17[1];\nLAB_00041a38:\n            pmVar17[1] = mVar21 - 1;\n            if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }\n          }" { (expression_statement "mVar21 = pmVar17[1];" (assignment_expression "mVar21 = pmVar17[1]" identifier = (subscript_expression "pmVar17[1]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00041a38:\n            pmVar17[1] = mVar21 - 1;" statement_identifier : (expression_statement "pmVar17[1] = mVar21 - 1;" (assignment_expression "pmVar17[1] = mVar21 - 1" (subscript_expression "pmVar17[1]" identifier [ number_literal ]) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;)) (if_statement "if (mVar21 == 0) {\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }" if (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar30 = 2;\n              pmVar17 = pmVar17 + 2;\n              do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);\n            }" { (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" identifier = number_literal) ;) (expression_statement "pmVar17 = pmVar17 + 2;" (assignment_expression "pmVar17 = pmVar17 + 2" identifier = (binary_expression "pmVar17 + 2" identifier + number_literal)) ;) (do_statement "do {\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              } while (mVar21 == 0);" do (compound_statement "{\n                bVar1 = pl < iVar30;\n                iVar30 = iVar30 + 1;\n                if (bVar1) break;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                pmVar17 = pmVar17 + 1;\n              }" { (expression_statement "bVar1 = pl < iVar30;" (assignment_expression "bVar1 = pl < iVar30" identifier = (binary_expression "pl < iVar30" identifier < identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) break;" if (parenthesized_expression "(bVar1)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "mVar21 = *pmVar17;" (assignment_expression "mVar21 = *pmVar17" identifier = (pointer_expression "*pmVar17" * identifier)) ;) (expression_statement "*pmVar17 = mVar21 - 1;" (assignment_expression "*pmVar17 = mVar21 - 1" (pointer_expression "*pmVar17" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (expression_statement "pmVar17 = pmVar17 + 1;" (assignment_expression "pmVar17 = pmVar17 + 1" identifier = (binary_expression "pmVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) ;) })) })) (labeled_statement "LAB_00041a74:\n          A[(int)pmVar28] = A[(int)pmVar28] - 1;" statement_identifier : (expression_statement "A[(int)pmVar28] = A[(int)pmVar28] - 1;" (assignment_expression "A[(int)pmVar28] = A[(int)pmVar28] - 1" (subscript_expression "A[(int)pmVar28]" identifier [ (cast_expression "(int)pmVar28" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "A[(int)pmVar28] - 1" (subscript_expression "A[(int)pmVar28]" identifier [ (cast_expression "(int)pmVar28" ( (type_descriptor "int" primitive_type) ) identifier) ]) - number_literal)) ;)) }) (else_clause "else {\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }" else (compound_statement "{\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 == 0) {\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }\n        }" { (expression_statement "mVar21 = pmVar17[1];" (assignment_expression "mVar21 = pmVar17[1]" identifier = (subscript_expression "pmVar17[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar17[1] = mVar21 + 1;" (assignment_expression "pmVar17[1] = mVar21 + 1" (subscript_expression "pmVar17[1]" identifier [ number_literal ]) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (if_statement "if (mVar21 + 1 == 0) {\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }" if (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            iVar33 = 2;\n            pmVar17 = pmVar17 + 2;\n            do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);\n          }" { (expression_statement "iVar33 = 2;" (assignment_expression "iVar33 = 2" identifier = number_literal) ;) (expression_statement "pmVar17 = pmVar17 + 2;" (assignment_expression "pmVar17 = pmVar17 + 2" identifier = (binary_expression "pmVar17 + 2" identifier + number_literal)) ;) (do_statement "do {\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            } while (mVar21 + 1 == 0);" do (compound_statement "{\n              bVar1 = pl == iVar33;\n              iVar33 = iVar33 + 1;\n              if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }\n              mVar21 = *pmVar17;\n              *pmVar17 = mVar21 + 1;\n              pmVar17 = pmVar17 + 1;\n            }" { (expression_statement "bVar1 = pl == iVar33;" (assignment_expression "bVar1 = pl == iVar33" identifier = (binary_expression "pl == iVar33" identifier == identifier)) ;) (expression_statement "iVar33 = iVar33 + 1;" (assignment_expression "iVar33 = iVar33 + 1" identifier = (binary_expression "iVar33 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) {\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n                pmVar17 = A + iVar30 + -1;\n                mVar21 = *pmVar17;\n                *pmVar17 = mVar21 - 1;\n                if (mVar21 != 0) goto LAB_00041a74;\n                mVar21 = pmVar17[1];\n                goto LAB_00041a38;\n              }" { (expression_statement "pmVar17 = A + iVar30 + -1;" (assignment_expression "pmVar17 = A + iVar30 + -1" identifier = (binary_expression "A + iVar30 + -1" (binary_expression "A + iVar30" identifier + identifier) + number_literal)) ;) (expression_statement "mVar21 = *pmVar17;" (assignment_expression "mVar21 = *pmVar17" identifier = (pointer_expression "*pmVar17" * identifier)) ;) (expression_statement "*pmVar17 = mVar21 - 1;" (assignment_expression "*pmVar17 = mVar21 - 1" (pointer_expression "*pmVar17" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (if_statement "if (mVar21 != 0) goto LAB_00041a74;" if (parenthesized_expression "(mVar21 != 0)" ( (binary_expression "mVar21 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00041a74;" goto statement_identifier ;)) (expression_statement "mVar21 = pmVar17[1];" (assignment_expression "mVar21 = pmVar17[1]" identifier = (subscript_expression "pmVar17[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00041a38;" goto statement_identifier ;) })) (expression_statement "mVar21 = *pmVar17;" (assignment_expression "mVar21 = *pmVar17" identifier = (pointer_expression "*pmVar17" * identifier)) ;) (expression_statement "*pmVar17 = mVar21 + 1;" (assignment_expression "*pmVar17 = mVar21 + 1" (pointer_expression "*pmVar17" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (expression_statement "pmVar17 = pmVar17 + 1;" (assignment_expression "pmVar17 = pmVar17 + 1" identifier = (binary_expression "pmVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) ;) })) }))) })) }) (else_clause "else if (local_68 == 1) {\n      if (iVar24 < iVar7) {\n        pmVar17 = A + (iVar24 - pl);\n        mVar21 = *pmVar17;\n        *pmVar17 = mVar21 - 1;\n        if (((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)) {\n          iVar30 = 2;\n          pmVar17 = pmVar17 + 2;\n          do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n        }\n      }\n      else {\n        pmVar17 = A + iVar24 + pl * -2;\n        while( true ) {\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }\n      }\n    }" else (if_statement "if (local_68 == 1) {\n      if (iVar24 < iVar7) {\n        pmVar17 = A + (iVar24 - pl);\n        mVar21 = *pmVar17;\n        *pmVar17 = mVar21 - 1;\n        if (((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)) {\n          iVar30 = 2;\n          pmVar17 = pmVar17 + 2;\n          do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n        }\n      }\n      else {\n        pmVar17 = A + iVar24 + pl * -2;\n        while( true ) {\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }\n      }\n    }" if (parenthesized_expression "(local_68 == 1)" ( (binary_expression "local_68 == 1" identifier == number_literal) )) (compound_statement "{\n      if (iVar24 < iVar7) {\n        pmVar17 = A + (iVar24 - pl);\n        mVar21 = *pmVar17;\n        *pmVar17 = mVar21 - 1;\n        if (((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)) {\n          iVar30 = 2;\n          pmVar17 = pmVar17 + 2;\n          do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n        }\n      }\n      else {\n        pmVar17 = A + iVar24 + pl * -2;\n        while( true ) {\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }\n      }\n    }" { (if_statement "if (iVar24 < iVar7) {\n        pmVar17 = A + (iVar24 - pl);\n        mVar21 = *pmVar17;\n        *pmVar17 = mVar21 - 1;\n        if (((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)) {\n          iVar30 = 2;\n          pmVar17 = pmVar17 + 2;\n          do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n        }\n      }\n      else {\n        pmVar17 = A + iVar24 + pl * -2;\n        while( true ) {\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }\n      }" if (parenthesized_expression "(iVar24 < iVar7)" ( (binary_expression "iVar24 < iVar7" identifier < identifier) )) (compound_statement "{\n        pmVar17 = A + (iVar24 - pl);\n        mVar21 = *pmVar17;\n        *pmVar17 = mVar21 - 1;\n        if (((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)) {\n          iVar30 = 2;\n          pmVar17 = pmVar17 + 2;\n          do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n        }\n      }" { (expression_statement "pmVar17 = A + (iVar24 - pl);" (assignment_expression "pmVar17 = A + (iVar24 - pl)" identifier = (binary_expression "A + (iVar24 - pl)" identifier + (parenthesized_expression "(iVar24 - pl)" ( (binary_expression "iVar24 - pl" identifier - identifier) )))) ;) (expression_statement "mVar21 = *pmVar17;" (assignment_expression "mVar21 = *pmVar17" identifier = (pointer_expression "*pmVar17" * identifier)) ;) (expression_statement "*pmVar17 = mVar21 - 1;" (assignment_expression "*pmVar17 = mVar21 - 1" (pointer_expression "*pmVar17" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (if_statement "if (((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)) {\n          iVar30 = 2;\n          pmVar17 = pmVar17 + 2;\n          do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n        }" if (parenthesized_expression "(((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0))" ( (binary_expression "((mVar21 == 0) && (1 < pl)) &&\n           (mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)" (parenthesized_expression "((mVar21 == 0) && (1 < pl))" ( (binary_expression "(mVar21 == 0) && (1 < pl)" (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) && (parenthesized_expression "(1 < pl)" ( (binary_expression "1 < pl" number_literal < identifier) ))) )) && (parenthesized_expression "(mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0)" ( (comma_expression "mVar21 = pmVar17[1], pmVar17[1] = mVar21 - 1, mVar21 == 0" (assignment_expression "mVar21 = pmVar17[1]" identifier = (subscript_expression "pmVar17[1]" identifier [ number_literal ])) , (comma_expression "pmVar17[1] = mVar21 - 1, mVar21 == 0" (assignment_expression "pmVar17[1] = mVar21 - 1" (subscript_expression "pmVar17[1]" identifier [ number_literal ]) = (binary_expression "mVar21 - 1" identifier - number_literal)) , (binary_expression "mVar21 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n          iVar30 = 2;\n          pmVar17 = pmVar17 + 2;\n          do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);\n        }" { (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" identifier = number_literal) ;) (expression_statement "pmVar17 = pmVar17 + 2;" (assignment_expression "pmVar17 = pmVar17 + 2" identifier = (binary_expression "pmVar17 + 2" identifier + number_literal)) ;) (do_statement "do {\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          } while (mVar21 == 0);" do (compound_statement "{\n            bVar1 = pl == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) break;\n            mVar21 = *pmVar17;\n            *pmVar17 = mVar21 - 1;\n            pmVar17 = pmVar17 + 1;\n          }" { (expression_statement "bVar1 = pl == iVar30;" (assignment_expression "bVar1 = pl == iVar30" identifier = (binary_expression "pl == iVar30" identifier == identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) break;" if (parenthesized_expression "(bVar1)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "mVar21 = *pmVar17;" (assignment_expression "mVar21 = *pmVar17" identifier = (pointer_expression "*pmVar17" * identifier)) ;) (expression_statement "*pmVar17 = mVar21 - 1;" (assignment_expression "*pmVar17 = mVar21 - 1" (pointer_expression "*pmVar17" * identifier) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (expression_statement "pmVar17 = pmVar17 + 1;" (assignment_expression "pmVar17 = pmVar17 + 1" identifier = (binary_expression "pmVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) ;) })) }) (else_clause "else {\n        pmVar17 = A + iVar24 + pl * -2;\n        while( true ) {\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }\n      }" else (compound_statement "{\n        pmVar17 = A + iVar24 + pl * -2;\n        while( true ) {\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }\n      }" { (expression_statement "pmVar17 = A + iVar24 + pl * -2;" (assignment_expression "pmVar17 = A + iVar24 + pl * -2" identifier = (binary_expression "A + iVar24 + pl * -2" (binary_expression "A + iVar24" identifier + identifier) + (binary_expression "pl * -2" identifier * number_literal))) ;) (while_statement "while( true ) {\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          mVar21 = *pmVar17;\n          do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);\n          mVar21 = pmVar17[1];\n          pmVar17[1] = mVar21 + 1;\n          if (mVar21 + 1 != 0) break;\n          iVar30 = 2;\n          pmVar28 = pmVar17 + 2;\n          while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }\n        }" { (expression_statement "mVar21 = *pmVar17;" (assignment_expression "mVar21 = *pmVar17" identifier = (pointer_expression "*pmVar17" * identifier)) ;) (do_statement "do {\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          } while (iVar7 < 2);" do (compound_statement "{\n            *pmVar17 = mVar21 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n            mVar21 = 0;\n          }" { (expression_statement "*pmVar17 = mVar21 + 1;" (assignment_expression "*pmVar17 = mVar21 + 1" (pointer_expression "*pmVar17" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (if_statement "if (mVar21 + 1 != 0) goto LAB_000412d8;" if (parenthesized_expression "(mVar21 + 1 != 0)" ( (binary_expression "mVar21 + 1 != 0" (binary_expression "mVar21 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_000412d8;" goto statement_identifier ;)) (expression_statement "mVar21 = 0;" (assignment_expression "mVar21 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(iVar7 < 2)" ( (binary_expression "iVar7 < 2" identifier < number_literal) )) ;) (expression_statement "mVar21 = pmVar17[1];" (assignment_expression "mVar21 = pmVar17[1]" identifier = (subscript_expression "pmVar17[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar17[1] = mVar21 + 1;" (assignment_expression "pmVar17[1] = mVar21 + 1" (subscript_expression "pmVar17[1]" identifier [ number_literal ]) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (if_statement "if (mVar21 + 1 != 0) break;" if (parenthesized_expression "(mVar21 + 1 != 0)" ( (binary_expression "mVar21 + 1 != 0" (binary_expression "mVar21 + 1" identifier + number_literal) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" identifier = number_literal) ;) (expression_statement "pmVar28 = pmVar17 + 2;" (assignment_expression "pmVar28 = pmVar17 + 2" identifier = (binary_expression "pmVar17 + 2" identifier + number_literal)) ;) (while_statement "while (bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1) {\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }" while (parenthesized_expression "(bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1)" ( (comma_expression "bVar1 = iVar30 != iVar7, iVar30 = iVar30 + 1, bVar1" (assignment_expression "bVar1 = iVar30 != iVar7" identifier = (binary_expression "iVar30 != iVar7" identifier != identifier)) , (comma_expression "iVar30 = iVar30 + 1, bVar1" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) , identifier)) )) (compound_statement "{\n            mVar21 = *pmVar28;\n            *pmVar28 = mVar21 + 1;\n            pmVar28 = pmVar28 + 1;\n            if (mVar21 + 1 != 0) goto LAB_000412d8;\n          }" { (expression_statement "mVar21 = *pmVar28;" (assignment_expression "mVar21 = *pmVar28" identifier = (pointer_expression "*pmVar28" * identifier)) ;) (expression_statement "*pmVar28 = mVar21 + 1;" (assignment_expression "*pmVar28 = mVar21 + 1" (pointer_expression "*pmVar28" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (expression_statement "pmVar28 = pmVar28 + 1;" (assignment_expression "pmVar28 = pmVar28 + 1" identifier = (binary_expression "pmVar28 + 1" identifier + number_literal)) ;) (if_statement "if (mVar21 + 1 != 0) goto LAB_000412d8;" if (parenthesized_expression "(mVar21 + 1 != 0)" ( (binary_expression "mVar21 + 1 != 0" (binary_expression "mVar21 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_000412d8;" goto statement_identifier ;)) })) })) }))) })))) })) (labeled_statement "LAB_000412d8:\n  iVar30 = iVar24 + pl * -2;" statement_identifier : (expression_statement "iVar30 = iVar24 + pl * -2;" (assignment_expression "iVar30 = iVar24 + pl * -2" identifier = (binary_expression "iVar24 + pl * -2" identifier + (binary_expression "pl * -2" identifier * number_literal))) ;)) (if_statement "if (iVar30 < 1) {\n    if (pl != 0) {\n      iVar33 = pl + -1;\n      mVar21 = *A;\n      pmVar23 = op;\n      pmVar3 = A;\n      if (iVar33 == 0) {\n        *op = mVar21;\n      }\n      else {\n        do {\n          *pmVar23 = mVar21;\n          iVar33 = iVar33 + -1;\n          mVar21 = pmVar3[1];\n          pmVar23 = pmVar23 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (iVar33 != 0);\n        op[pl + -1] = mVar21;\n      }\n    }\n    uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl + iVar30);\n    pmVar28 = op + pl + iVar30;\n    uVar26 = *pmVar28;\n    pmVar17 = (mp_ptr)(uVar26 - uVar6);\n    *pmVar28 = (mp_limb_t)pmVar17;\n    if (uVar26 < uVar6) {\n      if (iVar7 - iVar24 < 2) {\nLAB_000413d8:\n        mVar21 = *op;\n        *op = mVar21 + 1;\n        if (mVar21 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        mVar21 = pmVar28[1];\n        pmVar28[1] = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = 2;\n          pmVar28 = pmVar28 + 2;\n          do {\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          } while (mVar27 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar6 = (*(code *)PTR___gmpn_add_n_00097334)(op,A,A + pl * 2,iVar30);\n    puVar41 = A + iVar30;\n    puVar19 = op + iVar30;\n    iVar30 = pl - iVar30;\n    uVar26 = *puVar41;\n    *puVar19 = uVar6 + uVar26;\n    if (uVar6 + uVar26 < uVar6) {\n      if (iVar30 < 2) {\nLAB_00041994:\n        mVar21 = 1;\n      }\n      else {\n        uVar6 = puVar41[1];\n        puVar19[1] = uVar6 + 1;\n        if (uVar6 + 1 == 0) {\n          puVar32 = puVar41 + 2;\n          iVar33 = 2;\n          puVar20 = puVar19 + 2;\n          do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);\n        }\n        else {\n          iVar33 = 2;\n        }\n        if ((puVar19 == puVar41) || (iVar30 <= iVar33)) goto LAB_00041acc;\n        puVar20 = puVar41 + iVar33;\n        puVar19 = puVar19 + iVar33;\n        do {\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n          puVar19 = puVar19 + 1;\n        } while (puVar20 != puVar41 + iVar30);\n        mVar21 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar41) && (puVar20 = puVar41 + 1, 1 < iVar30)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n        } while (puVar41 + iVar30 != puVar20);\n      }\nLAB_00041acc:\n      mVar21 = 0;\n    }\n    pmVar17 = op;\n    uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl);\n    uVar26 = op[pl];\n    op[pl] = uVar26 - uVar6;\n    if ((uVar6 <= uVar26) || (mVar21 = mVar21 - 1, mVar21 != 0xffffffff)) goto LAB_000418b4;\n    mVar21 = *op;\n    *op = mVar21 + 1;\n    if (mVar21 + 1 != 0) {\n      mVar21 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if (pl < 2) {\nLAB_00041438:\n      mVar21 = 1;\n      goto LAB_000418b4;\n    }\n    mVar21 = op[1];\n    op[1] = mVar21 + 1;\n    if (mVar21 + 1 == 0) {\n      iVar30 = 2;\n      pmVar28 = op + 2;\n      do {\n        bVar1 = pl == iVar30;\n        iVar30 = iVar30 + 1;\n        pmVar17 = (mp_ptr)pl;\n        if (bVar1) goto LAB_00041438;\n        mVar21 = *pmVar28;\n        *pmVar28 = mVar21 + 1;\n        pmVar28 = pmVar28 + 1;\n      } while (mVar21 + 1 == 0);\n    }\n  }" if (parenthesized_expression "(iVar30 < 1)" ( (binary_expression "iVar30 < 1" identifier < number_literal) )) (compound_statement "{\n    if (pl != 0) {\n      iVar33 = pl + -1;\n      mVar21 = *A;\n      pmVar23 = op;\n      pmVar3 = A;\n      if (iVar33 == 0) {\n        *op = mVar21;\n      }\n      else {\n        do {\n          *pmVar23 = mVar21;\n          iVar33 = iVar33 + -1;\n          mVar21 = pmVar3[1];\n          pmVar23 = pmVar23 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (iVar33 != 0);\n        op[pl + -1] = mVar21;\n      }\n    }\n    uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl + iVar30);\n    pmVar28 = op + pl + iVar30;\n    uVar26 = *pmVar28;\n    pmVar17 = (mp_ptr)(uVar26 - uVar6);\n    *pmVar28 = (mp_limb_t)pmVar17;\n    if (uVar26 < uVar6) {\n      if (iVar7 - iVar24 < 2) {\nLAB_000413d8:\n        mVar21 = *op;\n        *op = mVar21 + 1;\n        if (mVar21 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        mVar21 = pmVar28[1];\n        pmVar28[1] = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = 2;\n          pmVar28 = pmVar28 + 2;\n          do {\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          } while (mVar27 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }" { (if_statement "if (pl != 0) {\n      iVar33 = pl + -1;\n      mVar21 = *A;\n      pmVar23 = op;\n      pmVar3 = A;\n      if (iVar33 == 0) {\n        *op = mVar21;\n      }\n      else {\n        do {\n          *pmVar23 = mVar21;\n          iVar33 = iVar33 + -1;\n          mVar21 = pmVar3[1];\n          pmVar23 = pmVar23 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (iVar33 != 0);\n        op[pl + -1] = mVar21;\n      }\n    }" if (parenthesized_expression "(pl != 0)" ( (binary_expression "pl != 0" identifier != number_literal) )) (compound_statement "{\n      iVar33 = pl + -1;\n      mVar21 = *A;\n      pmVar23 = op;\n      pmVar3 = A;\n      if (iVar33 == 0) {\n        *op = mVar21;\n      }\n      else {\n        do {\n          *pmVar23 = mVar21;\n          iVar33 = iVar33 + -1;\n          mVar21 = pmVar3[1];\n          pmVar23 = pmVar23 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (iVar33 != 0);\n        op[pl + -1] = mVar21;\n      }\n    }" { (expression_statement "iVar33 = pl + -1;" (assignment_expression "iVar33 = pl + -1" identifier = (binary_expression "pl + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = *A;" (assignment_expression "mVar21 = *A" identifier = (pointer_expression "*A" * identifier)) ;) (expression_statement "pmVar23 = op;" (assignment_expression "pmVar23 = op" identifier = identifier) ;) (expression_statement "pmVar3 = A;" (assignment_expression "pmVar3 = A" identifier = identifier) ;) (if_statement "if (iVar33 == 0) {\n        *op = mVar21;\n      }\n      else {\n        do {\n          *pmVar23 = mVar21;\n          iVar33 = iVar33 + -1;\n          mVar21 = pmVar3[1];\n          pmVar23 = pmVar23 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (iVar33 != 0);\n        op[pl + -1] = mVar21;\n      }" if (parenthesized_expression "(iVar33 == 0)" ( (binary_expression "iVar33 == 0" identifier == number_literal) )) (compound_statement "{\n        *op = mVar21;\n      }" { (expression_statement "*op = mVar21;" (assignment_expression "*op = mVar21" (pointer_expression "*op" * identifier) = identifier) ;) }) (else_clause "else {\n        do {\n          *pmVar23 = mVar21;\n          iVar33 = iVar33 + -1;\n          mVar21 = pmVar3[1];\n          pmVar23 = pmVar23 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (iVar33 != 0);\n        op[pl + -1] = mVar21;\n      }" else (compound_statement "{\n        do {\n          *pmVar23 = mVar21;\n          iVar33 = iVar33 + -1;\n          mVar21 = pmVar3[1];\n          pmVar23 = pmVar23 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (iVar33 != 0);\n        op[pl + -1] = mVar21;\n      }" { (do_statement "do {\n          *pmVar23 = mVar21;\n          iVar33 = iVar33 + -1;\n          mVar21 = pmVar3[1];\n          pmVar23 = pmVar23 + 1;\n          pmVar3 = pmVar3 + 1;\n        } while (iVar33 != 0);" do (compound_statement "{\n          *pmVar23 = mVar21;\n          iVar33 = iVar33 + -1;\n          mVar21 = pmVar3[1];\n          pmVar23 = pmVar23 + 1;\n          pmVar3 = pmVar3 + 1;\n        }" { (expression_statement "*pmVar23 = mVar21;" (assignment_expression "*pmVar23 = mVar21" (pointer_expression "*pmVar23" * identifier) = identifier) ;) (expression_statement "iVar33 = iVar33 + -1;" (assignment_expression "iVar33 = iVar33 + -1" identifier = (binary_expression "iVar33 + -1" identifier + number_literal)) ;) (expression_statement "mVar21 = pmVar3[1];" (assignment_expression "mVar21 = pmVar3[1]" identifier = (subscript_expression "pmVar3[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar23 = pmVar23 + 1;" (assignment_expression "pmVar23 = pmVar23 + 1" identifier = (binary_expression "pmVar23 + 1" identifier + number_literal)) ;) (expression_statement "pmVar3 = pmVar3 + 1;" (assignment_expression "pmVar3 = pmVar3 + 1" identifier = (binary_expression "pmVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar33 != 0)" ( (binary_expression "iVar33 != 0" identifier != number_literal) )) ;) (expression_statement "op[pl + -1] = mVar21;" (assignment_expression "op[pl + -1] = mVar21" (subscript_expression "op[pl + -1]" identifier [ (binary_expression "pl + -1" identifier + number_literal) ]) = identifier) ;) }))) })) (expression_statement "uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl + iVar30);" (assignment_expression "uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl + iVar30)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl + iVar30)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_00097514)" ( (pointer_expression "*(code *)PTR___gmpn_sub_n_00097514" * (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(op,op,A + pl,pl + iVar30)" ( identifier , identifier , (binary_expression "A + pl" identifier + identifier) , (binary_expression "pl + iVar30" identifier + identifier) )))) ;) (expression_statement "pmVar28 = op + pl + iVar30;" (assignment_expression "pmVar28 = op + pl + iVar30" identifier = (binary_expression "op + pl + iVar30" (binary_expression "op + pl" identifier + identifier) + identifier)) ;) (expression_statement "uVar26 = *pmVar28;" (assignment_expression "uVar26 = *pmVar28" identifier = (pointer_expression "*pmVar28" * identifier)) ;) (expression_statement "pmVar17 = (mp_ptr)(uVar26 - uVar6);" (assignment_expression "pmVar17 = (mp_ptr)(uVar26 - uVar6)" identifier = (call_expression "(mp_ptr)(uVar26 - uVar6)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(uVar26 - uVar6)" ( (binary_expression "uVar26 - uVar6" identifier - identifier) )))) ;) (expression_statement "*pmVar28 = (mp_limb_t)pmVar17;" (assignment_expression "*pmVar28 = (mp_limb_t)pmVar17" (pointer_expression "*pmVar28" * identifier) = (cast_expression "(mp_limb_t)pmVar17" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) (if_statement "if (uVar26 < uVar6) {\n      if (iVar7 - iVar24 < 2) {\nLAB_000413d8:\n        mVar21 = *op;\n        *op = mVar21 + 1;\n        if (mVar21 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        mVar21 = pmVar28[1];\n        pmVar28[1] = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = 2;\n          pmVar28 = pmVar28 + 2;\n          do {\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          } while (mVar27 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }" if (parenthesized_expression "(uVar26 < uVar6)" ( (binary_expression "uVar26 < uVar6" identifier < identifier) )) (compound_statement "{\n      if (iVar7 - iVar24 < 2) {\nLAB_000413d8:\n        mVar21 = *op;\n        *op = mVar21 + 1;\n        if (mVar21 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        mVar21 = pmVar28[1];\n        pmVar28[1] = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = 2;\n          pmVar28 = pmVar28 + 2;\n          do {\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          } while (mVar27 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }" { (if_statement "if (iVar7 - iVar24 < 2) {\nLAB_000413d8:\n        mVar21 = *op;\n        *op = mVar21 + 1;\n        if (mVar21 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        mVar21 = pmVar28[1];\n        pmVar28[1] = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = 2;\n          pmVar28 = pmVar28 + 2;\n          do {\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          } while (mVar27 == 0);\n          goto LAB_000418b4;\n        }\n      }" if (parenthesized_expression "(iVar7 - iVar24 < 2)" ( (binary_expression "iVar7 - iVar24 < 2" (binary_expression "iVar7 - iVar24" identifier - identifier) < number_literal) )) (compound_statement "{\nLAB_000413d8:\n        mVar21 = *op;\n        *op = mVar21 + 1;\n        if (mVar21 + 1 == 0) goto LAB_000413ec;\n      }" { (labeled_statement "LAB_000413d8:\n        mVar21 = *op;" statement_identifier : (expression_statement "mVar21 = *op;" (assignment_expression "mVar21 = *op" identifier = (pointer_expression "*op" * identifier)) ;)) (expression_statement "*op = mVar21 + 1;" (assignment_expression "*op = mVar21 + 1" (pointer_expression "*op" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (if_statement "if (mVar21 + 1 == 0) goto LAB_000413ec;" if (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) (goto_statement "goto LAB_000413ec;" goto statement_identifier ;)) }) (else_clause "else {\n        mVar21 = pmVar28[1];\n        pmVar28[1] = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = 2;\n          pmVar28 = pmVar28 + 2;\n          do {\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          } while (mVar27 == 0);\n          goto LAB_000418b4;\n        }\n      }" else (compound_statement "{\n        mVar21 = pmVar28[1];\n        pmVar28[1] = mVar21 - 1;\n        if (mVar21 == 0) {\n          iVar30 = 2;\n          pmVar28 = pmVar28 + 2;\n          do {\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          } while (mVar27 == 0);\n          goto LAB_000418b4;\n        }\n      }" { (expression_statement "mVar21 = pmVar28[1];" (assignment_expression "mVar21 = pmVar28[1]" identifier = (subscript_expression "pmVar28[1]" identifier [ number_literal ])) ;) (expression_statement "pmVar28[1] = mVar21 - 1;" (assignment_expression "pmVar28[1] = mVar21 - 1" (subscript_expression "pmVar28[1]" identifier [ number_literal ]) = (binary_expression "mVar21 - 1" identifier - number_literal)) ;) (if_statement "if (mVar21 == 0) {\n          iVar30 = 2;\n          pmVar28 = pmVar28 + 2;\n          do {\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          } while (mVar27 == 0);\n          goto LAB_000418b4;\n        }" if (parenthesized_expression "(mVar21 == 0)" ( (binary_expression "mVar21 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar30 = 2;\n          pmVar28 = pmVar28 + 2;\n          do {\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          } while (mVar27 == 0);\n          goto LAB_000418b4;\n        }" { (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" identifier = number_literal) ;) (expression_statement "pmVar28 = pmVar28 + 2;" (assignment_expression "pmVar28 = pmVar28 + 2" identifier = (binary_expression "pmVar28 + 2" identifier + number_literal)) ;) (do_statement "do {\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          } while (mVar27 == 0);" do (compound_statement "{\n            bVar1 = iVar7 - iVar24 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            mVar27 = *pmVar28;\n            pmVar17 = (mp_ptr)(mVar27 - 1);\n            *pmVar28 = (mp_limb_t)pmVar17;\n            mVar21 = 0;\n            pmVar28 = pmVar28 + 1;\n          }" { (expression_statement "bVar1 = iVar7 - iVar24 == iVar30;" (assignment_expression "bVar1 = iVar7 - iVar24 == iVar30" identifier = (binary_expression "iVar7 - iVar24 == iVar30" (binary_expression "iVar7 - iVar24" identifier - identifier) == identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_000413d8;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000413d8;" goto statement_identifier ;)) (expression_statement "mVar27 = *pmVar28;" (assignment_expression "mVar27 = *pmVar28" identifier = (pointer_expression "*pmVar28" * identifier)) ;) (expression_statement "pmVar17 = (mp_ptr)(mVar27 - 1);" (assignment_expression "pmVar17 = (mp_ptr)(mVar27 - 1)" identifier = (call_expression "(mp_ptr)(mVar27 - 1)" (parenthesized_expression "(mp_ptr)" ( identifier )) (argument_list "(mVar27 - 1)" ( (binary_expression "mVar27 - 1" identifier - number_literal) )))) ;) (expression_statement "*pmVar28 = (mp_limb_t)pmVar17;" (assignment_expression "*pmVar28 = (mp_limb_t)pmVar17" (pointer_expression "*pmVar28" * identifier) = (cast_expression "(mp_limb_t)pmVar17" ( (type_descriptor "mp_limb_t" type_identifier) ) identifier)) ;) (expression_statement "mVar21 = 0;" (assignment_expression "mVar21 = 0" identifier = number_literal) ;) (expression_statement "pmVar28 = pmVar28 + 1;" (assignment_expression "pmVar28 = pmVar28 + 1" identifier = (binary_expression "pmVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar27 == 0)" ( (binary_expression "mVar27 == 0" identifier == number_literal) )) ;) (goto_statement "goto LAB_000418b4;" goto statement_identifier ;) })) }))) })) }) (else_clause "else {\n    uVar6 = (*(code *)PTR___gmpn_add_n_00097334)(op,A,A + pl * 2,iVar30);\n    puVar41 = A + iVar30;\n    puVar19 = op + iVar30;\n    iVar30 = pl - iVar30;\n    uVar26 = *puVar41;\n    *puVar19 = uVar6 + uVar26;\n    if (uVar6 + uVar26 < uVar6) {\n      if (iVar30 < 2) {\nLAB_00041994:\n        mVar21 = 1;\n      }\n      else {\n        uVar6 = puVar41[1];\n        puVar19[1] = uVar6 + 1;\n        if (uVar6 + 1 == 0) {\n          puVar32 = puVar41 + 2;\n          iVar33 = 2;\n          puVar20 = puVar19 + 2;\n          do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);\n        }\n        else {\n          iVar33 = 2;\n        }\n        if ((puVar19 == puVar41) || (iVar30 <= iVar33)) goto LAB_00041acc;\n        puVar20 = puVar41 + iVar33;\n        puVar19 = puVar19 + iVar33;\n        do {\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n          puVar19 = puVar19 + 1;\n        } while (puVar20 != puVar41 + iVar30);\n        mVar21 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar41) && (puVar20 = puVar41 + 1, 1 < iVar30)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n        } while (puVar41 + iVar30 != puVar20);\n      }\nLAB_00041acc:\n      mVar21 = 0;\n    }\n    pmVar17 = op;\n    uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl);\n    uVar26 = op[pl];\n    op[pl] = uVar26 - uVar6;\n    if ((uVar6 <= uVar26) || (mVar21 = mVar21 - 1, mVar21 != 0xffffffff)) goto LAB_000418b4;\n    mVar21 = *op;\n    *op = mVar21 + 1;\n    if (mVar21 + 1 != 0) {\n      mVar21 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if (pl < 2) {\nLAB_00041438:\n      mVar21 = 1;\n      goto LAB_000418b4;\n    }\n    mVar21 = op[1];\n    op[1] = mVar21 + 1;\n    if (mVar21 + 1 == 0) {\n      iVar30 = 2;\n      pmVar28 = op + 2;\n      do {\n        bVar1 = pl == iVar30;\n        iVar30 = iVar30 + 1;\n        pmVar17 = (mp_ptr)pl;\n        if (bVar1) goto LAB_00041438;\n        mVar21 = *pmVar28;\n        *pmVar28 = mVar21 + 1;\n        pmVar28 = pmVar28 + 1;\n      } while (mVar21 + 1 == 0);\n    }\n  }" else (compound_statement "{\n    uVar6 = (*(code *)PTR___gmpn_add_n_00097334)(op,A,A + pl * 2,iVar30);\n    puVar41 = A + iVar30;\n    puVar19 = op + iVar30;\n    iVar30 = pl - iVar30;\n    uVar26 = *puVar41;\n    *puVar19 = uVar6 + uVar26;\n    if (uVar6 + uVar26 < uVar6) {\n      if (iVar30 < 2) {\nLAB_00041994:\n        mVar21 = 1;\n      }\n      else {\n        uVar6 = puVar41[1];\n        puVar19[1] = uVar6 + 1;\n        if (uVar6 + 1 == 0) {\n          puVar32 = puVar41 + 2;\n          iVar33 = 2;\n          puVar20 = puVar19 + 2;\n          do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);\n        }\n        else {\n          iVar33 = 2;\n        }\n        if ((puVar19 == puVar41) || (iVar30 <= iVar33)) goto LAB_00041acc;\n        puVar20 = puVar41 + iVar33;\n        puVar19 = puVar19 + iVar33;\n        do {\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n          puVar19 = puVar19 + 1;\n        } while (puVar20 != puVar41 + iVar30);\n        mVar21 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar41) && (puVar20 = puVar41 + 1, 1 < iVar30)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n        } while (puVar41 + iVar30 != puVar20);\n      }\nLAB_00041acc:\n      mVar21 = 0;\n    }\n    pmVar17 = op;\n    uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl);\n    uVar26 = op[pl];\n    op[pl] = uVar26 - uVar6;\n    if ((uVar6 <= uVar26) || (mVar21 = mVar21 - 1, mVar21 != 0xffffffff)) goto LAB_000418b4;\n    mVar21 = *op;\n    *op = mVar21 + 1;\n    if (mVar21 + 1 != 0) {\n      mVar21 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if (pl < 2) {\nLAB_00041438:\n      mVar21 = 1;\n      goto LAB_000418b4;\n    }\n    mVar21 = op[1];\n    op[1] = mVar21 + 1;\n    if (mVar21 + 1 == 0) {\n      iVar30 = 2;\n      pmVar28 = op + 2;\n      do {\n        bVar1 = pl == iVar30;\n        iVar30 = iVar30 + 1;\n        pmVar17 = (mp_ptr)pl;\n        if (bVar1) goto LAB_00041438;\n        mVar21 = *pmVar28;\n        *pmVar28 = mVar21 + 1;\n        pmVar28 = pmVar28 + 1;\n      } while (mVar21 + 1 == 0);\n    }\n  }" { (expression_statement "uVar6 = (*(code *)PTR___gmpn_add_n_00097334)(op,A,A + pl * 2,iVar30);" (assignment_expression "uVar6 = (*(code *)PTR___gmpn_add_n_00097334)(op,A,A + pl * 2,iVar30)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(op,A,A + pl * 2,iVar30)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(op,A,A + pl * 2,iVar30)" ( identifier , identifier , (binary_expression "A + pl * 2" identifier + (binary_expression "pl * 2" identifier * number_literal)) , identifier )))) ;) (expression_statement "puVar41 = A + iVar30;" (assignment_expression "puVar41 = A + iVar30" identifier = (binary_expression "A + iVar30" identifier + identifier)) ;) (expression_statement "puVar19 = op + iVar30;" (assignment_expression "puVar19 = op + iVar30" identifier = (binary_expression "op + iVar30" identifier + identifier)) ;) (expression_statement "iVar30 = pl - iVar30;" (assignment_expression "iVar30 = pl - iVar30" identifier = (binary_expression "pl - iVar30" identifier - identifier)) ;) (expression_statement "uVar26 = *puVar41;" (assignment_expression "uVar26 = *puVar41" identifier = (pointer_expression "*puVar41" * identifier)) ;) (expression_statement "*puVar19 = uVar6 + uVar26;" (assignment_expression "*puVar19 = uVar6 + uVar26" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar6 + uVar26" identifier + identifier)) ;) (if_statement "if (uVar6 + uVar26 < uVar6) {\n      if (iVar30 < 2) {\nLAB_00041994:\n        mVar21 = 1;\n      }\n      else {\n        uVar6 = puVar41[1];\n        puVar19[1] = uVar6 + 1;\n        if (uVar6 + 1 == 0) {\n          puVar32 = puVar41 + 2;\n          iVar33 = 2;\n          puVar20 = puVar19 + 2;\n          do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);\n        }\n        else {\n          iVar33 = 2;\n        }\n        if ((puVar19 == puVar41) || (iVar30 <= iVar33)) goto LAB_00041acc;\n        puVar20 = puVar41 + iVar33;\n        puVar19 = puVar19 + iVar33;\n        do {\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n          puVar19 = puVar19 + 1;\n        } while (puVar20 != puVar41 + iVar30);\n        mVar21 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar41) && (puVar20 = puVar41 + 1, 1 < iVar30)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n        } while (puVar41 + iVar30 != puVar20);\n      }\nLAB_00041acc:\n      mVar21 = 0;\n    }" if (parenthesized_expression "(uVar6 + uVar26 < uVar6)" ( (binary_expression "uVar6 + uVar26 < uVar6" (binary_expression "uVar6 + uVar26" identifier + identifier) < identifier) )) (compound_statement "{\n      if (iVar30 < 2) {\nLAB_00041994:\n        mVar21 = 1;\n      }\n      else {\n        uVar6 = puVar41[1];\n        puVar19[1] = uVar6 + 1;\n        if (uVar6 + 1 == 0) {\n          puVar32 = puVar41 + 2;\n          iVar33 = 2;\n          puVar20 = puVar19 + 2;\n          do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);\n        }\n        else {\n          iVar33 = 2;\n        }\n        if ((puVar19 == puVar41) || (iVar30 <= iVar33)) goto LAB_00041acc;\n        puVar20 = puVar41 + iVar33;\n        puVar19 = puVar19 + iVar33;\n        do {\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n          puVar19 = puVar19 + 1;\n        } while (puVar20 != puVar41 + iVar30);\n        mVar21 = 0;\n      }\n    }" { (if_statement "if (iVar30 < 2) {\nLAB_00041994:\n        mVar21 = 1;\n      }\n      else {\n        uVar6 = puVar41[1];\n        puVar19[1] = uVar6 + 1;\n        if (uVar6 + 1 == 0) {\n          puVar32 = puVar41 + 2;\n          iVar33 = 2;\n          puVar20 = puVar19 + 2;\n          do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);\n        }\n        else {\n          iVar33 = 2;\n        }\n        if ((puVar19 == puVar41) || (iVar30 <= iVar33)) goto LAB_00041acc;\n        puVar20 = puVar41 + iVar33;\n        puVar19 = puVar19 + iVar33;\n        do {\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n          puVar19 = puVar19 + 1;\n        } while (puVar20 != puVar41 + iVar30);\n        mVar21 = 0;\n      }" if (parenthesized_expression "(iVar30 < 2)" ( (binary_expression "iVar30 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00041994:\n        mVar21 = 1;\n      }" { (labeled_statement "LAB_00041994:\n        mVar21 = 1;" statement_identifier : (expression_statement "mVar21 = 1;" (assignment_expression "mVar21 = 1" identifier = number_literal) ;)) }) (else_clause "else {\n        uVar6 = puVar41[1];\n        puVar19[1] = uVar6 + 1;\n        if (uVar6 + 1 == 0) {\n          puVar32 = puVar41 + 2;\n          iVar33 = 2;\n          puVar20 = puVar19 + 2;\n          do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);\n        }\n        else {\n          iVar33 = 2;\n        }\n        if ((puVar19 == puVar41) || (iVar30 <= iVar33)) goto LAB_00041acc;\n        puVar20 = puVar41 + iVar33;\n        puVar19 = puVar19 + iVar33;\n        do {\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n          puVar19 = puVar19 + 1;\n        } while (puVar20 != puVar41 + iVar30);\n        mVar21 = 0;\n      }" else (compound_statement "{\n        uVar6 = puVar41[1];\n        puVar19[1] = uVar6 + 1;\n        if (uVar6 + 1 == 0) {\n          puVar32 = puVar41 + 2;\n          iVar33 = 2;\n          puVar20 = puVar19 + 2;\n          do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);\n        }\n        else {\n          iVar33 = 2;\n        }\n        if ((puVar19 == puVar41) || (iVar30 <= iVar33)) goto LAB_00041acc;\n        puVar20 = puVar41 + iVar33;\n        puVar19 = puVar19 + iVar33;\n        do {\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n          puVar19 = puVar19 + 1;\n        } while (puVar20 != puVar41 + iVar30);\n        mVar21 = 0;\n      }" { (expression_statement "uVar6 = puVar41[1];" (assignment_expression "uVar6 = puVar41[1]" identifier = (subscript_expression "puVar41[1]" identifier [ number_literal ])) ;) (expression_statement "puVar19[1] = uVar6 + 1;" (assignment_expression "puVar19[1] = uVar6 + 1" (subscript_expression "puVar19[1]" identifier [ number_literal ]) = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (if_statement "if (uVar6 + 1 == 0) {\n          puVar32 = puVar41 + 2;\n          iVar33 = 2;\n          puVar20 = puVar19 + 2;\n          do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);\n        }\n        else {\n          iVar33 = 2;\n        }" if (parenthesized_expression "(uVar6 + 1 == 0)" ( (binary_expression "uVar6 + 1 == 0" (binary_expression "uVar6 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          puVar32 = puVar41 + 2;\n          iVar33 = 2;\n          puVar20 = puVar19 + 2;\n          do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);\n        }" { (expression_statement "puVar32 = puVar41 + 2;" (assignment_expression "puVar32 = puVar41 + 2" identifier = (binary_expression "puVar41 + 2" identifier + number_literal)) ;) (expression_statement "iVar33 = 2;" (assignment_expression "iVar33 = 2" identifier = number_literal) ;) (expression_statement "puVar20 = puVar19 + 2;" (assignment_expression "puVar20 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (do_statement "do {\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          } while (uVar6 + 1 == 0);" do (compound_statement "{\n            if (iVar30 == iVar33) goto LAB_00041994;\n            uVar6 = *puVar32;\n            iVar33 = iVar33 + 1;\n            puVar32 = puVar32 + 1;\n            *puVar20 = uVar6 + 1;\n            puVar20 = puVar20 + 1;\n          }" { (if_statement "if (iVar30 == iVar33) goto LAB_00041994;" if (parenthesized_expression "(iVar30 == iVar33)" ( (binary_expression "iVar30 == iVar33" identifier == identifier) )) (goto_statement "goto LAB_00041994;" goto statement_identifier ;)) (expression_statement "uVar6 = *puVar32;" (assignment_expression "uVar6 = *puVar32" identifier = (pointer_expression "*puVar32" * identifier)) ;) (expression_statement "iVar33 = iVar33 + 1;" (assignment_expression "iVar33 = iVar33 + 1" identifier = (binary_expression "iVar33 + 1" identifier + number_literal)) ;) (expression_statement "puVar32 = puVar32 + 1;" (assignment_expression "puVar32 = puVar32 + 1" identifier = (binary_expression "puVar32 + 1" identifier + number_literal)) ;) (expression_statement "*puVar20 = uVar6 + 1;" (assignment_expression "*puVar20 = uVar6 + 1" (pointer_expression "*puVar20" * identifier) = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 + 1 == 0)" ( (binary_expression "uVar6 + 1 == 0" (binary_expression "uVar6 + 1" identifier + number_literal) == number_literal) )) ;) }) (else_clause "else {\n          iVar33 = 2;\n        }" else (compound_statement "{\n          iVar33 = 2;\n        }" { (expression_statement "iVar33 = 2;" (assignment_expression "iVar33 = 2" identifier = number_literal) ;) }))) (if_statement "if ((puVar19 == puVar41) || (iVar30 <= iVar33)) goto LAB_00041acc;" if (parenthesized_expression "((puVar19 == puVar41) || (iVar30 <= iVar33))" ( (binary_expression "(puVar19 == puVar41) || (iVar30 <= iVar33)" (parenthesized_expression "(puVar19 == puVar41)" ( (binary_expression "puVar19 == puVar41" identifier == identifier) )) || (parenthesized_expression "(iVar30 <= iVar33)" ( (binary_expression "iVar30 <= iVar33" identifier <= identifier) ))) )) (goto_statement "goto LAB_00041acc;" goto statement_identifier ;)) (expression_statement "puVar20 = puVar41 + iVar33;" (assignment_expression "puVar20 = puVar41 + iVar33" identifier = (binary_expression "puVar41 + iVar33" identifier + identifier)) ;) (expression_statement "puVar19 = puVar19 + iVar33;" (assignment_expression "puVar19 = puVar19 + iVar33" identifier = (binary_expression "puVar19 + iVar33" identifier + identifier)) ;) (do_statement "do {\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n          puVar19 = puVar19 + 1;\n        } while (puVar20 != puVar41 + iVar30);" do (compound_statement "{\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n          puVar19 = puVar19 + 1;\n        }" { (expression_statement "uVar6 = *puVar20;" (assignment_expression "uVar6 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (expression_statement "*puVar19 = uVar6;" (assignment_expression "*puVar19 = uVar6" (pointer_expression "*puVar19" * identifier) = identifier) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar20 != puVar41 + iVar30)" ( (binary_expression "puVar20 != puVar41 + iVar30" identifier != (binary_expression "puVar41 + iVar30" identifier + identifier)) )) ;) (expression_statement "mVar21 = 0;" (assignment_expression "mVar21 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n      if ((puVar19 != puVar41) && (puVar20 = puVar41 + 1, 1 < iVar30)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n        } while (puVar41 + iVar30 != puVar20);\n      }\nLAB_00041acc:\n      mVar21 = 0;\n    }" else (compound_statement "{\n      if ((puVar19 != puVar41) && (puVar20 = puVar41 + 1, 1 < iVar30)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n        } while (puVar41 + iVar30 != puVar20);\n      }\nLAB_00041acc:\n      mVar21 = 0;\n    }" { (if_statement "if ((puVar19 != puVar41) && (puVar20 = puVar41 + 1, 1 < iVar30)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n        } while (puVar41 + iVar30 != puVar20);\n      }" if (parenthesized_expression "((puVar19 != puVar41) && (puVar20 = puVar41 + 1, 1 < iVar30))" ( (binary_expression "(puVar19 != puVar41) && (puVar20 = puVar41 + 1, 1 < iVar30)" (parenthesized_expression "(puVar19 != puVar41)" ( (binary_expression "puVar19 != puVar41" identifier != identifier) )) && (parenthesized_expression "(puVar20 = puVar41 + 1, 1 < iVar30)" ( (comma_expression "puVar20 = puVar41 + 1, 1 < iVar30" (assignment_expression "puVar20 = puVar41 + 1" identifier = (binary_expression "puVar41 + 1" identifier + number_literal)) , (binary_expression "1 < iVar30" number_literal < identifier)) ))) )) (compound_statement "{\n        do {\n          puVar19 = puVar19 + 1;\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n        } while (puVar41 + iVar30 != puVar20);\n      }" { (do_statement "do {\n          puVar19 = puVar19 + 1;\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n        } while (puVar41 + iVar30 != puVar20);" do (compound_statement "{\n          puVar19 = puVar19 + 1;\n          uVar6 = *puVar20;\n          puVar20 = puVar20 + 1;\n          *puVar19 = uVar6;\n        }" { (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = *puVar20;" (assignment_expression "uVar6 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (expression_statement "*puVar19 = uVar6;" (assignment_expression "*puVar19 = uVar6" (pointer_expression "*puVar19" * identifier) = identifier) ;) }) while (parenthesized_expression "(puVar41 + iVar30 != puVar20)" ( (binary_expression "puVar41 + iVar30 != puVar20" (binary_expression "puVar41 + iVar30" identifier + identifier) != identifier) )) ;) })) (labeled_statement "LAB_00041acc:\n      mVar21 = 0;" statement_identifier : (expression_statement "mVar21 = 0;" (assignment_expression "mVar21 = 0" identifier = number_literal) ;)) }))) (expression_statement "pmVar17 = op;" (assignment_expression "pmVar17 = op" identifier = identifier) ;) (expression_statement "uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl);" (assignment_expression "uVar6 = (*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_00097514)(op,op,A + pl,pl)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_00097514)" ( (pointer_expression "*(code *)PTR___gmpn_sub_n_00097514" * (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(op,op,A + pl,pl)" ( identifier , identifier , (binary_expression "A + pl" identifier + identifier) , identifier )))) ;) (expression_statement "uVar26 = op[pl];" (assignment_expression "uVar26 = op[pl]" identifier = (subscript_expression "op[pl]" identifier [ identifier ])) ;) (expression_statement "op[pl] = uVar26 - uVar6;" (assignment_expression "op[pl] = uVar26 - uVar6" (subscript_expression "op[pl]" identifier [ identifier ]) = (binary_expression "uVar26 - uVar6" identifier - identifier)) ;) (if_statement "if ((uVar6 <= uVar26) || (mVar21 = mVar21 - 1, mVar21 != 0xffffffff)) goto LAB_000418b4;" if (parenthesized_expression "((uVar6 <= uVar26) || (mVar21 = mVar21 - 1, mVar21 != 0xffffffff))" ( (binary_expression "(uVar6 <= uVar26) || (mVar21 = mVar21 - 1, mVar21 != 0xffffffff)" (parenthesized_expression "(uVar6 <= uVar26)" ( (binary_expression "uVar6 <= uVar26" identifier <= identifier) )) || (parenthesized_expression "(mVar21 = mVar21 - 1, mVar21 != 0xffffffff)" ( (comma_expression "mVar21 = mVar21 - 1, mVar21 != 0xffffffff" (assignment_expression "mVar21 = mVar21 - 1" identifier = (binary_expression "mVar21 - 1" identifier - number_literal)) , (binary_expression "mVar21 != 0xffffffff" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000418b4;" goto statement_identifier ;)) (expression_statement "mVar21 = *op;" (assignment_expression "mVar21 = *op" identifier = (pointer_expression "*op" * identifier)) ;) (expression_statement "*op = mVar21 + 1;" (assignment_expression "*op = mVar21 + 1" (pointer_expression "*op" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (if_statement "if (mVar21 + 1 != 0) {\n      mVar21 = 0;\n      goto LAB_000418b4;\n    }" if (parenthesized_expression "(mVar21 + 1 != 0)" ( (binary_expression "mVar21 + 1 != 0" (binary_expression "mVar21 + 1" identifier + number_literal) != number_literal) )) (compound_statement "{\n      mVar21 = 0;\n      goto LAB_000418b4;\n    }" { (expression_statement "mVar21 = 0;" (assignment_expression "mVar21 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000418b4;" goto statement_identifier ;) })) (labeled_statement "LAB_000413ec:\n    if (pl < 2) {\nLAB_00041438:\n      mVar21 = 1;\n      goto LAB_000418b4;\n    }" statement_identifier : (if_statement "if (pl < 2) {\nLAB_00041438:\n      mVar21 = 1;\n      goto LAB_000418b4;\n    }" if (parenthesized_expression "(pl < 2)" ( (binary_expression "pl < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00041438:\n      mVar21 = 1;\n      goto LAB_000418b4;\n    }" { (labeled_statement "LAB_00041438:\n      mVar21 = 1;" statement_identifier : (expression_statement "mVar21 = 1;" (assignment_expression "mVar21 = 1" identifier = number_literal) ;)) (goto_statement "goto LAB_000418b4;" goto statement_identifier ;) }))) (expression_statement "mVar21 = op[1];" (assignment_expression "mVar21 = op[1]" identifier = (subscript_expression "op[1]" identifier [ number_literal ])) ;) (expression_statement "op[1] = mVar21 + 1;" (assignment_expression "op[1] = mVar21 + 1" (subscript_expression "op[1]" identifier [ number_literal ]) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (if_statement "if (mVar21 + 1 == 0) {\n      iVar30 = 2;\n      pmVar28 = op + 2;\n      do {\n        bVar1 = pl == iVar30;\n        iVar30 = iVar30 + 1;\n        pmVar17 = (mp_ptr)pl;\n        if (bVar1) goto LAB_00041438;\n        mVar21 = *pmVar28;\n        *pmVar28 = mVar21 + 1;\n        pmVar28 = pmVar28 + 1;\n      } while (mVar21 + 1 == 0);\n    }" if (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n      iVar30 = 2;\n      pmVar28 = op + 2;\n      do {\n        bVar1 = pl == iVar30;\n        iVar30 = iVar30 + 1;\n        pmVar17 = (mp_ptr)pl;\n        if (bVar1) goto LAB_00041438;\n        mVar21 = *pmVar28;\n        *pmVar28 = mVar21 + 1;\n        pmVar28 = pmVar28 + 1;\n      } while (mVar21 + 1 == 0);\n    }" { (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" identifier = number_literal) ;) (expression_statement "pmVar28 = op + 2;" (assignment_expression "pmVar28 = op + 2" identifier = (binary_expression "op + 2" identifier + number_literal)) ;) (do_statement "do {\n        bVar1 = pl == iVar30;\n        iVar30 = iVar30 + 1;\n        pmVar17 = (mp_ptr)pl;\n        if (bVar1) goto LAB_00041438;\n        mVar21 = *pmVar28;\n        *pmVar28 = mVar21 + 1;\n        pmVar28 = pmVar28 + 1;\n      } while (mVar21 + 1 == 0);" do (compound_statement "{\n        bVar1 = pl == iVar30;\n        iVar30 = iVar30 + 1;\n        pmVar17 = (mp_ptr)pl;\n        if (bVar1) goto LAB_00041438;\n        mVar21 = *pmVar28;\n        *pmVar28 = mVar21 + 1;\n        pmVar28 = pmVar28 + 1;\n      }" { (expression_statement "bVar1 = pl == iVar30;" (assignment_expression "bVar1 = pl == iVar30" identifier = (binary_expression "pl == iVar30" identifier == identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (expression_statement "pmVar17 = (mp_ptr)pl;" (assignment_expression "pmVar17 = (mp_ptr)pl" identifier = (cast_expression "(mp_ptr)pl" ( (type_descriptor "mp_ptr" type_identifier) ) identifier)) ;) (if_statement "if (bVar1) goto LAB_00041438;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00041438;" goto statement_identifier ;)) (expression_statement "mVar21 = *pmVar28;" (assignment_expression "mVar21 = *pmVar28" identifier = (pointer_expression "*pmVar28" * identifier)) ;) (expression_statement "*pmVar28 = mVar21 + 1;" (assignment_expression "*pmVar28 = mVar21 + 1" (pointer_expression "*pmVar28" * identifier) = (binary_expression "mVar21 + 1" identifier + number_literal)) ;) (expression_statement "pmVar28 = pmVar28 + 1;" (assignment_expression "pmVar28 = pmVar28 + 1" identifier = (binary_expression "pmVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(mVar21 + 1 == 0)" ( (binary_expression "mVar21 + 1 == 0" (binary_expression "mVar21 + 1" identifier + number_literal) == number_literal) )) ;) })) }))) (expression_statement "mVar21 = 0;" (assignment_expression "mVar21 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000418b4:\n  if (local_2c != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)pmVar17 & 0x1f)) + 1 << ((uint)pmVar17 & 0x1f);\n  }" statement_identifier : (if_statement "if (local_2c != *(int *)puVar5) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)pmVar17 & 0x1f)) + 1 << ((uint)pmVar17 & 0x1f);\n  }" if (parenthesized_expression "(local_2c != *(int *)puVar5)" ( (binary_expression "local_2c != *(int *)puVar5" identifier != (pointer_expression "*(int *)puVar5" * (cast_expression "(int *)puVar5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)pmVar17 & 0x1f)) + 1 << ((uint)pmVar17 & 0x1f);\n  }" { (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return (local_2c + -1 >> ((uint)pmVar17 & 0x1f)) + 1 << ((uint)pmVar17 & 0x1f);" return (binary_expression "(local_2c + -1 >> ((uint)pmVar17 & 0x1f)) + 1 << ((uint)pmVar17 & 0x1f)" (binary_expression "(local_2c + -1 >> ((uint)pmVar17 & 0x1f)) + 1" (parenthesized_expression "(local_2c + -1 >> ((uint)pmVar17 & 0x1f))" ( (binary_expression "local_2c + -1 >> ((uint)pmVar17 & 0x1f)" (binary_expression "local_2c + -1" identifier + number_literal) >> (parenthesized_expression "((uint)pmVar17 & 0x1f)" ( (binary_expression "(uint)pmVar17 & 0x1f" (cast_expression "(uint)pmVar17" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) )) + number_literal) << (parenthesized_expression "((uint)pmVar17 & 0x1f)" ( (binary_expression "(uint)pmVar17 & 0x1f" (cast_expression "(uint)pmVar17" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) ;) }))) (return_statement "return mVar21;" return identifier ;) })))
(translation_unit "int FUN_00040ad4(int *param_1,int *param_2,uint param_3,int *param_4,int *param_5,int *param_6,\n                uint param_7,int param_8,int param_9,int param_10,undefined4 *param_11,int param_12)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  undefined4 *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint *puVar20;\n  int iVar21;\n  uint *puVar22;\n  int *piVar23;\n  int iVar24;\n  uint uVar25;\n  int *piVar26;\n  int iVar27;\n  int *piVar28;\n  uint uVar29;\n  int iVar30;\n  int *piVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  int *local_74;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_58;\n  int local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  iVar30 = 1 << (param_3 & 0x1f);\n  param_10 = param_10 + param_3 * 4;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar27 = param_9 << 1;\n  FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11);\n  if (param_12 == 0) {\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }\nLAB_000412d8:\n  iVar27 = local_64 - local_60;\n  if (iVar27 < 1) {\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }\n  iVar27 = 0;\nLAB_000418b4:\n  if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }\n  return iVar27;\n}\n\n" (function_definition "int FUN_00040ad4(int *param_1,int *param_2,uint param_3,int *param_4,int *param_5,int *param_6,\n                uint param_7,int param_8,int param_9,int param_10,undefined4 *param_11,int param_12)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  undefined4 *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint *puVar20;\n  int iVar21;\n  uint *puVar22;\n  int *piVar23;\n  int iVar24;\n  uint uVar25;\n  int *piVar26;\n  int iVar27;\n  int *piVar28;\n  uint uVar29;\n  int iVar30;\n  int *piVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  int *local_74;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_58;\n  int local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  iVar30 = 1 << (param_3 & 0x1f);\n  param_10 = param_10 + param_3 * 4;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar27 = param_9 << 1;\n  FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11);\n  if (param_12 == 0) {\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }\nLAB_000412d8:\n  iVar27 = local_64 - local_60;\n  if (iVar27 < 1) {\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }\n  iVar27 = 0;\nLAB_000418b4:\n  if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }\n  return iVar27;\n}" primitive_type (function_declarator "FUN_00040ad4(int *param_1,int *param_2,uint param_3,int *param_4,int *param_5,int *param_6,\n                uint param_7,int param_8,int param_9,int param_10,undefined4 *param_11,int param_12)" identifier (parameter_list "(int *param_1,int *param_2,uint param_3,int *param_4,int *param_5,int *param_6,\n                uint param_7,int param_8,int param_9,int param_10,undefined4 *param_11,int param_12)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "int *param_5" primitive_type (pointer_declarator "*param_5" * identifier)) , (parameter_declaration "int *param_6" primitive_type (pointer_declarator "*param_6" * identifier)) , (parameter_declaration "uint param_7" type_identifier identifier) , (parameter_declaration "int param_8" primitive_type identifier) , (parameter_declaration "int param_9" primitive_type identifier) , (parameter_declaration "int param_10" primitive_type identifier) , (parameter_declaration "undefined4 *param_11" type_identifier (pointer_declarator "*param_11" * identifier)) , (parameter_declaration "int param_12" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  undefined4 *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint *puVar20;\n  int iVar21;\n  uint *puVar22;\n  int *piVar23;\n  int iVar24;\n  uint uVar25;\n  int *piVar26;\n  int iVar27;\n  int *piVar28;\n  uint uVar29;\n  int iVar30;\n  int *piVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  int *local_74;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_58;\n  int local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  iVar30 = 1 << (param_3 & 0x1f);\n  param_10 = param_10 + param_3 * 4;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar27 = param_9 << 1;\n  FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11);\n  if (param_12 == 0) {\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }\nLAB_000412d8:\n  iVar27 = local_64 - local_60;\n  if (iVar27 < 1) {\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }\n  iVar27 = 0;\nLAB_000418b4:\n  if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }\n  return iVar27;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "undefined4 uVar8;" type_identifier identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "code *pcVar15;" type_identifier (pointer_declarator "*pcVar15" * identifier) ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "undefined4 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "uint *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "uint *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "uint *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "uint *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "uint uVar25;" type_identifier identifier ;) (declaration "int *piVar26;" primitive_type (pointer_declarator "*piVar26" * identifier) ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "int *piVar28;" primitive_type (pointer_declarator "*piVar28" * identifier) ;) (declaration "uint uVar29;" type_identifier identifier ;) (declaration "int iVar30;" primitive_type identifier ;) (declaration "int *piVar31;" primitive_type (pointer_declarator "*piVar31" * identifier) ;) (declaration "int *piVar32;" primitive_type (pointer_declarator "*piVar32" * identifier) ;) (declaration "int iVar33;" primitive_type identifier ;) (declaration "int iVar34;" primitive_type identifier ;) (declaration "int *local_74;" primitive_type (pointer_declarator "*local_74" * identifier) ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "int local_64;" primitive_type identifier ;) (declaration "int local_60;" primitive_type identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar3 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00097540" identifier = identifier) ;) (expression_statement "iVar30 = 1 << (param_3 & 0x1f);" (assignment_expression "iVar30 = 1 << (param_3 & 0x1f)" identifier = (binary_expression "1 << (param_3 & 0x1f)" number_literal << (parenthesized_expression "(param_3 & 0x1f)" ( (binary_expression "param_3 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "param_10 = param_10 + param_3 * 4;" (assignment_expression "param_10 = param_10 + param_3 * 4" identifier = (binary_expression "param_10 + param_3 * 4" identifier + (binary_expression "param_3 * 4" identifier * number_literal))) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00097540" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" * (cast_expression "(int *)PTR___stack_chk_guard_00097540" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "iVar27 = param_9 << 1;" (assignment_expression "iVar27 = param_9 << 1" identifier = (binary_expression "param_9 << 1" identifier << number_literal)) ;) (expression_statement "FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11);" (call_expression "FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11)" identifier (argument_list "(param_4,iVar30,param_10,iVar27,param_7,1,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (param_12 == 0) {\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }" if (parenthesized_expression "(param_12 == 0)" ( (binary_expression "param_12 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }" { (expression_statement "FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);" (call_expression "FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11)" identifier (argument_list "(param_5,iVar30,param_10,iVar27,param_7,1,param_11)" ( identifier , identifier , identifier , identifier , identifier , number_literal , identifier ))) ;) (if_statement "if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }" if (parenthesized_expression "(param_4 == param_5)" ( (binary_expression "param_4 == param_5" identifier == identifier) )) (compound_statement "{\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }" { (expression_statement "param_12 = 1;" (assignment_expression "param_12 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00040bb8;" goto statement_identifier ;) })) (expression_statement "iVar7 = 0x270;" (assignment_expression "iVar7 = 0x270" identifier = number_literal) ;) (expression_statement "local_74 = param_5;" (assignment_expression "local_74 = param_5" identifier = identifier) ;) (if_statement "if (0x26f < (int)param_7) goto LAB_00040bc8;" if (parenthesized_expression "(0x26f < (int)param_7)" ( (binary_expression "0x26f < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00040bc8;" goto statement_identifier ;)) (labeled_statement "LAB_0004149c:\n    local_30 = 0;" statement_identifier : (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;)) (expression_statement "puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);" (assignment_expression "puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8)" identifier = (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,param_7 * 8)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "param_7 * 8" identifier * number_literal) ))))) ;) (expression_statement "puVar18 = puVar19 + param_7;" (assignment_expression "puVar18 = puVar19 + param_7" identifier = (binary_expression "puVar19 + param_7" identifier + identifier)) ;) (if_statement "if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }" if (parenthesized_expression "(0 < iVar30)" ( (binary_expression "0 < iVar30" number_literal < identifier) )) (compound_statement "{\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }" { (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" identifier = number_literal) ;) (expression_statement "piVar11 = (int *)*param_4;" (assignment_expression "piVar11 = (int *)*param_4" identifier = (cast_expression "(int *)*param_4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "iVar7 = *local_74;" (assignment_expression "iVar7 = *local_74" identifier = (pointer_expression "*local_74" * identifier)) ;) (if_statement "if (param_4 == local_74) goto LAB_000415dc;" if (parenthesized_expression "(param_4 == local_74)" ( (binary_expression "param_4 == local_74" identifier == identifier) )) (goto_statement "goto LAB_000415dc;" goto statement_identifier ;)) (labeled_statement "LAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);" statement_identifier : (expression_statement "puVar22 = (uint *)(piVar11 + param_7);" (assignment_expression "puVar22 = (uint *)(piVar11 + param_7)" identifier = (cast_expression "(uint *)(piVar11 + param_7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + param_7)" ( (binary_expression "piVar11 + param_7" identifier + identifier) )))) ;)) (expression_statement "(*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);" (call_expression "(*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_n_00097364)" ( (pointer_expression "*(code *)PTR___gmpn_mul_n_00097364" * (cast_expression "(code *)PTR___gmpn_mul_n_00097364" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar19,iVar7,piVar11,param_7)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "uVar4 = *puVar22;" (assignment_expression "uVar4 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "piVar23 = (int *)(iVar7 + param_7 * 4);" (assignment_expression "piVar23 = (int *)(iVar7 + param_7 * 4)" identifier = (cast_expression "(int *)(iVar7 + param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + param_7 * 4)" ( (binary_expression "iVar7 + param_7 * 4" identifier + (binary_expression "param_7 * 4" identifier * number_literal)) )))) ;) (if_statement "if (uVar4 != 0) goto LAB_0004160c;" if (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0004160c;" goto statement_identifier ;)) (do_statement "do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);" do (compound_statement "{\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      }" { (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_00097514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (*piVar23 != 0) goto LAB_00041640;" if (parenthesized_expression "(*piVar23 != 0)" ( (binary_expression "*piVar23 != 0" (pointer_expression "*piVar23" * identifier) != number_literal) )) (goto_statement "goto LAB_00041640;" goto statement_identifier ;)) (labeled_statement "LAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);" statement_identifier : (expression_statement "iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);" (assignment_expression "iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7)" identifier = (call_expression "(*pcVar14)(piVar11,puVar19,puVar18,param_7)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(piVar11,puVar19,puVar18,param_7)" ( identifier , identifier , identifier , identifier )))) ;)) (if_statement "if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }" if (parenthesized_expression "((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0))" ( (binary_expression "(iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)" (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) || (parenthesized_expression "(iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)" ( (comma_expression "iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0" (assignment_expression "iVar7 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) , (comma_expression "*piVar11 = iVar7 + 1, iVar7 + 1 != 0" (assignment_expression "*piVar11 = iVar7 + 1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar7 + 1" identifier + number_literal)) , (binary_expression "iVar7 + 1 != 0" (binary_expression "iVar7 + 1" identifier + number_literal) != number_literal))) ))) )) (compound_statement "{\nLAB_0004199c:\n          uVar4 = 0;\n        }" { (labeled_statement "LAB_0004199c:\n          uVar4 = 0;" statement_identifier : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;)) }) (else_clause "else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }" else (compound_statement "{\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (if_statement "if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }" if (parenthesized_expression "(1 < (int)param_7)" ( (binary_expression "1 < (int)param_7" number_literal < (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }" { (expression_statement "iVar7 = piVar11[1];" (assignment_expression "iVar7 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (expression_statement "piVar11[1] = iVar7 + 1;" (assignment_expression "piVar11[1] = iVar7 + 1" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) (if_statement "if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }" if (parenthesized_expression "(iVar7 + 1 == 0)" ( (binary_expression "iVar7 + 1 == 0" (binary_expression "iVar7 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }" { (expression_statement "puVar20 = (uint *)(piVar11 + 2);" (assignment_expression "puVar20 = (uint *)(piVar11 + 2)" identifier = (cast_expression "(uint *)(piVar11 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + 2)" ( (binary_expression "piVar11 + 2" identifier + number_literal) )))) ;) (do_statement "do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);" do (compound_statement "{\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              }" { (if_statement "if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }" if (parenthesized_expression "(puVar20 == puVar22)" ( (binary_expression "puVar20 == puVar22" identifier == identifier) )) (compound_statement "{\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000415b0;" goto statement_identifier ;) })) (expression_statement "uVar4 = *puVar20;" (assignment_expression "uVar4 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "*puVar20 = uVar4 + 1;" (assignment_expression "*puVar20 = uVar4 + 1" (pointer_expression "*puVar20" * identifier) = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 + 1 == 0)" ( (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" identifier + number_literal) == number_literal) )) ;) })) (goto_statement "goto LAB_0004199c;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_000415b0:\n        *puVar22 = uVar4;" statement_identifier : (expression_statement "*puVar22 = uVar4;" (assignment_expression "*puVar22 = uVar4" (pointer_expression "*puVar22" * identifier) = identifier) ;)) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 == iVar5) goto LAB_00040f88;" if (parenthesized_expression "(iVar30 == iVar5)" ( (binary_expression "iVar30 == iVar5" identifier == identifier) )) (goto_statement "goto LAB_00040f88;" goto statement_identifier ;)) (expression_statement "piVar11 = (int *)param_4[iVar5];" (assignment_expression "piVar11 = (int *)param_4[iVar5]" identifier = (cast_expression "(int *)param_4[iVar5]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_4[iVar5]" identifier [ identifier ]))) ;) (expression_statement "iVar7 = local_74[iVar5];" (assignment_expression "iVar7 = local_74[iVar5]" identifier = (subscript_expression "local_74[iVar5]" identifier [ identifier ])) ;) (if_statement "if (param_4 != local_74) goto LAB_000414fc;" if (parenthesized_expression "(param_4 != local_74)" ( (binary_expression "param_4 != local_74" identifier != identifier) )) (goto_statement "goto LAB_000414fc;" goto statement_identifier ;)) (labeled_statement "LAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);" statement_identifier : (expression_statement "puVar22 = (uint *)(piVar11 + param_7);" (assignment_expression "puVar22 = (uint *)(piVar11 + param_7)" identifier = (cast_expression "(uint *)(piVar11 + param_7)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar11 + param_7)" ( (binary_expression "piVar11 + param_7" identifier + identifier) )))) ;)) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" ( (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" * (cast_expression "(code *)PTR___gmpn_sqr_00097394" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar19,piVar11,param_7)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar4 = *puVar22;" (assignment_expression "uVar4 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "piVar23 = (int *)(iVar7 + param_7 * 4);" (assignment_expression "piVar23 = (int *)(iVar7 + param_7 * 4)" identifier = (cast_expression "(int *)(iVar7 + param_7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + param_7 * 4)" ( (binary_expression "iVar7 + param_7 * 4" identifier + (binary_expression "param_7 * 4" identifier * number_literal)) )))) ;) }) while (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) ;) (labeled_statement "LAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);" statement_identifier : (expression_statement "uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar18,puVar18,iVar7,param_7)" ( identifier , identifier , identifier , identifier )))) ;)) (if_statement "if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }" if (parenthesized_expression "(*piVar23 != 0)" ( (binary_expression "*piVar23 != 0" (pointer_expression "*piVar23" * identifier) != number_literal) )) (compound_statement "{\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }" { (labeled_statement "LAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);" statement_identifier : (expression_statement "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar18,puVar18,piVar11,param_7)" ( identifier , identifier , identifier , identifier )))) ;)) (expression_statement "uVar4 = iVar7 + uVar4 + *puVar22;" (assignment_expression "uVar4 = iVar7 + uVar4 + *puVar22" identifier = (binary_expression "iVar7 + uVar4 + *puVar22" (binary_expression "iVar7 + uVar4" identifier + identifier) + (pointer_expression "*puVar22" * identifier))) ;) })) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_00097514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }" if (parenthesized_expression "((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0))" ( (binary_expression "(((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)" (parenthesized_expression "(((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1)))" ( (binary_expression "((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))" (parenthesized_expression "((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))" ( (binary_expression "(uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4)" (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) && (parenthesized_expression "(uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4)" ( (comma_expression "uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4" (assignment_expression "uVar25 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) , (comma_expression "*puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4" (assignment_expression "*puVar19 = uVar4 + uVar25" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar4 + uVar25" identifier + identifier)) , (binary_expression "uVar4 + uVar25 < uVar4" (binary_expression "uVar4 + uVar25" identifier + identifier) < identifier))) ))) )) && (parenthesized_expression "(1 < (int)(param_7 << 1))" ( (binary_expression "1 < (int)(param_7 << 1)" number_literal < (cast_expression "(int)(param_7 << 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_7 << 1)" ( (binary_expression "param_7 << 1" identifier << number_literal) )))) ))) )) && (parenthesized_expression "(uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)" ( (comma_expression "uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0" (assignment_expression "uVar4 = puVar19[1]" identifier = (subscript_expression "puVar19[1]" identifier [ number_literal ])) , (comma_expression "puVar19[1] = uVar4 + 1, uVar4 + 1 == 0" (assignment_expression "puVar19[1] = uVar4 + 1" (subscript_expression "puVar19[1]" identifier [ number_literal ]) = (binary_expression "uVar4 + 1" identifier + number_literal)) , (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }" { (expression_statement "puVar20 = puVar19 + 2;" (assignment_expression "puVar20 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (do_statement "do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);" do (compound_statement "{\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        }" { (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_00097514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (puVar20 == puVar19 + param_7 * 2) break;" if (parenthesized_expression "(puVar20 == puVar19 + param_7 * 2)" ( (binary_expression "puVar20 == puVar19 + param_7 * 2" identifier == (binary_expression "puVar19 + param_7 * 2" identifier + (binary_expression "param_7 * 2" identifier * number_literal))) )) (break_statement "break;" break ;)) (expression_statement "uVar4 = *puVar20;" (assignment_expression "uVar4 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "*puVar20 = uVar4 + 1;" (assignment_expression "*puVar20 = uVar4 + 1" (pointer_expression "*puVar20" * identifier) = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_00097514" identifier = (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(uVar4 + 1 == 0)" ( (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" identifier + number_literal) == number_literal) )) ;) })) (goto_statement "goto LAB_00041544;" goto statement_identifier ;) })) (labeled_statement "LAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" statement_identifier : (if_statement "if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" if (parenthesized_expression "(local_30 != 0)" ( (binary_expression "local_30 != 0" identifier != number_literal) )) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" { (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) }))) (expression_statement "iVar7 = param_7 + 1;" (assignment_expression "iVar7 = param_7 + 1" identifier = (binary_expression "param_7 + 1" identifier + number_literal)) ;) (expression_statement "piVar23 = param_11 + iVar7;" (assignment_expression "piVar23 = param_11 + iVar7" identifier = (binary_expression "param_11 + iVar7" identifier + identifier)) ;) (expression_statement "FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);" (call_expression "FUN_00040648(param_4,iVar30,iVar27,param_7,param_11)" identifier (argument_list "(param_4,iVar30,iVar27,param_7,param_11)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "puVar2 = PTR_LAB_00097078;" (assignment_expression "puVar2 = PTR_LAB_00097078" identifier = identifier) ;) (expression_statement "*param_5 = (int)piVar23;" (assignment_expression "*param_5 = (int)piVar23" (pointer_expression "*param_5" * identifier) = (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);" (call_expression "FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7)" identifier (argument_list "(piVar23,*param_4,param_7 * 0x40 - param_3,param_7)" ( identifier , (pointer_expression "*param_4" * identifier) , (binary_expression "param_7 * 0x40 - param_3" (binary_expression "param_7 * 0x40" identifier * number_literal) - identifier) , identifier ))) ;) (expression_statement "piVar26 = piVar23 + param_7;" (assignment_expression "piVar26 = piVar23 + param_7" identifier = (binary_expression "piVar23 + param_7" identifier + identifier)) ;) (expression_statement "piVar11 = piVar23;" (assignment_expression "piVar11 = piVar23" identifier = identifier) ;) (if_statement "if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }" if (parenthesized_expression "(*piVar26 != 0)" ( (binary_expression "*piVar26 != 0" (pointer_expression "*piVar26" * identifier) != number_literal) )) (compound_statement "{\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }" { (do_statement "do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);" do (compound_statement "{\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      }" { (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) ;) (if_statement "if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }" if (parenthesized_expression "(*piVar26 == 0)" ( (binary_expression "*piVar26 == 0" (pointer_expression "*piVar26" * identifier) == number_literal) )) (compound_statement "{\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }" { (expression_statement "uVar4 = param_7;" (assignment_expression "uVar4 = param_7" identifier = identifier) ;) (if_statement "if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }" { (do_statement "do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);" do (compound_statement "{\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          }" { (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (expression_statement "*piVar23 = 0;" (assignment_expression "*piVar23 = 0" (pointer_expression "*piVar23" * identifier) = number_literal) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) })) (expression_statement "*piVar26 = 1;" (assignment_expression "*piVar26 = 1" (pointer_expression "*piVar26" * identifier) = number_literal) ;) }) (else_clause "else {\n        *piVar26 = 0;\n      }" else (compound_statement "{\n        *piVar26 = 0;\n      }" { (expression_statement "*piVar26 = 0;" (assignment_expression "*piVar26 = 0" (pointer_expression "*piVar26" * identifier) = number_literal) ;) }))) })) (if_statement "if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }" if (parenthesized_expression "(1 < iVar30)" ( (binary_expression "1 < iVar30" number_literal < identifier) )) (compound_statement "{\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }" { (expression_statement "piVar23 = param_4 + 1;" (assignment_expression "piVar23 = param_4 + 1" identifier = (binary_expression "param_4 + 1" identifier + number_literal)) ;) (expression_statement "iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);" (assignment_expression "iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3)" identifier = (binary_expression "param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3)" (binary_expression "param_7 * 0x40" identifier * number_literal) - (parenthesized_expression "((iVar30 + -1) * param_9 + param_3)" ( (binary_expression "(iVar30 + -1) * param_9 + param_3" (binary_expression "(iVar30 + -1) * param_9" (parenthesized_expression "(iVar30 + -1)" ( (binary_expression "iVar30 + -1" identifier + number_literal) )) * identifier) + identifier) )))) ;) (expression_statement "piVar11 = param_5;" (assignment_expression "piVar11 = param_5" identifier = identifier) ;) (do_statement "do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));" do (compound_statement "{\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      }" { (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) (expression_statement "piVar31 = (int *)piVar23[-1];" (assignment_expression "piVar31 = (int *)piVar23[-1]" identifier = (cast_expression "(int *)piVar23[-1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar23[-1]" identifier [ number_literal ]))) ;) (expression_statement "*piVar11 = (int)piVar31;" (assignment_expression "*piVar11 = (int)piVar31" (pointer_expression "*piVar11" * identifier) = (cast_expression "(int)piVar31" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "(*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);" (call_expression "(*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7)" (parenthesized_expression "(*(code *)(puVar2 + -0xa24))" ( (pointer_expression "*(code *)(puVar2 + -0xa24)" * (cast_expression "(code *)(puVar2 + -0xa24)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + -0xa24)" ( (binary_expression "puVar2 + -0xa24" identifier + number_literal) )))) )) (argument_list "(piVar31,*piVar23,iVar27,param_7)" ( identifier , (pointer_expression "*piVar23" * identifier) , identifier , identifier ))) ;) (expression_statement "piVar32 = piVar31 + param_7;" (assignment_expression "piVar32 = piVar31 + param_7" identifier = (binary_expression "piVar31 + param_7" identifier + identifier)) ;) (expression_statement "piVar26 = piVar31;" (assignment_expression "piVar26 = piVar31" identifier = identifier) ;) (if_statement "if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }" if (parenthesized_expression "(*piVar32 != 0)" ( (binary_expression "*piVar32 != 0" (pointer_expression "*piVar32" * identifier) != number_literal) )) (compound_statement "{\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }" { (do_statement "do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);" do (compound_statement "{\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          }" { (expression_statement "iVar5 = *piVar26;" (assignment_expression "iVar5 = *piVar26" identifier = (pointer_expression "*piVar26" * identifier)) ;) (expression_statement "*piVar26 = iVar5 + -1;" (assignment_expression "*piVar26 = iVar5 + -1" (pointer_expression "*piVar26" * identifier) = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) (expression_statement "piVar26 = piVar26 + 1;" (assignment_expression "piVar26 = piVar26 + 1" identifier = (binary_expression "piVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) ;) (if_statement "if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }" if (parenthesized_expression "(*piVar32 == 0)" ( (binary_expression "*piVar32 == 0" (pointer_expression "*piVar32" * identifier) == number_literal) )) (compound_statement "{\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }" { (expression_statement "uVar4 = param_7;" (assignment_expression "uVar4 = param_7" identifier = identifier) ;) (if_statement "if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }" if (parenthesized_expression "(param_7 != 0)" ( (binary_expression "param_7 != 0" identifier != number_literal) )) (compound_statement "{\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }" { (do_statement "do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);" do (compound_statement "{\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              }" { (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" identifier = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (expression_statement "*piVar31 = 0;" (assignment_expression "*piVar31 = 0" (pointer_expression "*piVar31" * identifier) = number_literal) ;) (expression_statement "piVar31 = piVar31 + 1;" (assignment_expression "piVar31 = piVar31 + 1" identifier = (binary_expression "piVar31 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) })) (expression_statement "*piVar32 = 1;" (assignment_expression "*piVar32 = 1" (pointer_expression "*piVar32" * identifier) = number_literal) ;) }) (else_clause "else {\n            *piVar32 = 0;\n          }" else (compound_statement "{\n            *piVar32 = 0;\n          }" { (expression_statement "*piVar32 = 0;" (assignment_expression "*piVar32 = 0" (pointer_expression "*piVar32" * identifier) = number_literal) ;) }))) })) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) (expression_statement "iVar27 = iVar27 + param_9;" (assignment_expression "iVar27 = iVar27 + param_9" identifier = (binary_expression "iVar27 + param_9" identifier + identifier)) ;) }) while (parenthesized_expression "(piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))))" ( (binary_expression "piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f)))" identifier != (cast_expression "(int *)((int)param_4 + (4 << (param_3 & 0x1f)))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_4 + (4 << (param_3 & 0x1f)))" ( (binary_expression "(int)param_4 + (4 << (param_3 & 0x1f))" (cast_expression "(int)param_4" ( (type_descriptor "int" primitive_type) ) identifier) + (parenthesized_expression "(4 << (param_3 & 0x1f))" ( (binary_expression "4 << (param_3 & 0x1f)" number_literal << (parenthesized_expression "(param_3 & 0x1f)" ( (binary_expression "param_3 & 0x1f" identifier & number_literal) ))) ))) )))) )) ;) })) (expression_statement "local_74 = (int *)(iVar30 - 1);" (assignment_expression "local_74 = (int *)(iVar30 - 1)" identifier = (cast_expression "(int *)(iVar30 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar30 - 1)" ( (binary_expression "iVar30 - 1" identifier - number_literal) )))) ;) (expression_statement "puVar17 = param_11;" (assignment_expression "puVar17 = param_11" identifier = identifier) ;) (expression_statement "iVar27 = iVar7;" (assignment_expression "iVar27 = iVar7" identifier = identifier) ;) (if_statement "if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }" if (parenthesized_expression "(param_7 != 0xffffffff)" ( (binary_expression "param_7 != 0xffffffff" identifier != number_literal) )) (compound_statement "{\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }" { (do_statement "do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);" do (compound_statement "{\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      }" { (expression_statement "iVar27 = iVar27 + -1;" (assignment_expression "iVar27 = iVar27 + -1" identifier = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (expression_statement "*puVar17 = 0;" (assignment_expression "*puVar17 = 0" (pointer_expression "*puVar17" * identifier) = number_literal) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) ;) })) (expression_statement "iVar5 = (int)local_74 * param_8;" (assignment_expression "iVar5 = (int)local_74 * param_8" identifier = (binary_expression "(int)local_74 * param_8" (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier) * identifier)) ;) (expression_statement "local_60 = (int)param_2 * 2;" (assignment_expression "local_60 = (int)param_2 * 2" identifier = (binary_expression "(int)param_2 * 2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ;) (expression_statement "local_58 = param_7 + iVar5;" (assignment_expression "local_58 = param_7 + iVar5" identifier = (binary_expression "param_7 + iVar5" identifier + identifier)) ;) (expression_statement "local_64 = local_58 + 1;" (assignment_expression "local_64 = local_58 + 1" identifier = (binary_expression "local_58 + 1" identifier + number_literal)) ;) (expression_statement "piVar11 = param_6;" (assignment_expression "piVar11 = param_6" identifier = identifier) ;) (expression_statement "iVar27 = local_64;" (assignment_expression "iVar27 = local_64" identifier = identifier) ;) (if_statement "if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }" if (parenthesized_expression "(local_64 == 0)" ( (binary_expression "local_64 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar24 = -1;\n    }" { (expression_statement "iVar24 = -1;" (assignment_expression "iVar24 = -1" identifier = number_literal) ;) }) (else_clause "else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }" else (compound_statement "{\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }" { (do_statement "do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);" do (compound_statement "{\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      }" { (expression_statement "iVar27 = iVar27 + -1;" (assignment_expression "iVar27 = iVar27 + -1" identifier = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (expression_statement "*piVar11 = 0;" (assignment_expression "*piVar11 = 0" (pointer_expression "*piVar11" * identifier) = number_literal) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) (expression_statement "iVar24 = local_58;" (assignment_expression "iVar24 = local_58" identifier = identifier) ;) }) while (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) ;) }))) (if_statement "if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(-1 < (int)local_74)" ( (binary_expression "-1 < (int)local_74" number_literal < (cast_expression "(int)local_74" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }" { (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" identifier = number_literal) ;) (expression_statement "piVar23 = param_6 + iVar7 + iVar5 + 1;" (assignment_expression "piVar23 = param_6 + iVar7 + iVar5 + 1" identifier = (binary_expression "param_6 + iVar7 + iVar5 + 1" (binary_expression "param_6 + iVar7 + iVar5" (binary_expression "param_6 + iVar7" identifier + identifier) + identifier) + number_literal)) ;) (expression_statement "piVar26 = param_6 + iVar24;" (assignment_expression "piVar26 = param_6 + iVar24" identifier = (binary_expression "param_6 + iVar24" identifier + identifier)) ;) (expression_statement "piVar31 = param_6 + iVar5;" (assignment_expression "piVar31 = param_6 + iVar5" identifier = (binary_expression "param_6 + iVar5" identifier + identifier)) ;) (expression_statement "piVar11 = local_74;" (assignment_expression "piVar11 = local_74" identifier = identifier) ;) (expression_statement "uVar4 = param_7;" (assignment_expression "uVar4 = param_7" identifier = identifier) ;) (labeled_statement "LAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);" statement_identifier : (do_statement "do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);" do (compound_statement "{\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      }" { (expression_statement "uVar25 = (uint)piVar11;" (assignment_expression "uVar25 = (uint)piVar11" identifier = (cast_expression "(uint)piVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);" (assignment_expression "iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7)" ( identifier , identifier , (subscript_expression "param_5[iVar30 - uVar25 & (uint)local_74]" identifier [ (binary_expression "iVar30 - uVar25 & (uint)local_74" (binary_expression "iVar30 - uVar25" identifier - identifier) & (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier)) ]) , identifier )))) ;) (if_statement "if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }" if (parenthesized_expression "((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0))" ( (binary_expression "(iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)" (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) && (parenthesized_expression "(iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)" ( (comma_expression "iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0" (assignment_expression "iVar27 = piVar23[-1]" identifier = (subscript_expression "piVar23[-1]" identifier [ number_literal ])) , (comma_expression "piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0" (assignment_expression "piVar23[-1] = iVar27 + 1" (subscript_expression "piVar23[-1]" identifier [ number_literal ]) = (binary_expression "iVar27 + 1" identifier + number_literal)) , (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal))) ))) )) (compound_statement "{\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }" { (if_statement "if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }" if (parenthesized_expression "((int)(uVar4 - param_7) < 2)" ( (binary_expression "(int)(uVar4 - param_7) < 2" (cast_expression "(int)(uVar4 - param_7)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar4 - param_7)" ( (binary_expression "uVar4 - param_7" identifier - identifier) ))) < number_literal) )) (compound_statement "{\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }" { (labeled_statement "LAB_00041254:\n            local_68 = local_68 + 1;" statement_identifier : (expression_statement "local_68 = local_68 + 1;" (assignment_expression "local_68 = local_68 + 1" identifier = (binary_expression "local_68 + 1" identifier + number_literal)) ;)) }) (else_clause "else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }" else (compound_statement "{\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }" { (expression_statement "iVar27 = *piVar23;" (assignment_expression "iVar27 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "*piVar23 = iVar27 + 1;" (assignment_expression "*piVar23 = iVar27 + 1" (pointer_expression "*piVar23" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }" if (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }" { (expression_statement "iVar27 = 2;" (assignment_expression "iVar27 = 2" identifier = number_literal) ;) (expression_statement "piVar11 = piVar23;" (assignment_expression "piVar11 = piVar23" identifier = identifier) ;) (do_statement "do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);" do (compound_statement "{\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              }" { (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) (if_statement "if (uVar4 - param_7 == iVar27) goto LAB_00041254;" if (parenthesized_expression "(uVar4 - param_7 == iVar27)" ( (binary_expression "uVar4 - param_7 == iVar27" (binary_expression "uVar4 - param_7" identifier - identifier) == identifier) )) (goto_statement "goto LAB_00041254;" goto statement_identifier ;)) (expression_statement "iVar33 = *piVar11;" (assignment_expression "iVar33 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "*piVar11 = iVar33 + 1;" (assignment_expression "*piVar11 = iVar33 + 1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar33 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar33 + 1 == 0)" ( (binary_expression "iVar33 + 1 == 0" (binary_expression "iVar33 + 1" identifier + number_literal) == number_literal) )) ;) })) }))) })) (expression_statement "iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];" (assignment_expression "iVar27 = param_5[iVar30 - uVar25 & (uint)local_74]" identifier = (subscript_expression "param_5[iVar30 - uVar25 & (uint)local_74]" identifier [ (binary_expression "iVar30 - uVar25 & (uint)local_74" (binary_expression "iVar30 - uVar25" identifier - identifier) & (cast_expression "(uint)local_74" ( (type_descriptor "uint" type_identifier) ) identifier)) ])) ;) (expression_statement "param_11[param_8 * 2] = uVar25 + 1;" (assignment_expression "param_11[param_8 * 2] = uVar25 + 1" (subscript_expression "param_11[param_8 * 2]" identifier [ (binary_expression "param_8 * 2" identifier * number_literal) ]) = (binary_expression "uVar25 + 1" identifier + number_literal)) ;) (expression_statement "puVar18 = (uint *)(iVar27 + param_7 * 4);" (assignment_expression "puVar18 = (uint *)(iVar27 + param_7 * 4)" identifier = (cast_expression "(uint *)(iVar27 + param_7 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar27 + param_7 * 4)" ( (binary_expression "iVar27 + param_7 * 4" identifier + (binary_expression "param_7 * 4" identifier * number_literal)) )))) ;) (expression_statement "iVar27 = iVar7;" (assignment_expression "iVar27 = iVar7" identifier = identifier) ;) (expression_statement "puVar19 = param_11 + param_7;" (assignment_expression "puVar19 = param_11 + param_7" identifier = (binary_expression "param_11 + param_7" identifier + identifier)) ;) (do_statement "do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);" do (compound_statement "{\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        }" { (expression_statement "iVar27 = iVar27 + -1;" (assignment_expression "iVar27 = iVar27 + -1" identifier = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if (iVar27 < 0) goto LAB_000412a0;" if (parenthesized_expression "(iVar27 < 0)" ( (binary_expression "iVar27 < 0" identifier < number_literal) )) (goto_statement "goto LAB_000412a0;" goto statement_identifier ;)) (expression_statement "uVar6 = *puVar18;" (assignment_expression "uVar6 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "uVar29 = *puVar19;" (assignment_expression "uVar29 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "puVar18 = puVar18 + -1;" (assignment_expression "puVar18 = puVar18 + -1" identifier = (binary_expression "puVar18 + -1" identifier + number_literal)) ;) (expression_statement "puVar19 = puVar19 + -1;" (assignment_expression "puVar19 = puVar19 + -1" identifier = (binary_expression "puVar19 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 == uVar29)" ( (binary_expression "uVar6 == uVar29" identifier == identifier) )) ;) (if_statement "if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }" if (parenthesized_expression "(uVar29 < uVar6)" ( (binary_expression "uVar29 < uVar6" identifier < identifier) )) (compound_statement "{\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }" { (expression_statement "iVar27 = *piVar31;" (assignment_expression "iVar27 = *piVar31" identifier = (pointer_expression "*piVar31" * identifier)) ;) (expression_statement "*piVar31 = iVar27 + -1;" (assignment_expression "*piVar31 = iVar27 + -1" (pointer_expression "*piVar31" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }" if (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }" { (if_statement "if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }" if (parenthesized_expression "((int)(uVar4 + 1) < 2)" ( (binary_expression "(int)(uVar4 + 1) < 2" (cast_expression "(int)(uVar4 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) ))) < number_literal) )) (compound_statement "{\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }" { (labeled_statement "LAB_000417cc:\n              local_68 = local_68 + -1;" statement_identifier : (expression_statement "local_68 = local_68 + -1;" (assignment_expression "local_68 = local_68 + -1" identifier = (binary_expression "local_68 + -1" identifier + number_literal)) ;)) }) (else_clause "else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }" else (compound_statement "{\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }" { (expression_statement "iVar27 = piVar31[1];" (assignment_expression "iVar27 = piVar31[1]" identifier = (subscript_expression "piVar31[1]" identifier [ number_literal ])) ;) (expression_statement "piVar31[1] = iVar27 + -1;" (assignment_expression "piVar31[1] = iVar27 + -1" (subscript_expression "piVar31[1]" identifier [ number_literal ]) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }" if (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }" { (expression_statement "iVar27 = 2;" (assignment_expression "iVar27 = 2" identifier = number_literal) ;) (expression_statement "piVar11 = piVar31 + 2;" (assignment_expression "piVar11 = piVar31 + 2" identifier = (binary_expression "piVar31 + 2" identifier + number_literal)) ;) (do_statement "do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);" do (compound_statement "{\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                }" { (expression_statement "bVar1 = uVar4 + 1 == iVar27;" (assignment_expression "bVar1 = uVar4 + 1 == iVar27" identifier = (binary_expression "uVar4 + 1 == iVar27" (binary_expression "uVar4 + 1" identifier + number_literal) == identifier)) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_000417cc;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000417cc;" goto statement_identifier ;)) (expression_statement "iVar33 = *piVar11;" (assignment_expression "iVar33 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar33 + -1;" (assignment_expression "*piVar11 = iVar33 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar33 + -1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar33 == 0)" ( (binary_expression "iVar33 == 0" identifier == number_literal) )) ;) })) }))) })) (expression_statement "iVar27 = *piVar26;" (assignment_expression "iVar27 = *piVar26" identifier = (pointer_expression "*piVar26" * identifier)) ;) (expression_statement "*piVar26 = iVar27 + -1;" (assignment_expression "*piVar26 = iVar27 + -1" (pointer_expression "*piVar26" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }" if (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) (compound_statement "{\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }" { (expression_statement "iVar27 = ((iVar5 + 1) - iVar24) + uVar4;" (assignment_expression "iVar27 = ((iVar5 + 1) - iVar24) + uVar4" identifier = (binary_expression "((iVar5 + 1) - iVar24) + uVar4" (parenthesized_expression "((iVar5 + 1) - iVar24)" ( (binary_expression "(iVar5 + 1) - iVar24" (parenthesized_expression "(iVar5 + 1)" ( (binary_expression "iVar5 + 1" identifier + number_literal) )) - identifier) )) + identifier)) ;) (if_statement "if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }" if (parenthesized_expression "(iVar27 < 2)" ( (binary_expression "iVar27 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }" { (labeled_statement "LAB_00041838:\n              piVar31 = piVar31 + -param_8;" statement_identifier : (expression_statement "piVar31 = piVar31 + -param_8;" (assignment_expression "piVar31 = piVar31 + -param_8" identifier = (binary_expression "piVar31 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;)) (expression_statement "piVar23 = piVar23 + -param_8;" (assignment_expression "piVar23 = piVar23 + -param_8" identifier = (binary_expression "piVar23 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) (expression_statement "local_68 = local_68 + -1;" (assignment_expression "local_68 = local_68 + -1" identifier = (binary_expression "local_68 + -1" identifier + number_literal)) ;) (expression_statement "uVar4 = uVar4 + param_8;" (assignment_expression "uVar4 = uVar4 + param_8" identifier = (binary_expression "uVar4 + param_8" identifier + identifier)) ;) (expression_statement "piVar26 = piVar26 + -param_8;" (assignment_expression "piVar26 = piVar26 + -param_8" identifier = (binary_expression "piVar26 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) (expression_statement "piVar11 = (int *)(uVar25 - 1);" (assignment_expression "piVar11 = (int *)(uVar25 - 1)" identifier = (cast_expression "(int *)(uVar25 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar25 - 1)" ( (binary_expression "uVar25 - 1" identifier - number_literal) )))) ;) (if_statement "if (uVar25 - 1 == 0xffffffff) break;" if (parenthesized_expression "(uVar25 - 1 == 0xffffffff)" ( (binary_expression "uVar25 - 1 == 0xffffffff" (binary_expression "uVar25 - 1" identifier - number_literal) == number_literal) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_000411b8;" goto statement_identifier ;) })) (expression_statement "iVar33 = piVar26[1];" (assignment_expression "iVar33 = piVar26[1]" identifier = (subscript_expression "piVar26[1]" identifier [ number_literal ])) ;) (expression_statement "piVar26[1] = iVar33 + -1;" (assignment_expression "piVar26[1] = iVar33 + -1" (subscript_expression "piVar26[1]" identifier [ number_literal ]) = (binary_expression "iVar33 + -1" identifier + number_literal)) ;) (if_statement "if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }" if (parenthesized_expression "(iVar33 == 0)" ( (binary_expression "iVar33 == 0" identifier == number_literal) )) (compound_statement "{\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }" { (expression_statement "iVar33 = 2;" (assignment_expression "iVar33 = 2" identifier = number_literal) ;) (expression_statement "piVar11 = piVar26 + 2;" (assignment_expression "piVar11 = piVar26 + 2" identifier = (binary_expression "piVar26 + 2" identifier + number_literal)) ;) (do_statement "do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);" do (compound_statement "{\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              }" { (if_statement "if (iVar33 == iVar27) goto LAB_00041838;" if (parenthesized_expression "(iVar33 == iVar27)" ( (binary_expression "iVar33 == iVar27" identifier == identifier) )) (goto_statement "goto LAB_00041838;" goto statement_identifier ;)) (expression_statement "iVar34 = *piVar11;" (assignment_expression "iVar34 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "iVar33 = iVar33 + 1;" (assignment_expression "iVar33 = iVar33 + 1" identifier = (binary_expression "iVar33 + 1" identifier + number_literal)) ;) (expression_statement "*piVar11 = iVar34 + -1;" (assignment_expression "*piVar11 = iVar34 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar34 + -1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar34 == 0)" ( (binary_expression "iVar34 == 0" identifier == number_literal) )) ;) })) })) })) (labeled_statement "LAB_000412a0:\n        piVar31 = piVar31 + -param_8;" statement_identifier : (expression_statement "piVar31 = piVar31 + -param_8;" (assignment_expression "piVar31 = piVar31 + -param_8" identifier = (binary_expression "piVar31 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;)) (expression_statement "piVar23 = piVar23 + -param_8;" (assignment_expression "piVar23 = piVar23 + -param_8" identifier = (binary_expression "piVar23 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) (expression_statement "uVar4 = uVar4 + param_8;" (assignment_expression "uVar4 = uVar4 + param_8" identifier = (binary_expression "uVar4 + param_8" identifier + identifier)) ;) (expression_statement "piVar26 = piVar26 + -param_8;" (assignment_expression "piVar26 = piVar26 + -param_8" identifier = (binary_expression "piVar26 + -param_8" identifier + (unary_expression "-param_8" - identifier))) ;) (expression_statement "piVar11 = (int *)(uVar25 - 1);" (assignment_expression "piVar11 = (int *)(uVar25 - 1)" identifier = (cast_expression "(int *)(uVar25 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar25 - 1)" ( (binary_expression "uVar25 - 1" identifier - number_literal) )))) ;) }) while (parenthesized_expression "(uVar25 - 1 != 0xffffffff)" ( (binary_expression "uVar25 - 1 != 0xffffffff" (binary_expression "uVar25 - 1" identifier - number_literal) != number_literal) )) ;)) (if_statement "if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(local_68 == uVar25 - 1)" ( (binary_expression "local_68 == uVar25 - 1" identifier == (binary_expression "uVar25 - 1" identifier - number_literal)) )) (compound_statement "{\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }" { (expression_statement "iVar30 = local_64 - (int)param_2;" (assignment_expression "iVar30 = local_64 - (int)param_2" identifier = (binary_expression "local_64 - (int)param_2" identifier - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "piVar11 = param_6 + iVar30;" (assignment_expression "piVar11 = param_6 + iVar30" identifier = (binary_expression "param_6 + iVar30" identifier + identifier)) ;) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + 1;" (assignment_expression "*piVar11 = iVar27 + 1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }" if (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }" { (expression_statement "iVar27 = iVar30 * 4 + -4;" (assignment_expression "iVar27 = iVar30 * 4 + -4" identifier = (binary_expression "iVar30 * 4 + -4" (binary_expression "iVar30 * 4" identifier * number_literal) + number_literal)) ;) (if_statement "if ((int)param_2 < 2) goto LAB_00041ccc;" if (parenthesized_expression "((int)param_2 < 2)" ( (binary_expression "(int)param_2 < 2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00041ccc;" goto statement_identifier ;)) (expression_statement "iVar27 = piVar11[1];" (assignment_expression "iVar27 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (expression_statement "piVar11[1] = iVar27 + 1;" (assignment_expression "piVar11[1] = iVar27 + 1" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }" if (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }" { (expression_statement "piVar23 = (int *)0x2;" (assignment_expression "piVar23 = (int *)0x2" identifier = (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar11 = piVar11 + 2;" (assignment_expression "piVar11 = piVar11 + 2" identifier = (binary_expression "piVar11 + 2" identifier + number_literal)) ;) (do_statement "do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);" do (compound_statement "{\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            }" { (expression_statement "bVar1 = param_2 == piVar23;" (assignment_expression "bVar1 = param_2 == piVar23" identifier = (binary_expression "param_2 == piVar23" identifier == identifier)) ;) (expression_statement "piVar23 = (int *)((int)piVar23 + 1);" (assignment_expression "piVar23 = (int *)((int)piVar23 + 1)" identifier = (cast_expression "(int *)((int)piVar23 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar23 + 1)" ( (binary_expression "(int)piVar23 + 1" (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }" { (expression_statement "piVar11 = param_6 + iVar30 + -1;" (assignment_expression "piVar11 = param_6 + iVar30 + -1" identifier = (binary_expression "param_6 + iVar30 + -1" (binary_expression "param_6 + iVar30" identifier + identifier) + number_literal)) ;) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if (iVar27 != 0) goto LAB_00041a74;" if (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00041a74;" goto statement_identifier ;)) (expression_statement "iVar27 = piVar11[1];" (assignment_expression "iVar27 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_00041a38;" goto statement_identifier ;) })) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + 1;" (assignment_expression "*piVar11 = iVar27 + 1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) })) }) (else_clause "else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }" else (if_statement "if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }" if (parenthesized_expression "(local_68 == 1)" ( (binary_expression "local_68 == 1" identifier == number_literal) )) (compound_statement "{\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }" { (if_statement "if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }" if (parenthesized_expression "(local_64 < local_60)" ( (binary_expression "local_64 < local_60" identifier < identifier) )) (compound_statement "{\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }" { (expression_statement "piVar11 = param_6 + (local_64 - (int)param_2);" (assignment_expression "piVar11 = param_6 + (local_64 - (int)param_2)" identifier = (binary_expression "param_6 + (local_64 - (int)param_2)" identifier + (parenthesized_expression "(local_64 - (int)param_2)" ( (binary_expression "local_64 - (int)param_2" identifier - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }" if (parenthesized_expression "(((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0))" ( (binary_expression "((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)" (parenthesized_expression "((iVar27 == 0) && (1 < (int)param_2))" ( (binary_expression "(iVar27 == 0) && (1 < (int)param_2)" (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) && (parenthesized_expression "(1 < (int)param_2)" ( (binary_expression "1 < (int)param_2" number_literal < (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) && (parenthesized_expression "(iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)" ( (comma_expression "iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0" (assignment_expression "iVar27 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) , (comma_expression "piVar11[1] = iVar27 + -1, iVar27 == 0" (assignment_expression "piVar11[1] = iVar27 + -1" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (binary_expression "iVar27 + -1" identifier + number_literal)) , (binary_expression "iVar27 == 0" identifier == number_literal))) ))) )) (compound_statement "{\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }" { (expression_statement "piVar23 = (int *)0x2;" (assignment_expression "piVar23 = (int *)0x2" identifier = (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar11 = piVar11 + 2;" (assignment_expression "piVar11 = piVar11 + 2" identifier = (binary_expression "piVar11 + 2" identifier + number_literal)) ;) (do_statement "do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);" do (compound_statement "{\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            }" { (expression_statement "bVar1 = param_2 == piVar23;" (assignment_expression "bVar1 = param_2 == piVar23" identifier = (binary_expression "param_2 == piVar23" identifier == identifier)) ;) (expression_statement "piVar23 = (int *)((int)piVar23 + 1);" (assignment_expression "piVar23 = (int *)((int)piVar23 + 1)" identifier = (cast_expression "(int *)((int)piVar23 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar23 + 1)" ( (binary_expression "(int)piVar23 + 1" (cast_expression "(int)piVar23" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (if_statement "if (bVar1) break;" if (parenthesized_expression "(bVar1)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) ;) })) }) (else_clause "else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }" else (compound_statement "{\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }" { (expression_statement "piVar11 = param_6 + local_64 + (int)param_2 * -2;" (assignment_expression "piVar11 = param_6 + local_64 + (int)param_2 * -2" identifier = (binary_expression "param_6 + local_64 + (int)param_2 * -2" (binary_expression "param_6 + local_64" identifier + identifier) + (binary_expression "(int)param_2 * -2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (while_statement "while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }" { (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (do_statement "do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);" do (compound_statement "{\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            }" { (expression_statement "*piVar11 = iVar27 + 1;" (assignment_expression "*piVar11 = iVar27 + 1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 != 0) goto LAB_000412d8;" if (parenthesized_expression "(iVar27 + 1 != 0)" ( (binary_expression "iVar27 + 1 != 0" (binary_expression "iVar27 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_000412d8;" goto statement_identifier ;)) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(local_60 < 2)" ( (binary_expression "local_60 < 2" identifier < number_literal) )) ;) (expression_statement "iVar27 = piVar11[1];" (assignment_expression "iVar27 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (expression_statement "piVar11[1] = iVar27 + 1;" (assignment_expression "piVar11[1] = iVar27 + 1" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 != 0) break;" if (parenthesized_expression "(iVar27 + 1 != 0)" ( (binary_expression "iVar27 + 1 != 0" (binary_expression "iVar27 + 1" identifier + number_literal) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar27 = 2;" (assignment_expression "iVar27 = 2" identifier = number_literal) ;) (expression_statement "piVar23 = piVar11 + 2;" (assignment_expression "piVar23 = piVar11 + 2" identifier = (binary_expression "piVar11 + 2" identifier + number_literal)) ;) (while_statement "while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }" while (parenthesized_expression "(bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1)" ( (comma_expression "bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1" (assignment_expression "bVar1 = iVar27 != local_60" identifier = (binary_expression "iVar27 != local_60" identifier != identifier)) , (comma_expression "iVar27 = iVar27 + 1, bVar1" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) , identifier)) )) (compound_statement "{\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }" { (expression_statement "iVar30 = *piVar23;" (assignment_expression "iVar30 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "*piVar23 = iVar30 + 1;" (assignment_expression "*piVar23 = iVar30 + 1" (pointer_expression "*piVar23" * identifier) = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) (if_statement "if (iVar30 + 1 != 0) goto LAB_000412d8;" if (parenthesized_expression "(iVar30 + 1 != 0)" ( (binary_expression "iVar30 + 1 != 0" (binary_expression "iVar30 + 1" identifier + number_literal) != number_literal) )) (goto_statement "goto LAB_000412d8;" goto statement_identifier ;)) })) })) }))) })))) })) }) (else_clause "else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }" else (compound_statement "{\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }" { (labeled_statement "LAB_00040bb8:\n    iVar7 = 0x230;" statement_identifier : (expression_statement "iVar7 = 0x230;" (assignment_expression "iVar7 = 0x230" identifier = number_literal) ;)) (expression_statement "local_74 = param_4;" (assignment_expression "local_74 = param_4" identifier = identifier) ;) (if_statement "if ((int)param_7 < 0x230) goto LAB_0004149c;" if (parenthesized_expression "((int)param_7 < 0x230)" ( (binary_expression "(int)param_7 < 0x230" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_0004149c;" goto statement_identifier ;)) (labeled_statement "LAB_00040bc8:\n    local_30 = 0;" statement_identifier : (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;)) (expression_statement "uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12)" identifier = (call_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)" ( (pointer_expression "*(code *)PTR___gmpn_fft_best_k_00097320" * (cast_expression "(code *)PTR___gmpn_fft_best_k_00097320" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_7,param_12)" ( identifier , identifier )))) ;) (expression_statement "iVar5 = 1 << (uVar4 & 0x1f);" (assignment_expression "iVar5 = 1 << (uVar4 & 0x1f)" identifier = (binary_expression "1 << (uVar4 & 0x1f)" number_literal << (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }" if (parenthesized_expression "((iVar5 - 1U & param_7) == 0)" ( (binary_expression "(iVar5 - 1U & param_7) == 0" (parenthesized_expression "(iVar5 - 1U & param_7)" ( (binary_expression "iVar5 - 1U & param_7" (binary_expression "iVar5 - 1U" identifier - number_literal) & identifier) )) == number_literal) )) (compound_statement "{\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }" { (expression_statement "iVar24 = iVar5;" (assignment_expression "iVar24 = iVar5" identifier = identifier) ;) (if_statement "if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }" if (parenthesized_expression "(iVar5 < 0x20)" ( (binary_expression "iVar5 < 0x20" identifier < number_literal) )) (compound_statement "{\n        iVar24 = 0x20;\n      }" { (expression_statement "iVar24 = 0x20;" (assignment_expression "iVar24 = 0x20" identifier = number_literal) ;) })) (expression_statement "iVar33 = (int)param_7 >> (uVar4 & 0x1f);" (assignment_expression "iVar33 = (int)param_7 >> (uVar4 & 0x1f)" identifier = (binary_expression "(int)param_7 >> (uVar4 & 0x1f)" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) >> (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if (iVar24 == 0) {\n        trap(7);\n      }" if (parenthesized_expression "(iVar24 == 0)" ( (binary_expression "iVar24 == 0" identifier == number_literal) )) (compound_statement "{\n        trap(7);\n      }" { (expression_statement "trap(7);" (call_expression "trap(7)" identifier (argument_list "(7)" ( number_literal ))) ;) })) (expression_statement "iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;" (assignment_expression "iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24" identifier = (binary_expression "((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24" (parenthesized_expression "((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24)" ( (binary_expression "(int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24" (cast_expression "(int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24)" ( (binary_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24" (binary_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2" (binary_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4" (binary_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2" (parenthesized_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f))" ( (binary_expression "(int)(param_7 << 5) >> (uVar4 & 0x1f)" (cast_expression "(int)(param_7 << 5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(param_7 << 5)" ( (binary_expression "param_7 << 5" identifier << number_literal) ))) >> (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) ))) )) * number_literal) + identifier) + number_literal) + identifier) ))) / identifier) )) * identifier)) ;) (expression_statement "iVar34 = iVar24;" (assignment_expression "iVar34 = iVar24" identifier = identifier) ;) (if_statement "if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }" if (parenthesized_expression "(iVar24 < 0)" ( (binary_expression "iVar24 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar34 = iVar24 + 0x1f;\n      }" { (expression_statement "iVar34 = iVar24 + 0x1f;" (assignment_expression "iVar34 = iVar24 + 0x1f" identifier = (binary_expression "iVar24 + 0x1f" identifier + number_literal)) ;) })) (expression_statement "uVar25 = iVar34 >> 5;" (assignment_expression "uVar25 = iVar34 >> 5" identifier = (binary_expression "iVar34 >> 5" identifier >> number_literal)) ;) (if_statement "if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }" if (parenthesized_expression "(iVar7 <= (int)uVar25)" ( (binary_expression "iVar7 <= (int)uVar25" identifier <= (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }" { (while_statement "while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }" { (expression_statement "uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);" (assignment_expression "uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12)" identifier = (call_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)" ( (pointer_expression "*(code *)PTR___gmpn_fft_best_k_00097320" * (cast_expression "(code *)PTR___gmpn_fft_best_k_00097320" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar25,param_12)" ( identifier , identifier )))) ;) (expression_statement "iVar7 = 1 << (uVar6 & 0x1f);" (assignment_expression "iVar7 = 1 << (uVar6 & 0x1f)" identifier = (binary_expression "1 << (uVar6 & 0x1f)" number_literal << (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) )))) ;) (if_statement "if ((iVar7 - 1U & uVar25) == 0) break;" if (parenthesized_expression "((iVar7 - 1U & uVar25) == 0)" ( (binary_expression "(iVar7 - 1U & uVar25) == 0" (parenthesized_expression "(iVar7 - 1U & uVar25)" ( (binary_expression "iVar7 - 1U & uVar25" (binary_expression "iVar7 - 1U" identifier - number_literal) & identifier) )) == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar25 = -iVar7 & (uVar25 + iVar7) - 1;" (assignment_expression "uVar25 = -iVar7 & (uVar25 + iVar7) - 1" identifier = (binary_expression "-iVar7 & (uVar25 + iVar7) - 1" (unary_expression "-iVar7" - identifier) & (binary_expression "(uVar25 + iVar7) - 1" (parenthesized_expression "(uVar25 + iVar7)" ( (binary_expression "uVar25 + iVar7" identifier + identifier) )) - number_literal))) ;) (expression_statement "iVar24 = uVar25 << 5;" (assignment_expression "iVar24 = uVar25 << 5" identifier = (binary_expression "uVar25 << 5" identifier << number_literal)) ;) })) })) (if_statement "if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;" if (parenthesized_expression "((int)param_7 <= (int)uVar25)" ( (binary_expression "(int)param_7 <= (int)uVar25" (cast_expression "(int)param_7" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_00041cb0;" goto statement_identifier ;)) (expression_statement "iVar7 = 4 << (uVar4 & 0x1f);" (assignment_expression "iVar7 = 4 << (uVar4 & 0x1f)" identifier = (binary_expression "4 << (uVar4 & 0x1f)" number_literal << (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);" (assignment_expression "uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,iVar7)" ( (pointer_expression "&local_30" & identifier) , identifier )))) ;) (expression_statement "iVar34 = uVar25 + 1;" (assignment_expression "iVar34 = uVar25 + 1" identifier = (binary_expression "uVar25 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);" (assignment_expression "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,iVar7)" ( (pointer_expression "&local_30" & identifier) , identifier )))) ;) (expression_statement "iVar24 = iVar24 >> (uVar4 & 0x1f);" (assignment_expression "iVar24 = iVar24 >> (uVar4 & 0x1f)" identifier = (binary_expression "iVar24 >> (uVar4 & 0x1f)" identifier >> (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) )))) ;) (expression_statement "iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);" (assignment_expression "iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "(iVar34 * 2 << (uVar4 & 0x1f)) << 2" (parenthesized_expression "(iVar34 * 2 << (uVar4 & 0x1f))" ( (binary_expression "iVar34 * 2 << (uVar4 & 0x1f)" (binary_expression "iVar34 * 2" identifier * number_literal) << (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) ))) )) << number_literal) )))) ;) (expression_statement "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);" (assignment_expression "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8)" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,iVar34 * 8)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "iVar34 * 8" identifier * number_literal) )))) ;) (expression_statement "iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;" (assignment_expression "iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4" identifier = (binary_expression "iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4" identifier + (binary_expression "(iVar34 << (uVar4 & 0x1f)) * 4" (parenthesized_expression "(iVar34 << (uVar4 & 0x1f))" ( (binary_expression "iVar34 << (uVar4 & 0x1f)" identifier << (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) ))) )) * number_literal))) ;) (expression_statement "piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);" (assignment_expression "piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4)" identifier = (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,(uVar4 + 1) * 4)" ( (pointer_expression "&local_30" & identifier) , (binary_expression "(uVar4 + 1) * 4" (parenthesized_expression "(uVar4 + 1)" ( (binary_expression "uVar4 + 1" identifier + number_literal) )) * number_literal) ))))) ;) (expression_statement "iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));" (assignment_expression "iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f))" identifier = (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f))" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" ( (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" * (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(&local_30,8 << (uVar4 & 0x1f))" ( (pointer_expression "&local_30" & identifier) , (binary_expression "8 << (uVar4 & 0x1f)" number_literal << (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) ))) )))) ;) (if_statement "if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }" if (parenthesized_expression "(-1 < (int)uVar4)" ( (binary_expression "-1 < (int)uVar4" number_literal < (cast_expression "(int)uVar4" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (expression_statement "piVar23 = piVar11;" (assignment_expression "piVar23 = piVar11" identifier = identifier) ;) (do_statement "do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);" do (compound_statement "{\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        }" { (expression_statement "uVar29 = uVar6 & 0x1f;" (assignment_expression "uVar29 = uVar6 & 0x1f" identifier = (binary_expression "uVar6 & 0x1f" identifier & number_literal)) ;) (expression_statement "*piVar23 = iVar12;" (assignment_expression "*piVar23 = iVar12" (pointer_expression "*piVar23" * identifier) = identifier) ;) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" identifier = (binary_expression "uVar6 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = iVar12 + (4 << uVar29);" (assignment_expression "iVar12 = iVar12 + (4 << uVar29)" identifier = (binary_expression "iVar12 + (4 << uVar29)" identifier + (parenthesized_expression "(4 << uVar29)" ( (binary_expression "4 << uVar29" number_literal << identifier) )))) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 != uVar4 + 1)" ( (binary_expression "uVar6 != uVar4 + 1" identifier != (binary_expression "uVar4 + 1" identifier + number_literal)) )) ;) })) (expression_statement "FUN_0003f560(piVar11,uVar4);" (call_expression "FUN_0003f560(piVar11,uVar4)" identifier (argument_list "(piVar11,uVar4)" ( identifier , identifier ))) ;) (if_statement "if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }" if (parenthesized_expression "(0 < iVar30)" ( (binary_expression "0 < iVar30" number_literal < identifier) )) (compound_statement "{\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }" { (expression_statement "iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;" (assignment_expression "iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1" identifier = (binary_expression "(iVar33 << (uVar4 & 0x1f)) + 1" (parenthesized_expression "(iVar33 << (uVar4 & 0x1f))" ( (binary_expression "iVar33 << (uVar4 & 0x1f)" identifier << (parenthesized_expression "(uVar4 & 0x1f)" ( (binary_expression "uVar4 & 0x1f" identifier & number_literal) ))) )) + number_literal)) ;) (expression_statement "pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4)" identifier = (cast_expression "(code *)(PTR_LAB_00097078 + 0xad4)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00097078 + 0xad4)" ( (binary_expression "PTR_LAB_00097078 + 0xad4" identifier + number_literal) )))) ;) (expression_statement "pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac)" identifier = (cast_expression "(code *)(PTR_LAB_00097078 + -0x4ac)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00097078 + -0x4ac)" ( (binary_expression "PTR_LAB_00097078 + -0x4ac" identifier + number_literal) )))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);" do (compound_statement "{\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        }" { (expression_statement "piVar32 = param_4 + iVar12;" (assignment_expression "piVar32 = param_4 + iVar12" identifier = (binary_expression "param_4 + iVar12" identifier + identifier)) ;) (expression_statement "piVar31 = (int *)*piVar32;" (assignment_expression "piVar31 = (int *)*piVar32" identifier = (cast_expression "(int *)*piVar32" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar32" * identifier))) ;) (expression_statement "piVar26 = piVar31 + param_7;" (assignment_expression "piVar26 = piVar31 + param_7" identifier = (binary_expression "piVar31 + param_7" identifier + identifier)) ;) (expression_statement "piVar23 = piVar31;" (assignment_expression "piVar23 = piVar31" identifier = identifier) ;) (if_statement "if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }" if (parenthesized_expression "(*piVar26 != 0)" ( (binary_expression "*piVar26 != 0" (pointer_expression "*piVar26" * identifier) != number_literal) )) (compound_statement "{\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }" { (do_statement "do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);" do (compound_statement "{\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            }" { (expression_statement "iVar21 = *piVar23;" (assignment_expression "iVar21 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "*piVar23 = iVar21 + -1;" (assignment_expression "*piVar23 = iVar21 + -1" (pointer_expression "*piVar23" * identifier) = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) ;) (expression_statement "piVar23 = piVar31;" (assignment_expression "piVar23 = piVar31" identifier = identifier) ;) (expression_statement "uVar6 = param_7;" (assignment_expression "uVar6 = param_7" identifier = identifier) ;) (if_statement "if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }" if (parenthesized_expression "(*piVar26 == 0)" ( (binary_expression "*piVar26 == 0" (pointer_expression "*piVar26" * identifier) == number_literal) )) (compound_statement "{\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }" { (do_statement "do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);" do (compound_statement "{\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              }" { (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "*piVar23 = 0;" (assignment_expression "*piVar23 = 0" (pointer_expression "*piVar23" * identifier) = number_literal) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (expression_statement "*piVar26 = 1;" (assignment_expression "*piVar26 = 1" (pointer_expression "*piVar26" * identifier) = number_literal) ;) }) (else_clause "else {\n              *piVar26 = 0;\n            }" else (compound_statement "{\n              *piVar26 = 0;\n            }" { (expression_statement "*piVar26 = 0;" (assignment_expression "*piVar26 = 0" (pointer_expression "*piVar26" * identifier) = number_literal) ;) }))) })) (if_statement "if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }" if (parenthesized_expression "(param_4 == local_74)" ( (binary_expression "param_4 == local_74" identifier == identifier) )) (compound_statement "{\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }" { (expression_statement "(*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);" (call_expression "(*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }" else (compound_statement "{\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }" { (expression_statement "piVar26 = (int *)local_74[iVar12];" (assignment_expression "piVar26 = (int *)local_74[iVar12]" identifier = (cast_expression "(int *)local_74[iVar12]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_74[iVar12]" identifier [ identifier ]))) ;) (expression_statement "piVar28 = piVar26 + param_7;" (assignment_expression "piVar28 = piVar26 + param_7" identifier = (binary_expression "piVar26 + param_7" identifier + identifier)) ;) (expression_statement "piVar23 = piVar26;" (assignment_expression "piVar23 = piVar26" identifier = identifier) ;) (if_statement "if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }" if (parenthesized_expression "(*piVar28 != 0)" ( (binary_expression "*piVar28 != 0" (pointer_expression "*piVar28" * identifier) != number_literal) )) (compound_statement "{\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }" { (do_statement "do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);" do (compound_statement "{\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              }" { (expression_statement "iVar21 = *piVar23;" (assignment_expression "iVar21 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "*piVar23 = iVar21 + -1;" (assignment_expression "*piVar23 = iVar21 + -1" (pointer_expression "*piVar23" * identifier) = (binary_expression "iVar21 + -1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar21 == 0)" ( (binary_expression "iVar21 == 0" identifier == number_literal) )) ;) (expression_statement "uVar6 = param_7;" (assignment_expression "uVar6 = param_7" identifier = identifier) ;) (if_statement "if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }" if (parenthesized_expression "(*piVar28 == 0)" ( (binary_expression "*piVar28 == 0" (pointer_expression "*piVar28" * identifier) == number_literal) )) (compound_statement "{\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }" { (do_statement "do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);" do (compound_statement "{\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                }" { (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ;) (expression_statement "*piVar26 = 0;" (assignment_expression "*piVar26 = 0" (pointer_expression "*piVar26" * identifier) = number_literal) ;) (expression_statement "piVar26 = piVar26 + 1;" (assignment_expression "piVar26 = piVar26 + 1" identifier = (binary_expression "piVar26 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }) (else_clause "else {\n                *piVar28 = 0;\n              }" else (compound_statement "{\n                *piVar28 = 0;\n              }" { (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" * identifier) = number_literal) ;) }))) })) (expression_statement "(*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);" (call_expression "(*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10)" ( identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);" (call_expression "(*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10)" (parenthesized_expression "(*pcVar15)" ( (pointer_expression "*pcVar15" * identifier) )) (argument_list "(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10)" ( identifier , identifier , identifier , identifier , (subscript_expression "local_74[iVar12]" identifier [ identifier ]) , identifier , identifier , identifier , identifier ))) ;) }))) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);" (assignment_expression "uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12)" identifier = (call_expression "(*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12)" ( (pointer_expression "*piVar32" * identifier) , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "*(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;" (assignment_expression "*(undefined4 *)(*piVar32 + param_7 * 4) = uVar16" (pointer_expression "*(undefined4 *)(*piVar32 + param_7 * 4)" * (cast_expression "(undefined4 *)(*piVar32 + param_7 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar32 + param_7 * 4)" ( (binary_expression "*piVar32 + param_7 * 4" (pointer_expression "*piVar32" * identifier) + (binary_expression "param_7 * 4" identifier * number_literal)) )))) = identifier) ;) }) while (parenthesized_expression "(iVar30 != iVar12)" ( (binary_expression "iVar30 != iVar12" identifier != identifier) )) ;) })) (goto_statement "goto LAB_00040f88;" goto statement_identifier ;) })) (expression_statement "(*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);" (call_expression "(*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_00097420)" ( (pointer_expression "*(code *)PTR___gmp_assert_fail_00097420" * (cast_expression "(code *)PTR___gmp_assert_fail_00097420" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490)" ( (binary_expression "PTR_DAT_0009706c + -0x149c" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0009706c + -0x1490" identifier + number_literal) ))) ;) (labeled_statement "LAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);" statement_identifier : (expression_statement "iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);" (assignment_expression "iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c)" identifier = (call_expression "(*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_00097420)" ( (pointer_expression "*(code *)PTR___gmp_assert_fail_00097420" * (cast_expression "(code *)PTR___gmp_assert_fail_00097420" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c)" ( (binary_expression "PTR_DAT_0009706c + -0x149c" identifier + number_literal) , number_literal , (binary_expression "PTR_DAT_0009706c + -0x147c" identifier + number_literal) )))) ;)) (labeled_statement "LAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);" statement_identifier : (expression_statement "piVar11 = (int *)((int)param_6 + iVar27);" (assignment_expression "piVar11 = (int *)((int)param_6 + iVar27)" identifier = (cast_expression "(int *)((int)param_6 + iVar27)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_6 + iVar27)" ( (binary_expression "(int)param_6 + iVar27" (cast_expression "(int)param_6" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;)) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;) (if_statement "if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }" if (parenthesized_expression "((iVar27 == 0) && (param_2 == (int *)0x1))" ( (binary_expression "(iVar27 == 0) && (param_2 == (int *)0x1)" (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) && (parenthesized_expression "(param_2 == (int *)0x1)" ( (binary_expression "param_2 == (int *)0x1" identifier == (cast_expression "(int *)0x1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }" { (expression_statement "iVar27 = piVar11[1];" (assignment_expression "iVar27 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (labeled_statement "LAB_00041a38:\n      piVar11[1] = iVar27 + -1;" statement_identifier : (expression_statement "piVar11[1] = iVar27 + -1;" (assignment_expression "piVar11[1] = iVar27 + -1" (subscript_expression "piVar11[1]" identifier [ number_literal ]) = (binary_expression "iVar27 + -1" identifier + number_literal)) ;)) (if_statement "if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }" if (parenthesized_expression "(iVar27 == 0)" ( (binary_expression "iVar27 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }" { (expression_statement "iVar27 = 2;" (assignment_expression "iVar27 = 2" identifier = number_literal) ;) (expression_statement "piVar11 = piVar11 + 2;" (assignment_expression "piVar11 = piVar11 + 2" identifier = (binary_expression "piVar11 + 2" identifier + number_literal)) ;) (do_statement "do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);" do (compound_statement "{\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        }" { (expression_statement "bVar1 = (int)param_2 < iVar27;" (assignment_expression "bVar1 = (int)param_2 < iVar27" identifier = (binary_expression "(int)param_2 < iVar27" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) break;" if (parenthesized_expression "(bVar1)" ( identifier )) (break_statement "break;" break ;)) (expression_statement "iVar30 = *piVar11;" (assignment_expression "iVar30 = *piVar11" identifier = (pointer_expression "*piVar11" * identifier)) ;) (expression_statement "*piVar11 = iVar30 + -1;" (assignment_expression "*piVar11 = iVar30 + -1" (pointer_expression "*piVar11" * identifier) = (binary_expression "iVar30 + -1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) ;) })) })) (labeled_statement "LAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;" statement_identifier : (expression_statement "param_6[local_58] = param_6[local_58] + -1;" (assignment_expression "param_6[local_58] = param_6[local_58] + -1" (subscript_expression "param_6[local_58]" identifier [ identifier ]) = (binary_expression "param_6[local_58] + -1" (subscript_expression "param_6[local_58]" identifier [ identifier ]) + number_literal)) ;)) }))) (labeled_statement "LAB_000412d8:\n  iVar27 = local_64 - local_60;" statement_identifier : (expression_statement "iVar27 = local_64 - local_60;" (assignment_expression "iVar27 = local_64 - local_60" identifier = (binary_expression "local_64 - local_60" identifier - identifier)) ;)) (if_statement "if (iVar27 < 1) {\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }" if (parenthesized_expression "(iVar27 < 1)" ( (binary_expression "iVar27 < 1" identifier < number_literal) )) (compound_statement "{\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }" { (if_statement "if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }" if (parenthesized_expression "(param_2 != (int *)0x0)" ( (binary_expression "param_2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }" { (expression_statement "iVar30 = (int)param_2 + -1;" (assignment_expression "iVar30 = (int)param_2 + -1" identifier = (binary_expression "(int)param_2 + -1" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "iVar7 = *param_6;" (assignment_expression "iVar7 = *param_6" identifier = (pointer_expression "*param_6" * identifier)) ;) (expression_statement "piVar23 = param_1;" (assignment_expression "piVar23 = param_1" identifier = identifier) ;) (expression_statement "piVar11 = param_6;" (assignment_expression "piVar11 = param_6" identifier = identifier) ;) (if_statement "if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }" if (parenthesized_expression "(iVar30 == 0)" ( (binary_expression "iVar30 == 0" identifier == number_literal) )) (compound_statement "{\n        *param_1 = iVar7;\n      }" { (expression_statement "*param_1 = iVar7;" (assignment_expression "*param_1 = iVar7" (pointer_expression "*param_1" * identifier) = identifier) ;) }) (else_clause "else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }" else (compound_statement "{\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }" { (do_statement "do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);" do (compound_statement "{\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        }" { (expression_statement "*piVar23 = iVar7;" (assignment_expression "*piVar23 = iVar7" (pointer_expression "*piVar23" * identifier) = identifier) ;) (expression_statement "iVar30 = iVar30 + -1;" (assignment_expression "iVar30 = iVar30 + -1" identifier = (binary_expression "iVar30 + -1" identifier + number_literal)) ;) (expression_statement "iVar7 = piVar11[1];" (assignment_expression "iVar7 = piVar11[1]" identifier = (subscript_expression "piVar11[1]" identifier [ number_literal ])) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" identifier = (binary_expression "piVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar30 != 0)" ( (binary_expression "iVar30 != 0" identifier != number_literal) )) ;) (expression_statement "param_1[(int)param_2 + -1] = iVar7;" (assignment_expression "param_1[(int)param_2 + -1] = iVar7" (subscript_expression "param_1[(int)param_2 + -1]" identifier [ (binary_expression "(int)param_2 + -1" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ]) = identifier) ;) }))) })) (expression_statement "uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_00097514)" ( (pointer_expression "*(code *)PTR___gmpn_sub_n_00097514" * (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27)" ( identifier , identifier , (binary_expression "param_6 + (int)param_2" identifier + (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "(int)param_2 + iVar27" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);" (assignment_expression "puVar19 = (uint *)(param_1 + (int)param_2 + iVar27)" identifier = (cast_expression "(uint *)(param_1 + (int)param_2 + iVar27)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + (int)param_2 + iVar27)" ( (binary_expression "param_1 + (int)param_2 + iVar27" (binary_expression "param_1 + (int)param_2" identifier + (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) + identifier) )))) ;) (expression_statement "uVar25 = *puVar19;" (assignment_expression "uVar25 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "piVar11 = (int *)(uVar25 - uVar4);" (assignment_expression "piVar11 = (int *)(uVar25 - uVar4)" identifier = (cast_expression "(int *)(uVar25 - uVar4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar25 - uVar4)" ( (binary_expression "uVar25 - uVar4" identifier - identifier) )))) ;) (expression_statement "*puVar19 = (uint)piVar11;" (assignment_expression "*puVar19 = (uint)piVar11" (pointer_expression "*puVar19" * identifier) = (cast_expression "(uint)piVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }" if (parenthesized_expression "(uVar25 < uVar4)" ( (binary_expression "uVar25 < uVar4" identifier < identifier) )) (compound_statement "{\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }" { (if_statement "if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }" if (parenthesized_expression "(local_60 - local_64 < 2)" ( (binary_expression "local_60 - local_64 < 2" (binary_expression "local_60 - local_64" identifier - identifier) < number_literal) )) (compound_statement "{\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }" { (labeled_statement "LAB_000413d8:\n        iVar27 = *param_1;" statement_identifier : (expression_statement "iVar27 = *param_1;" (assignment_expression "iVar27 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;)) (expression_statement "*param_1 = iVar27 + 1;" (assignment_expression "*param_1 = iVar27 + 1" (pointer_expression "*param_1" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 == 0) goto LAB_000413ec;" if (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) (goto_statement "goto LAB_000413ec;" goto statement_identifier ;)) }) (else_clause "else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }" else (compound_statement "{\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }" { (expression_statement "uVar4 = puVar19[1];" (assignment_expression "uVar4 = puVar19[1]" identifier = (subscript_expression "puVar19[1]" identifier [ number_literal ])) ;) (expression_statement "puVar19[1] = uVar4 - 1;" (assignment_expression "puVar19[1] = uVar4 - 1" (subscript_expression "puVar19[1]" identifier [ number_literal ]) = (binary_expression "uVar4 - 1" identifier - number_literal)) ;) (if_statement "if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }" { (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" identifier = number_literal) ;) (expression_statement "puVar19 = puVar19 + 2;" (assignment_expression "puVar19 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (do_statement "do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);" do (compound_statement "{\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          }" { (expression_statement "bVar1 = local_60 - local_64 == iVar30;" (assignment_expression "bVar1 = local_60 - local_64 == iVar30" identifier = (binary_expression "local_60 - local_64 == iVar30" (binary_expression "local_60 - local_64" identifier - identifier) == identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (if_statement "if (bVar1) goto LAB_000413d8;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_000413d8;" goto statement_identifier ;)) (expression_statement "uVar4 = *puVar19;" (assignment_expression "uVar4 = *puVar19" identifier = (pointer_expression "*puVar19" * identifier)) ;) (expression_statement "piVar11 = (int *)(uVar4 - 1);" (assignment_expression "piVar11 = (int *)(uVar4 - 1)" identifier = (cast_expression "(int *)(uVar4 - 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar4 - 1)" ( (binary_expression "uVar4 - 1" identifier - number_literal) )))) ;) (expression_statement "*puVar19 = (uint)piVar11;" (assignment_expression "*puVar19 = (uint)piVar11" (pointer_expression "*puVar19" * identifier) = (cast_expression "(uint)piVar11" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) ;) (goto_statement "goto LAB_000418b4;" goto statement_identifier ;) })) }))) })) }) (else_clause "else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }" else (compound_statement "{\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }" { (expression_statement "uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27)" identifier = (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" ( (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" * (cast_expression "(code *)PTR___gmpn_add_n_00097334" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_6,param_6 + (int)param_2 * 2,iVar27)" ( identifier , identifier , (binary_expression "param_6 + (int)param_2 * 2" identifier + (binary_expression "(int)param_2 * 2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) , identifier )))) ;) (expression_statement "puVar18 = (uint *)(param_6 + iVar27);" (assignment_expression "puVar18 = (uint *)(param_6 + iVar27)" identifier = (cast_expression "(uint *)(param_6 + iVar27)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_6 + iVar27)" ( (binary_expression "param_6 + iVar27" identifier + identifier) )))) ;) (expression_statement "puVar19 = (uint *)(param_1 + iVar27);" (assignment_expression "puVar19 = (uint *)(param_1 + iVar27)" identifier = (cast_expression "(uint *)(param_1 + iVar27)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + iVar27)" ( (binary_expression "param_1 + iVar27" identifier + identifier) )))) ;) (expression_statement "iVar27 = (int)param_2 - iVar27;" (assignment_expression "iVar27 = (int)param_2 - iVar27" identifier = (binary_expression "(int)param_2 - iVar27" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) - identifier)) ;) (expression_statement "uVar25 = *puVar18;" (assignment_expression "uVar25 = *puVar18" identifier = (pointer_expression "*puVar18" * identifier)) ;) (expression_statement "*puVar19 = uVar4 + uVar25;" (assignment_expression "*puVar19 = uVar4 + uVar25" (pointer_expression "*puVar19" * identifier) = (binary_expression "uVar4 + uVar25" identifier + identifier)) ;) (if_statement "if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }" if (parenthesized_expression "(uVar4 + uVar25 < uVar4)" ( (binary_expression "uVar4 + uVar25 < uVar4" (binary_expression "uVar4 + uVar25" identifier + identifier) < identifier) )) (compound_statement "{\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }" { (if_statement "if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }" if (parenthesized_expression "(iVar27 < 2)" ( (binary_expression "iVar27 < 2" identifier < number_literal) )) (compound_statement "{\nLAB_00041994:\n        iVar27 = 1;\n      }" { (labeled_statement "LAB_00041994:\n        iVar27 = 1;" statement_identifier : (expression_statement "iVar27 = 1;" (assignment_expression "iVar27 = 1" identifier = number_literal) ;)) }) (else_clause "else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }" else (compound_statement "{\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }" { (expression_statement "uVar4 = puVar18[1];" (assignment_expression "uVar4 = puVar18[1]" identifier = (subscript_expression "puVar18[1]" identifier [ number_literal ])) ;) (expression_statement "puVar19[1] = uVar4 + 1;" (assignment_expression "puVar19[1] = uVar4 + 1" (subscript_expression "puVar19[1]" identifier [ number_literal ]) = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (if_statement "if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }" if (parenthesized_expression "(uVar4 + 1 == 0)" ( (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }" { (expression_statement "puVar20 = puVar18 + 2;" (assignment_expression "puVar20 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" identifier = number_literal) ;) (expression_statement "puVar22 = puVar19 + 2;" (assignment_expression "puVar22 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (do_statement "do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);" do (compound_statement "{\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          }" { (if_statement "if (iVar27 == iVar30) goto LAB_00041994;" if (parenthesized_expression "(iVar27 == iVar30)" ( (binary_expression "iVar27 == iVar30" identifier == identifier) )) (goto_statement "goto LAB_00041994;" goto statement_identifier ;)) (expression_statement "uVar4 = *puVar20;" (assignment_expression "uVar4 = *puVar20" identifier = (pointer_expression "*puVar20" * identifier)) ;) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" identifier = (binary_expression "iVar30 + 1" identifier + number_literal)) ;) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" identifier = (binary_expression "puVar20 + 1" identifier + number_literal)) ;) (expression_statement "*puVar22 = uVar4 + 1;" (assignment_expression "*puVar22 = uVar4 + 1" (pointer_expression "*puVar22" * identifier) = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar4 + 1 == 0)" ( (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" identifier + number_literal) == number_literal) )) ;) }) (else_clause "else {\n          iVar30 = 2;\n        }" else (compound_statement "{\n          iVar30 = 2;\n        }" { (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" identifier = number_literal) ;) }))) (if_statement "if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;" if (parenthesized_expression "((puVar19 == puVar18) || (iVar27 <= iVar30))" ( (binary_expression "(puVar19 == puVar18) || (iVar27 <= iVar30)" (parenthesized_expression "(puVar19 == puVar18)" ( (binary_expression "puVar19 == puVar18" identifier == identifier) )) || (parenthesized_expression "(iVar27 <= iVar30)" ( (binary_expression "iVar27 <= iVar30" identifier <= identifier) ))) )) (goto_statement "goto LAB_00041acc;" goto statement_identifier ;)) (expression_statement "puVar22 = puVar18 + iVar30;" (assignment_expression "puVar22 = puVar18 + iVar30" identifier = (binary_expression "puVar18 + iVar30" identifier + identifier)) ;) (expression_statement "puVar19 = puVar19 + iVar30;" (assignment_expression "puVar19 = puVar19 + iVar30" identifier = (binary_expression "puVar19 + iVar30" identifier + identifier)) ;) (do_statement "do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);" do (compound_statement "{\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        }" { (expression_statement "uVar4 = *puVar22;" (assignment_expression "uVar4 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) (expression_statement "*puVar19 = uVar4;" (assignment_expression "*puVar19 = uVar4" (pointer_expression "*puVar19" * identifier) = identifier) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar22 != puVar18 + iVar27)" ( (binary_expression "puVar22 != puVar18 + iVar27" identifier != (binary_expression "puVar18 + iVar27" identifier + identifier)) )) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }" else (compound_statement "{\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }" { (if_statement "if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }" if (parenthesized_expression "((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27))" ( (binary_expression "(puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)" (parenthesized_expression "(puVar19 != puVar18)" ( (binary_expression "puVar19 != puVar18" identifier != identifier) )) && (parenthesized_expression "(puVar22 = puVar18 + 1, 1 < iVar27)" ( (comma_expression "puVar22 = puVar18 + 1, 1 < iVar27" (assignment_expression "puVar22 = puVar18 + 1" identifier = (binary_expression "puVar18 + 1" identifier + number_literal)) , (binary_expression "1 < iVar27" number_literal < identifier)) ))) )) (compound_statement "{\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }" { (do_statement "do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);" do (compound_statement "{\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        }" { (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "uVar4 = *puVar22;" (assignment_expression "uVar4 = *puVar22" identifier = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" identifier = (binary_expression "puVar22 + 1" identifier + number_literal)) ;) (expression_statement "*puVar19 = uVar4;" (assignment_expression "*puVar19 = uVar4" (pointer_expression "*puVar19" * identifier) = identifier) ;) }) while (parenthesized_expression "(puVar18 + iVar27 != puVar22)" ( (binary_expression "puVar18 + iVar27 != puVar22" (binary_expression "puVar18 + iVar27" identifier + identifier) != identifier) )) ;) })) (labeled_statement "LAB_00041acc:\n      iVar27 = 0;" statement_identifier : (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;)) }))) (expression_statement "piVar11 = param_1;" (assignment_expression "piVar11 = param_1" identifier = identifier) ;) (expression_statement "uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2)" identifier = (call_expression "(*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_00097514)" ( (pointer_expression "*(code *)PTR___gmpn_sub_n_00097514" * (cast_expression "(code *)PTR___gmpn_sub_n_00097514" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_1,param_1,param_6 + (int)param_2,param_2)" ( identifier , identifier , (binary_expression "param_6 + (int)param_2" identifier + (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) , identifier )))) ;) (expression_statement "uVar25 = param_1[(int)param_2];" (assignment_expression "uVar25 = param_1[(int)param_2]" identifier = (subscript_expression "param_1[(int)param_2]" identifier [ (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "param_1[(int)param_2] = uVar25 - uVar4;" (assignment_expression "param_1[(int)param_2] = uVar25 - uVar4" (subscript_expression "param_1[(int)param_2]" identifier [ (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) ]) = (binary_expression "uVar25 - uVar4" identifier - identifier)) ;) (if_statement "if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;" if (parenthesized_expression "((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1))" ( (binary_expression "(uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)" (parenthesized_expression "(uVar4 <= uVar25)" ( (binary_expression "uVar4 <= uVar25" identifier <= identifier) )) || (parenthesized_expression "(iVar27 = iVar27 + -1, iVar27 != -1)" ( (comma_expression "iVar27 = iVar27 + -1, iVar27 != -1" (assignment_expression "iVar27 = iVar27 + -1" identifier = (binary_expression "iVar27 + -1" identifier + number_literal)) , (binary_expression "iVar27 != -1" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000418b4;" goto statement_identifier ;)) (expression_statement "iVar27 = *param_1;" (assignment_expression "iVar27 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_1 = iVar27 + 1;" (assignment_expression "*param_1 = iVar27 + 1" (pointer_expression "*param_1" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }" if (parenthesized_expression "(iVar27 + 1 != 0)" ( (binary_expression "iVar27 + 1 != 0" (binary_expression "iVar27 + 1" identifier + number_literal) != number_literal) )) (compound_statement "{\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }" { (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000418b4;" goto statement_identifier ;) })) (labeled_statement "LAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }" statement_identifier : (if_statement "if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }" if (parenthesized_expression "((int)param_2 < 2)" ( (binary_expression "(int)param_2 < 2" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }" { (labeled_statement "LAB_00041438:\n      iVar27 = 1;" statement_identifier : (expression_statement "iVar27 = 1;" (assignment_expression "iVar27 = 1" identifier = number_literal) ;)) (goto_statement "goto LAB_000418b4;" goto statement_identifier ;) }))) (expression_statement "iVar27 = param_1[1];" (assignment_expression "iVar27 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_1[1] = iVar27 + 1;" (assignment_expression "param_1[1] = iVar27 + 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (if_statement "if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }" if (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) (compound_statement "{\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }" { (expression_statement "piVar26 = (int *)0x2;" (assignment_expression "piVar26 = (int *)0x2" identifier = (cast_expression "(int *)0x2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar23 = param_1 + 2;" (assignment_expression "piVar23 = param_1 + 2" identifier = (binary_expression "param_1 + 2" identifier + number_literal)) ;) (do_statement "do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);" do (compound_statement "{\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      }" { (expression_statement "bVar1 = param_2 == piVar26;" (assignment_expression "bVar1 = param_2 == piVar26" identifier = (binary_expression "param_2 == piVar26" identifier == identifier)) ;) (expression_statement "piVar26 = (int *)((int)piVar26 + 1);" (assignment_expression "piVar26 = (int *)((int)piVar26 + 1)" identifier = (cast_expression "(int *)((int)piVar26 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar26 + 1)" ( (binary_expression "(int)piVar26 + 1" (cast_expression "(int)piVar26" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "piVar11 = param_2;" (assignment_expression "piVar11 = param_2" identifier = identifier) ;) (if_statement "if (bVar1) goto LAB_00041438;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00041438;" goto statement_identifier ;)) (expression_statement "iVar27 = *piVar23;" (assignment_expression "iVar27 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "*piVar23 = iVar27 + 1;" (assignment_expression "*piVar23 = iVar27 + 1" (pointer_expression "*piVar23" * identifier) = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 + 1 == 0)" ( (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" identifier + number_literal) == number_literal) )) ;) })) }))) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (labeled_statement "LAB_000418b4:\n  if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }" statement_identifier : (if_statement "if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }" if (parenthesized_expression "(local_2c != *(int *)puVar3)" ( (binary_expression "local_2c != *(int *)puVar3" identifier != (pointer_expression "*(int *)puVar3" * (cast_expression "(int *)puVar3" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }" { (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" * (cast_expression "(code *)PTR___stack_chk_fail_000974d0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (return_statement "return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);" return (binary_expression "(local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f)" (binary_expression "(local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1" (parenthesized_expression "(local_2c + -1 >> ((uint)piVar11 & 0x1f))" ( (binary_expression "local_2c + -1 >> ((uint)piVar11 & 0x1f)" (binary_expression "local_2c + -1" identifier + number_literal) >> (parenthesized_expression "((uint)piVar11 & 0x1f)" ( (binary_expression "(uint)piVar11 & 0x1f" (cast_expression "(uint)piVar11" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) )) + number_literal) << (parenthesized_expression "((uint)piVar11 & 0x1f)" ( (binary_expression "(uint)piVar11 & 0x1f" (cast_expression "(uint)piVar11" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) ))) ;) }))) (return_statement "return iVar27;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (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 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 (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 ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT * LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (comma_expression (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression IDENT + LIT) != LIT))) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ IDENT ]))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT , IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + (pointer_expression * IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (comma_expression (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) , (binary_expression (binary_expression IDENT + IDENT) < IDENT))) ))) )) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT << LIT) )))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression IDENT + LIT) == LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + (binary_expression IDENT * LIT))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (binary_expression (binary_expression IDENT * LIT) - IDENT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) - (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , (pointer_expression * IDENT) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (parenthesized_expression ( (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) ))) )))) )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (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) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (binary_expression IDENT + IDENT) + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (subscript_expression IDENT [ (binary_expression (binary_expression IDENT - IDENT) & (cast_expression ( (type_descriptor TYPE) ) IDENT)) ]) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) , (binary_expression (binary_expression IDENT + LIT) == LIT))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) }))) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (binary_expression IDENT - IDENT) & (cast_expression ( (type_descriptor TYPE) ) IDENT)) ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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 = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) == IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) }))) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT) )) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - 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 + (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) == LIT) )) (break_statement break ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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 = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) != LIT) )) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT - LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * LIT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) , (comma_expression (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) , (binary_expression IDENT == LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( IDENT )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < LIT) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT != IDENT)) , (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (goto_statement goto statement_identifier ;)) })) })) }))) })))) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & IDENT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT << LIT) ))) >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) * LIT) + IDENT) + LIT) + IDENT) ))) / IDENT) )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & IDENT) )) == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - IDENT) & (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) - LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << LIT)) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) << LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression IDENT * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) * LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression & IDENT) , (binary_expression LIT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (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)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression LIT << IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + LIT)) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT << (parenthesized_expression ( (binary_expression IDENT & LIT) ))) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (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 + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ IDENT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT , (subscript_expression IDENT [ IDENT ]) , IDENT , IDENT , IDENT , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression * IDENT) , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != 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 ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT , (binary_expression IDENT + LIT) )))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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 = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (binary_expression (subscript_expression IDENT [ IDENT ]) + LIT)) ;)) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ]) = IDENT) ;) }))) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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 = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT - IDENT) == IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (goto_statement goto statement_identifier ;) })) }))) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (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 IDENT + IDENT)) ;) (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 * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + IDENT)) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression LIT < IDENT)) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) == LIT) )) ;) })) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (return_statement return (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) )) + LIT) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int FUN_00040ad4(int *param_1,int *param_2,uint param_3,int *param_4,int *param_5,int *param_6,\n                uint param_7,int param_8,int param_9,int param_10,undefined4 *param_11,int param_12)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  undefined4 *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint *puVar20;\n  int iVar21;\n  uint *puVar22;\n  int *piVar23;\n  int iVar24;\n  uint uVar25;\n  int *piVar26;\n  int iVar27;\n  int *piVar28;\n  uint uVar29;\n  int iVar30;\n  int *piVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  int *local_74;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_58;\n  int local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  iVar30 = 1 << (param_3 & 0x1f);\n  param_10 = param_10 + param_3 * 4;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar27 = param_9 << 1;\n  FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11);\n  if (param_12 == 0) {\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }\nLAB_000412d8:\n  iVar27 = local_64 - local_60;\n  if (iVar27 < 1) {\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }\n  iVar27 = 0;\nLAB_000418b4:\n  if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }\n  return iVar27;\n}" (primitive_type "int") (function_declarator "FUN_00040ad4(int *param_1,int *param_2,uint param_3,int *param_4,int *param_5,int *param_6,\n                uint param_7,int param_8,int param_9,int param_10,undefined4 *param_11,int param_12)" (identifier "FUN_00040ad4") (parameter_list "(int *param_1,int *param_2,uint param_3,int *param_4,int *param_5,int *param_6,\n                uint param_7,int param_8,int param_9,int param_10,undefined4 *param_11,int param_12)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "int *param_5" (primitive_type "int") (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) (, ",") (parameter_declaration "int *param_6" (primitive_type "int") (pointer_declarator "*param_6" (* "*") (identifier "param_6"))) (, ",") (parameter_declaration "uint param_7" (type_identifier "uint") (identifier "param_7")) (, ",") (parameter_declaration "int param_8" (primitive_type "int") (identifier "param_8")) (, ",") (parameter_declaration "int param_9" (primitive_type "int") (identifier "param_9")) (, ",") (parameter_declaration "int param_10" (primitive_type "int") (identifier "param_10")) (, ",") (parameter_declaration "undefined4 *param_11" (type_identifier "undefined4") (pointer_declarator "*param_11" (* "*") (identifier "param_11"))) (, ",") (parameter_declaration "int param_12" (primitive_type "int") (identifier "param_12")) () ")"))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  undefined *puVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  undefined4 uVar8;\n  undefined4 uVar9;\n  undefined4 uVar10;\n  int *piVar11;\n  int iVar12;\n  int iVar13;\n  code *pcVar14;\n  code *pcVar15;\n  undefined4 uVar16;\n  undefined4 *puVar17;\n  uint *puVar18;\n  uint *puVar19;\n  uint *puVar20;\n  int iVar21;\n  uint *puVar22;\n  int *piVar23;\n  int iVar24;\n  uint uVar25;\n  int *piVar26;\n  int iVar27;\n  int *piVar28;\n  uint uVar29;\n  int iVar30;\n  int *piVar31;\n  int *piVar32;\n  int iVar33;\n  int iVar34;\n  int *local_74;\n  int local_68;\n  int local_64;\n  int local_60;\n  int local_58;\n  int local_30;\n  int local_2c;\n  \n  puVar3 = PTR___stack_chk_guard_00097540;\n  iVar30 = 1 << (param_3 & 0x1f);\n  param_10 = param_10 + param_3 * 4;\n  local_2c = *(int *)PTR___stack_chk_guard_00097540;\n  iVar27 = param_9 << 1;\n  FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11);\n  if (param_12 == 0) {\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }\nLAB_000412d8:\n  iVar27 = local_64 - local_60;\n  if (iVar27 < 1) {\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }\n  iVar27 = 0;\nLAB_000418b4:\n  if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }\n  return iVar27;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "undefined4 uVar8;" (type_identifier "undefined4") (identifier "uVar8") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "code *pcVar14;" (type_identifier "code") (pointer_declarator "*pcVar14" (* "*") (identifier "pcVar14")) (; ";")) (declaration "code *pcVar15;" (type_identifier "code") (pointer_declarator "*pcVar15" (* "*") (identifier "pcVar15")) (; ";")) (declaration "undefined4 uVar16;" (type_identifier "undefined4") (identifier "uVar16") (; ";")) (declaration "undefined4 *puVar17;" (type_identifier "undefined4") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "uint *puVar18;" (type_identifier "uint") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "uint *puVar19;" (type_identifier "uint") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "uint *puVar20;" (type_identifier "uint") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "uint *puVar22;" (type_identifier "uint") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "int *piVar23;" (primitive_type "int") (pointer_declarator "*piVar23" (* "*") (identifier "piVar23")) (; ";")) (declaration "int iVar24;" (primitive_type "int") (identifier "iVar24") (; ";")) (declaration "uint uVar25;" (type_identifier "uint") (identifier "uVar25") (; ";")) (declaration "int *piVar26;" (primitive_type "int") (pointer_declarator "*piVar26" (* "*") (identifier "piVar26")) (; ";")) (declaration "int iVar27;" (primitive_type "int") (identifier "iVar27") (; ";")) (declaration "int *piVar28;" (primitive_type "int") (pointer_declarator "*piVar28" (* "*") (identifier "piVar28")) (; ";")) (declaration "uint uVar29;" (type_identifier "uint") (identifier "uVar29") (; ";")) (declaration "int iVar30;" (primitive_type "int") (identifier "iVar30") (; ";")) (declaration "int *piVar31;" (primitive_type "int") (pointer_declarator "*piVar31" (* "*") (identifier "piVar31")) (; ";")) (declaration "int *piVar32;" (primitive_type "int") (pointer_declarator "*piVar32" (* "*") (identifier "piVar32")) (; ";")) (declaration "int iVar33;" (primitive_type "int") (identifier "iVar33") (; ";")) (declaration "int iVar34;" (primitive_type "int") (identifier "iVar34") (; ";")) (declaration "int *local_74;" (primitive_type "int") (pointer_declarator "*local_74" (* "*") (identifier "local_74")) (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "int local_64;" (primitive_type "int") (identifier "local_64") (; ";")) (declaration "int local_60;" (primitive_type "int") (identifier "local_60") (; ";")) (declaration "int local_58;" (primitive_type "int") (identifier "local_58") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar3 = PTR___stack_chk_guard_00097540;" (assignment_expression "puVar3 = PTR___stack_chk_guard_00097540" (identifier "puVar3") (= "=") (identifier "PTR___stack_chk_guard_00097540")) (; ";")) (expression_statement "iVar30 = 1 << (param_3 & 0x1f);" (assignment_expression "iVar30 = 1 << (param_3 & 0x1f)" (identifier "iVar30") (= "=") (binary_expression "1 << (param_3 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(param_3 & 0x1f)" (( "(") (binary_expression "param_3 & 0x1f" (identifier "param_3") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "param_10 = param_10 + param_3 * 4;" (assignment_expression "param_10 = param_10 + param_3 * 4" (identifier "param_10") (= "=") (binary_expression "param_10 + param_3 * 4" (identifier "param_10") (+ "+") (binary_expression "param_3 * 4" (identifier "param_3") (* "*") (number_literal "4")))) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00097540;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00097540" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00097540" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00097540" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00097540")))) (; ";")) (expression_statement "iVar27 = param_9 << 1;" (assignment_expression "iVar27 = param_9 << 1" (identifier "iVar27") (= "=") (binary_expression "param_9 << 1" (identifier "param_9") (<< "<<") (number_literal "1"))) (; ";")) (expression_statement "FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11);" (call_expression "FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11)" (identifier "FUN_00040208") (argument_list "(param_4,iVar30,param_10,iVar27,param_7,1,param_11)" (( "(") (identifier "param_4") (, ",") (identifier "iVar30") (, ",") (identifier "param_10") (, ",") (identifier "iVar27") (, ",") (identifier "param_7") (, ",") (number_literal "1") (, ",") (identifier "param_11") () ")"))) (; ";")) (if_statement "if (param_12 == 0) {\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }\n  else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }" (if "if") (parenthesized_expression "(param_12 == 0)" (( "(") (binary_expression "param_12 == 0" (identifier "param_12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);\n    if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }\n    iVar7 = 0x270;\n    local_74 = param_5;\n    if (0x26f < (int)param_7) goto LAB_00040bc8;\nLAB_0004149c:\n    local_30 = 0;\n    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);\n    puVar18 = puVar19 + param_7;\n    if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }\nLAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }\n    iVar7 = param_7 + 1;\n    piVar23 = param_11 + iVar7;\n    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);\n    puVar2 = PTR_LAB_00097078;\n    *param_5 = (int)piVar23;\n    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);\n    piVar26 = piVar23 + param_7;\n    piVar11 = piVar23;\n    if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }\n    if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }\n    local_74 = (int *)(iVar30 - 1);\n    puVar17 = param_11;\n    iVar27 = iVar7;\n    if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }\n    iVar5 = (int)local_74 * param_8;\n    local_60 = (int)param_2 * 2;\n    local_58 = param_7 + iVar5;\n    local_64 = local_58 + 1;\n    piVar11 = param_6;\n    iVar27 = local_64;\n    if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }\n    if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }\n  }" ({ "{") (expression_statement "FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);" (call_expression "FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11)" (identifier "FUN_00040208") (argument_list "(param_5,iVar30,param_10,iVar27,param_7,1,param_11)" (( "(") (identifier "param_5") (, ",") (identifier "iVar30") (, ",") (identifier "param_10") (, ",") (identifier "iVar27") (, ",") (identifier "param_7") (, ",") (number_literal "1") (, ",") (identifier "param_11") () ")"))) (; ";")) (if_statement "if (param_4 == param_5) {\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }" (if "if") (parenthesized_expression "(param_4 == param_5)" (( "(") (binary_expression "param_4 == param_5" (identifier "param_4") (== "==") (identifier "param_5")) () ")")) (compound_statement "{\n      param_12 = 1;\n      goto LAB_00040bb8;\n    }" ({ "{") (expression_statement "param_12 = 1;" (assignment_expression "param_12 = 1" (identifier "param_12") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00040bb8;" (goto "goto") (statement_identifier "LAB_00040bb8") (; ";")) (} "}"))) (expression_statement "iVar7 = 0x270;" (assignment_expression "iVar7 = 0x270" (identifier "iVar7") (= "=") (number_literal "0x270")) (; ";")) (expression_statement "local_74 = param_5;" (assignment_expression "local_74 = param_5" (identifier "local_74") (= "=") (identifier "param_5")) (; ";")) (if_statement "if (0x26f < (int)param_7) goto LAB_00040bc8;" (if "if") (parenthesized_expression "(0x26f < (int)param_7)" (( "(") (binary_expression "0x26f < (int)param_7" (number_literal "0x26f") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (goto_statement "goto LAB_00040bc8;" (goto "goto") (statement_identifier "LAB_00040bc8") (; ";"))) (labeled_statement "LAB_0004149c:\n    local_30 = 0;" (statement_identifier "LAB_0004149c") (: ":") (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";"))) (expression_statement "puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);" (assignment_expression "puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8)" (identifier "puVar19") (= "=") (cast_expression "(uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_000972f0"))) () ")")) (argument_list "(&local_30,param_7 * 8)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (binary_expression "param_7 * 8" (identifier "param_7") (* "*") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "puVar18 = puVar19 + param_7;" (assignment_expression "puVar18 = puVar19 + param_7" (identifier "puVar18") (= "=") (binary_expression "puVar19 + param_7" (identifier "puVar19") (+ "+") (identifier "param_7"))) (; ";")) (if_statement "if (0 < iVar30) {\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }" (if "if") (parenthesized_expression "(0 < iVar30)" (( "(") (binary_expression "0 < iVar30" (number_literal "0") (< "<") (identifier "iVar30")) () ")")) (compound_statement "{\n      iVar5 = 0;\n      piVar11 = (int *)*param_4;\n      iVar7 = *local_74;\n      if (param_4 == local_74) goto LAB_000415dc;\nLAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);\n      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);\n      uVar4 = *puVar22;\n      piVar23 = (int *)(iVar7 + param_7 * 4);\n      if (uVar4 != 0) goto LAB_0004160c;\n      do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);\nLAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);\n      if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }\n      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }\n      goto LAB_00041544;\n    }" ({ "{") (expression_statement "iVar5 = 0;" (assignment_expression "iVar5 = 0" (identifier "iVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar11 = (int *)*param_4;" (assignment_expression "piVar11 = (int *)*param_4" (identifier "piVar11") (= "=") (cast_expression "(int *)*param_4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (expression_statement "iVar7 = *local_74;" (assignment_expression "iVar7 = *local_74" (identifier "iVar7") (= "=") (pointer_expression "*local_74" (* "*") (identifier "local_74"))) (; ";")) (if_statement "if (param_4 == local_74) goto LAB_000415dc;" (if "if") (parenthesized_expression "(param_4 == local_74)" (( "(") (binary_expression "param_4 == local_74" (identifier "param_4") (== "==") (identifier "local_74")) () ")")) (goto_statement "goto LAB_000415dc;" (goto "goto") (statement_identifier "LAB_000415dc") (; ";"))) (labeled_statement "LAB_000414fc:\n      puVar22 = (uint *)(piVar11 + param_7);" (statement_identifier "LAB_000414fc") (: ":") (expression_statement "puVar22 = (uint *)(piVar11 + param_7);" (assignment_expression "puVar22 = (uint *)(piVar11 + param_7)" (identifier "puVar22") (= "=") (cast_expression "(uint *)(piVar11 + param_7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + param_7)" (( "(") (binary_expression "piVar11 + param_7" (identifier "piVar11") (+ "+") (identifier "param_7")) () ")")))) (; ";"))) (expression_statement "(*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);" (call_expression "(*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_mul_n_00097364)" (( "(") (pointer_expression "*(code *)PTR___gmpn_mul_n_00097364" (* "*") (cast_expression "(code *)PTR___gmpn_mul_n_00097364" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_mul_n_00097364"))) () ")")) (argument_list "(puVar19,iVar7,piVar11,param_7)" (( "(") (identifier "puVar19") (, ",") (identifier "iVar7") (, ",") (identifier "piVar11") (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "uVar4 = *puVar22;" (assignment_expression "uVar4 = *puVar22" (identifier "uVar4") (= "=") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))) (; ";")) (expression_statement "piVar23 = (int *)(iVar7 + param_7 * 4);" (assignment_expression "piVar23 = (int *)(iVar7 + param_7 * 4)" (identifier "piVar23") (= "=") (cast_expression "(int *)(iVar7 + param_7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + param_7 * 4)" (( "(") (binary_expression "iVar7 + param_7 * 4" (identifier "iVar7") (+ "+") (binary_expression "param_7 * 4" (identifier "param_7") (* "*") (number_literal "4"))) () ")")))) (; ";")) (if_statement "if (uVar4 != 0) goto LAB_0004160c;" (if "if") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0004160c;" (goto "goto") (statement_identifier "LAB_0004160c") (; ";"))) (do_statement "do {\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      } while (uVar4 == 0);" (do "do") (compound_statement "{\n        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        if (*piVar23 != 0) goto LAB_00041640;\nLAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);\n        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }\nLAB_000415b0:\n        *puVar22 = uVar4;\n        iVar5 = iVar5 + 1;\n        if (iVar30 == iVar5) goto LAB_00040f88;\n        piVar11 = (int *)param_4[iVar5];\n        iVar7 = local_74[iVar5];\n        if (param_4 != local_74) goto LAB_000414fc;\nLAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);\n        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);\n        uVar4 = *puVar22;\n        piVar23 = (int *)(iVar7 + param_7 * 4);\n      }" ({ "{") (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_00097514" (identifier "pcVar14") (= "=") (cast_expression "(code *)PTR___gmpn_sub_n_00097514" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sub_n_00097514"))) (; ";")) (if_statement "if (*piVar23 != 0) goto LAB_00041640;" (if "if") (parenthesized_expression "(*piVar23 != 0)" (( "(") (binary_expression "*piVar23 != 0" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00041640;" (goto "goto") (statement_identifier "LAB_00041640") (; ";"))) (labeled_statement "LAB_00041544:\n        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);" (statement_identifier "LAB_00041544") (: ":") (expression_statement "iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);" (assignment_expression "iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7)" (identifier "iVar7") (= "=") (call_expression "(*pcVar14)(piVar11,puVar19,puVar18,param_7)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(piVar11,puVar19,puVar18,param_7)" (( "(") (identifier "piVar11") (, ",") (identifier "puVar19") (, ",") (identifier "puVar18") (, ",") (identifier "param_7") () ")")))) (; ";"))) (if_statement "if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {\nLAB_0004199c:\n          uVar4 = 0;\n        }\n        else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }" (if "if") (parenthesized_expression "((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0))" (( "(") (binary_expression "(iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)" (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)" (( "(") (comma_expression "iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0" (assignment_expression "iVar7 = *piVar11" (identifier "iVar7") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (, ",") (comma_expression "*piVar11 = iVar7 + 1, iVar7 + 1 != 0" (assignment_expression "*piVar11 = iVar7 + 1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (, ",") (binary_expression "iVar7 + 1 != 0" (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\nLAB_0004199c:\n          uVar4 = 0;\n        }" ({ "{") (labeled_statement "LAB_0004199c:\n          uVar4 = 0;" (statement_identifier "LAB_0004199c") (: ":") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";"))) (} "}")) (else_clause "else {\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }" (else "else") (compound_statement "{\n          uVar4 = 1;\n          if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }\n        }" ({ "{") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (if_statement "if (1 < (int)param_7) {\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }" (if "if") (parenthesized_expression "(1 < (int)param_7)" (( "(") (binary_expression "1 < (int)param_7" (number_literal "1") (< "<") (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7"))) () ")")) (compound_statement "{\n            iVar7 = piVar11[1];\n            piVar11[1] = iVar7 + 1;\n            if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }\n            goto LAB_0004199c;\n          }" ({ "{") (expression_statement "iVar7 = piVar11[1];" (assignment_expression "iVar7 = piVar11[1]" (identifier "iVar7") (= "=") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar11[1] = iVar7 + 1;" (assignment_expression "piVar11[1] = iVar7 + 1" (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar7 + 1 == 0) {\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }" (if "if") (parenthesized_expression "(iVar7 + 1 == 0)" (( "(") (binary_expression "iVar7 + 1 == 0" (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              puVar20 = (uint *)(piVar11 + 2);\n              do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);\n            }" ({ "{") (expression_statement "puVar20 = (uint *)(piVar11 + 2);" (assignment_expression "puVar20 = (uint *)(piVar11 + 2)" (identifier "puVar20") (= "=") (cast_expression "(uint *)(piVar11 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + 2)" (( "(") (binary_expression "piVar11 + 2" (identifier "piVar11") (+ "+") (number_literal "2")) () ")")))) (; ";")) (do_statement "do {\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              } while (uVar4 + 1 == 0);" (do "do") (compound_statement "{\n                if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }\n                uVar4 = *puVar20;\n                *puVar20 = uVar4 + 1;\n                puVar20 = puVar20 + 1;\n              }" ({ "{") (if_statement "if (puVar20 == puVar22) {\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }" (if "if") (parenthesized_expression "(puVar20 == puVar22)" (( "(") (binary_expression "puVar20 == puVar22" (identifier "puVar20") (== "==") (identifier "puVar22")) () ")")) (compound_statement "{\n                  uVar4 = 1;\n                  goto LAB_000415b0;\n                }" ({ "{") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_000415b0;" (goto "goto") (statement_identifier "LAB_000415b0") (; ";")) (} "}"))) (expression_statement "uVar4 = *puVar20;" (assignment_expression "uVar4 = *puVar20" (identifier "uVar4") (= "=") (pointer_expression "*puVar20" (* "*") (identifier "puVar20"))) (; ";")) (expression_statement "*puVar20 = uVar4 + 1;" (assignment_expression "*puVar20 = uVar4 + 1" (pointer_expression "*puVar20" (* "*") (identifier "puVar20")) (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" (identifier "puVar20") (= "=") (binary_expression "puVar20 + 1" (identifier "puVar20") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 + 1 == 0)" (( "(") (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_0004199c;" (goto "goto") (statement_identifier "LAB_0004199c") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_000415b0:\n        *puVar22 = uVar4;" (statement_identifier "LAB_000415b0") (: ":") (expression_statement "*puVar22 = uVar4;" (assignment_expression "*puVar22 = uVar4" (pointer_expression "*puVar22" (* "*") (identifier "puVar22")) (= "=") (identifier "uVar4")) (; ";"))) (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar30 == iVar5) goto LAB_00040f88;" (if "if") (parenthesized_expression "(iVar30 == iVar5)" (( "(") (binary_expression "iVar30 == iVar5" (identifier "iVar30") (== "==") (identifier "iVar5")) () ")")) (goto_statement "goto LAB_00040f88;" (goto "goto") (statement_identifier "LAB_00040f88") (; ";"))) (expression_statement "piVar11 = (int *)param_4[iVar5];" (assignment_expression "piVar11 = (int *)param_4[iVar5]" (identifier "piVar11") (= "=") (cast_expression "(int *)param_4[iVar5]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_4[iVar5]" (identifier "param_4") ([ "[") (identifier "iVar5") (] "]")))) (; ";")) (expression_statement "iVar7 = local_74[iVar5];" (assignment_expression "iVar7 = local_74[iVar5]" (identifier "iVar7") (= "=") (subscript_expression "local_74[iVar5]" (identifier "local_74") ([ "[") (identifier "iVar5") (] "]"))) (; ";")) (if_statement "if (param_4 != local_74) goto LAB_000414fc;" (if "if") (parenthesized_expression "(param_4 != local_74)" (( "(") (binary_expression "param_4 != local_74" (identifier "param_4") (!= "!=") (identifier "local_74")) () ")")) (goto_statement "goto LAB_000414fc;" (goto "goto") (statement_identifier "LAB_000414fc") (; ";"))) (labeled_statement "LAB_000415dc:\n        puVar22 = (uint *)(piVar11 + param_7);" (statement_identifier "LAB_000415dc") (: ":") (expression_statement "puVar22 = (uint *)(piVar11 + param_7);" (assignment_expression "puVar22 = (uint *)(piVar11 + param_7)" (identifier "puVar22") (= "=") (cast_expression "(uint *)(piVar11 + param_7)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar11 + param_7)" (( "(") (binary_expression "piVar11 + param_7" (identifier "piVar11") (+ "+") (identifier "param_7")) () ")")))) (; ";"))) (expression_statement "(*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);" (call_expression "(*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_sqr_00097394)" (( "(") (pointer_expression "*(code *)PTR___gmpn_sqr_00097394" (* "*") (cast_expression "(code *)PTR___gmpn_sqr_00097394" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sqr_00097394"))) () ")")) (argument_list "(puVar19,piVar11,param_7)" (( "(") (identifier "puVar19") (, ",") (identifier "piVar11") (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "uVar4 = *puVar22;" (assignment_expression "uVar4 = *puVar22" (identifier "uVar4") (= "=") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))) (; ";")) (expression_statement "piVar23 = (int *)(iVar7 + param_7 * 4);" (assignment_expression "piVar23 = (int *)(iVar7 + param_7 * 4)" (identifier "piVar23") (= "=") (cast_expression "(int *)(iVar7 + param_7 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + param_7 * 4)" (( "(") (binary_expression "iVar7 + param_7 * 4" (identifier "iVar7") (+ "+") (binary_expression "param_7 * 4" (identifier "param_7") (* "*") (number_literal "4"))) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (; ";")) (labeled_statement "LAB_0004160c:\n      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);" (statement_identifier "LAB_0004160c") (: ":") (expression_statement "uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7)" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" (( "(") (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" (* "*") (cast_expression "(code *)PTR___gmpn_add_n_00097334" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_add_n_00097334"))) () ")")) (argument_list "(puVar18,puVar18,iVar7,param_7)" (( "(") (identifier "puVar18") (, ",") (identifier "puVar18") (, ",") (identifier "iVar7") (, ",") (identifier "param_7") () ")")))) (; ";"))) (if_statement "if (*piVar23 != 0) {\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }" (if "if") (parenthesized_expression "(*piVar23 != 0)" (( "(") (binary_expression "*piVar23 != 0" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);\n        uVar4 = iVar7 + uVar4 + *puVar22;\n      }" ({ "{") (labeled_statement "LAB_00041640:\n        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);" (statement_identifier "LAB_00041640") (: ":") (expression_statement "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);" (assignment_expression "iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7)" (identifier "iVar7") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" (( "(") (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" (* "*") (cast_expression "(code *)PTR___gmpn_add_n_00097334" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_add_n_00097334"))) () ")")) (argument_list "(puVar18,puVar18,piVar11,param_7)" (( "(") (identifier "puVar18") (, ",") (identifier "puVar18") (, ",") (identifier "piVar11") (, ",") (identifier "param_7") () ")")))) (; ";"))) (expression_statement "uVar4 = iVar7 + uVar4 + *puVar22;" (assignment_expression "uVar4 = iVar7 + uVar4 + *puVar22" (identifier "uVar4") (= "=") (binary_expression "iVar7 + uVar4 + *puVar22" (binary_expression "iVar7 + uVar4" (identifier "iVar7") (+ "+") (identifier "uVar4")) (+ "+") (pointer_expression "*puVar22" (* "*") (identifier "puVar22")))) (; ";")) (} "}"))) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_00097514" (identifier "pcVar14") (= "=") (cast_expression "(code *)PTR___gmpn_sub_n_00097514" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sub_n_00097514"))) (; ";")) (if_statement "if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }" (if "if") (parenthesized_expression "((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0))" (( "(") (binary_expression "(((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))) &&\n         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)" (parenthesized_expression "(((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1)))" (( "(") (binary_expression "((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))\n          && (1 < (int)(param_7 << 1))" (parenthesized_expression "((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))" (( "(") (binary_expression "(uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4)" (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4)" (( "(") (comma_expression "uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4" (assignment_expression "uVar25 = *puVar19" (identifier "uVar25") (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (, ",") (comma_expression "*puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4" (assignment_expression "*puVar19 = uVar4 + uVar25" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (binary_expression "uVar4 + uVar25" (identifier "uVar4") (+ "+") (identifier "uVar25"))) (, ",") (binary_expression "uVar4 + uVar25 < uVar4" (binary_expression "uVar4 + uVar25" (identifier "uVar4") (+ "+") (identifier "uVar25")) (< "<") (identifier "uVar4")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(1 < (int)(param_7 << 1))" (( "(") (binary_expression "1 < (int)(param_7 << 1)" (number_literal "1") (< "<") (cast_expression "(int)(param_7 << 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(param_7 << 1)" (( "(") (binary_expression "param_7 << 1" (identifier "param_7") (<< "<<") (number_literal "1")) () ")")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)" (( "(") (comma_expression "uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0" (assignment_expression "uVar4 = puVar19[1]" (identifier "uVar4") (= "=") (subscript_expression "puVar19[1]" (identifier "puVar19") ([ "[") (number_literal "1") (] "]"))) (, ",") (comma_expression "puVar19[1] = uVar4 + 1, uVar4 + 1 == 0" (assignment_expression "puVar19[1] = uVar4 + 1" (subscript_expression "puVar19[1]" (identifier "puVar19") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (, ",") (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) (== "==") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n        puVar20 = puVar19 + 2;\n        do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);\n      }" ({ "{") (expression_statement "puVar20 = puVar19 + 2;" (assignment_expression "puVar20 = puVar19 + 2" (identifier "puVar20") (= "=") (binary_expression "puVar19 + 2" (identifier "puVar19") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        } while (uVar4 + 1 == 0);" (do "do") (compound_statement "{\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n          if (puVar20 == puVar19 + param_7 * 2) break;\n          uVar4 = *puVar20;\n          *puVar20 = uVar4 + 1;\n          puVar20 = puVar20 + 1;\n          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;\n        }" ({ "{") (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_00097514" (identifier "pcVar14") (= "=") (cast_expression "(code *)PTR___gmpn_sub_n_00097514" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sub_n_00097514"))) (; ";")) (if_statement "if (puVar20 == puVar19 + param_7 * 2) break;" (if "if") (parenthesized_expression "(puVar20 == puVar19 + param_7 * 2)" (( "(") (binary_expression "puVar20 == puVar19 + param_7 * 2" (identifier "puVar20") (== "==") (binary_expression "puVar19 + param_7 * 2" (identifier "puVar19") (+ "+") (binary_expression "param_7 * 2" (identifier "param_7") (* "*") (number_literal "2")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar4 = *puVar20;" (assignment_expression "uVar4 = *puVar20" (identifier "uVar4") (= "=") (pointer_expression "*puVar20" (* "*") (identifier "puVar20"))) (; ";")) (expression_statement "*puVar20 = uVar4 + 1;" (assignment_expression "*puVar20 = uVar4 + 1" (pointer_expression "*puVar20" (* "*") (identifier "puVar20")) (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" (identifier "puVar20") (= "=") (binary_expression "puVar20 + 1" (identifier "puVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar14 = (code *)PTR___gmpn_sub_n_00097514;" (assignment_expression "pcVar14 = (code *)PTR___gmpn_sub_n_00097514" (identifier "pcVar14") (= "=") (cast_expression "(code *)PTR___gmpn_sub_n_00097514" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sub_n_00097514"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 + 1 == 0)" (( "(") (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_00041544;" (goto "goto") (statement_identifier "LAB_00041544") (; ";")) (} "}"))) (labeled_statement "LAB_00040f88:\n    if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" (statement_identifier "LAB_00040f88") (: ":") (if_statement "if (local_30 != 0) {\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" (if "if") (parenthesized_expression "(local_30 != 0)" (( "(") (binary_expression "local_30 != 0" (identifier "local_30") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();\n    }" ({ "{") (expression_statement "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)();" (call_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)()" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_free_00097614)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_free_00097614" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_free_00097614" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_free_00097614"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar7 = param_7 + 1;" (assignment_expression "iVar7 = param_7 + 1" (identifier "iVar7") (= "=") (binary_expression "param_7 + 1" (identifier "param_7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar23 = param_11 + iVar7;" (assignment_expression "piVar23 = param_11 + iVar7" (identifier "piVar23") (= "=") (binary_expression "param_11 + iVar7" (identifier "param_11") (+ "+") (identifier "iVar7"))) (; ";")) (expression_statement "FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);" (call_expression "FUN_00040648(param_4,iVar30,iVar27,param_7,param_11)" (identifier "FUN_00040648") (argument_list "(param_4,iVar30,iVar27,param_7,param_11)" (( "(") (identifier "param_4") (, ",") (identifier "iVar30") (, ",") (identifier "iVar27") (, ",") (identifier "param_7") (, ",") (identifier "param_11") () ")"))) (; ";")) (expression_statement "puVar2 = PTR_LAB_00097078;" (assignment_expression "puVar2 = PTR_LAB_00097078" (identifier "puVar2") (= "=") (identifier "PTR_LAB_00097078")) (; ";")) (expression_statement "*param_5 = (int)piVar23;" (assignment_expression "*param_5 = (int)piVar23" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (= "=") (cast_expression "(int)piVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar23"))) (; ";")) (expression_statement "FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);" (call_expression "FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7)" (identifier "FUN_0003f5dc") (argument_list "(piVar23,*param_4,param_7 * 0x40 - param_3,param_7)" (( "(") (identifier "piVar23") (, ",") (pointer_expression "*param_4" (* "*") (identifier "param_4")) (, ",") (binary_expression "param_7 * 0x40 - param_3" (binary_expression "param_7 * 0x40" (identifier "param_7") (* "*") (number_literal "0x40")) (- "-") (identifier "param_3")) (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "piVar26 = piVar23 + param_7;" (assignment_expression "piVar26 = piVar23 + param_7" (identifier "piVar26") (= "=") (binary_expression "piVar23 + param_7" (identifier "piVar23") (+ "+") (identifier "param_7"))) (; ";")) (expression_statement "piVar11 = piVar23;" (assignment_expression "piVar11 = piVar23" (identifier "piVar11") (= "=") (identifier "piVar23")) (; ";")) (if_statement "if (*piVar26 != 0) {\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }" (if "if") (parenthesized_expression "(*piVar26 != 0)" (( "(") (binary_expression "*piVar26 != 0" (pointer_expression "*piVar26" (* "*") (identifier "piVar26")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);\n      if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }\n    }" ({ "{") (do_statement "do {\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      } while (iVar27 == 0);" (do "do") (compound_statement "{\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + -1;\n        piVar11 = piVar11 + 1;\n      }" ({ "{") (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" (identifier "iVar27") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 1" (identifier "piVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar27 == 0)" (( "(") (binary_expression "iVar27 == 0" (identifier "iVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (if_statement "if (*piVar26 == 0) {\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }\n      else {\n        *piVar26 = 0;\n      }" (if "if") (parenthesized_expression "(*piVar26 == 0)" (( "(") (binary_expression "*piVar26 == 0" (pointer_expression "*piVar26" (* "*") (identifier "piVar26")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        uVar4 = param_7;\n        if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }\n        *piVar26 = 1;\n      }" ({ "{") (expression_statement "uVar4 = param_7;" (assignment_expression "uVar4 = param_7" (identifier "uVar4") (= "=") (identifier "param_7")) (; ";")) (if_statement "if (param_7 != 0) {\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }" (if "if") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);\n        }" ({ "{") (do_statement "do {\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          } while (uVar4 != 0);" (do "do") (compound_statement "{\n            uVar4 = uVar4 - 1;\n            *piVar23 = 0;\n            piVar23 = piVar23 + 1;\n          }" ({ "{") (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 - 1" (identifier "uVar4") (- "-") (number_literal "1"))) (; ";")) (expression_statement "*piVar23 = 0;" (assignment_expression "*piVar23 = 0" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 1" (identifier "piVar23") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "*piVar26 = 1;" (assignment_expression "*piVar26 = 1" (pointer_expression "*piVar26" (* "*") (identifier "piVar26")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n        *piVar26 = 0;\n      }" (else "else") (compound_statement "{\n        *piVar26 = 0;\n      }" ({ "{") (expression_statement "*piVar26 = 0;" (assignment_expression "*piVar26 = 0" (pointer_expression "*piVar26" (* "*") (identifier "piVar26")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (if_statement "if (1 < iVar30) {\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }" (if "if") (parenthesized_expression "(1 < iVar30)" (( "(") (binary_expression "1 < iVar30" (number_literal "1") (< "<") (identifier "iVar30")) () ")")) (compound_statement "{\n      piVar23 = param_4 + 1;\n      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);\n      piVar11 = param_5;\n      do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));\n    }" ({ "{") (expression_statement "piVar23 = param_4 + 1;" (assignment_expression "piVar23 = param_4 + 1" (identifier "piVar23") (= "=") (binary_expression "param_4 + 1" (identifier "param_4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);" (assignment_expression "iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3)" (identifier "iVar27") (= "=") (binary_expression "param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3)" (binary_expression "param_7 * 0x40" (identifier "param_7") (* "*") (number_literal "0x40")) (- "-") (parenthesized_expression "((iVar30 + -1) * param_9 + param_3)" (( "(") (binary_expression "(iVar30 + -1) * param_9 + param_3" (binary_expression "(iVar30 + -1) * param_9" (parenthesized_expression "(iVar30 + -1)" (( "(") (binary_expression "iVar30 + -1" (identifier "iVar30") (+ "+") (number_literal "-1")) () ")")) (* "*") (identifier "param_9")) (+ "+") (identifier "param_3")) () ")")))) (; ";")) (expression_statement "piVar11 = param_5;" (assignment_expression "piVar11 = param_5" (identifier "piVar11") (= "=") (identifier "param_5")) (; ";")) (do_statement "do {\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));" (do "do") (compound_statement "{\n        piVar11 = piVar11 + 1;\n        piVar31 = (int *)piVar23[-1];\n        *piVar11 = (int)piVar31;\n        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);\n        piVar32 = piVar31 + param_7;\n        piVar26 = piVar31;\n        if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }\n        piVar23 = piVar23 + 1;\n        iVar27 = iVar27 + param_9;\n      }" ({ "{") (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 1" (identifier "piVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar31 = (int *)piVar23[-1];" (assignment_expression "piVar31 = (int *)piVar23[-1]" (identifier "piVar31") (= "=") (cast_expression "(int *)piVar23[-1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar23[-1]" (identifier "piVar23") ([ "[") (number_literal "-1") (] "]")))) (; ";")) (expression_statement "*piVar11 = (int)piVar31;" (assignment_expression "*piVar11 = (int)piVar31" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (cast_expression "(int)piVar31" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar31"))) (; ";")) (expression_statement "(*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);" (call_expression "(*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7)" (parenthesized_expression "(*(code *)(puVar2 + -0xa24))" (( "(") (pointer_expression "*(code *)(puVar2 + -0xa24)" (* "*") (cast_expression "(code *)(puVar2 + -0xa24)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar2 + -0xa24)" (( "(") (binary_expression "puVar2 + -0xa24" (identifier "puVar2") (+ "+") (number_literal "-0xa24")) () ")")))) () ")")) (argument_list "(piVar31,*piVar23,iVar27,param_7)" (( "(") (identifier "piVar31") (, ",") (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (, ",") (identifier "iVar27") (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "piVar32 = piVar31 + param_7;" (assignment_expression "piVar32 = piVar31 + param_7" (identifier "piVar32") (= "=") (binary_expression "piVar31 + param_7" (identifier "piVar31") (+ "+") (identifier "param_7"))) (; ";")) (expression_statement "piVar26 = piVar31;" (assignment_expression "piVar26 = piVar31" (identifier "piVar26") (= "=") (identifier "piVar31")) (; ";")) (if_statement "if (*piVar32 != 0) {\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }" (if "if") (parenthesized_expression "(*piVar32 != 0)" (( "(") (binary_expression "*piVar32 != 0" (pointer_expression "*piVar32" (* "*") (identifier "piVar32")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);\n          if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }\n        }" ({ "{") (do_statement "do {\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          } while (iVar5 == 0);" (do "do") (compound_statement "{\n            iVar5 = *piVar26;\n            *piVar26 = iVar5 + -1;\n            piVar26 = piVar26 + 1;\n          }" ({ "{") (expression_statement "iVar5 = *piVar26;" (assignment_expression "iVar5 = *piVar26" (identifier "iVar5") (= "=") (pointer_expression "*piVar26" (* "*") (identifier "piVar26"))) (; ";")) (expression_statement "*piVar26 = iVar5 + -1;" (assignment_expression "*piVar26 = iVar5 + -1" (pointer_expression "*piVar26" (* "*") (identifier "piVar26")) (= "=") (binary_expression "iVar5 + -1" (identifier "iVar5") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar26 = piVar26 + 1;" (assignment_expression "piVar26 = piVar26 + 1" (identifier "piVar26") (= "=") (binary_expression "piVar26 + 1" (identifier "piVar26") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (; ";")) (if_statement "if (*piVar32 == 0) {\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }\n          else {\n            *piVar32 = 0;\n          }" (if "if") (parenthesized_expression "(*piVar32 == 0)" (( "(") (binary_expression "*piVar32 == 0" (pointer_expression "*piVar32" (* "*") (identifier "piVar32")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar4 = param_7;\n            if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }\n            *piVar32 = 1;\n          }" ({ "{") (expression_statement "uVar4 = param_7;" (assignment_expression "uVar4 = param_7" (identifier "uVar4") (= "=") (identifier "param_7")) (; ";")) (if_statement "if (param_7 != 0) {\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }" (if "if") (parenthesized_expression "(param_7 != 0)" (( "(") (binary_expression "param_7 != 0" (identifier "param_7") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);\n            }" ({ "{") (do_statement "do {\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              } while (uVar4 != 0);" (do "do") (compound_statement "{\n                uVar4 = uVar4 - 1;\n                *piVar31 = 0;\n                piVar31 = piVar31 + 1;\n              }" ({ "{") (expression_statement "uVar4 = uVar4 - 1;" (assignment_expression "uVar4 = uVar4 - 1" (identifier "uVar4") (= "=") (binary_expression "uVar4 - 1" (identifier "uVar4") (- "-") (number_literal "1"))) (; ";")) (expression_statement "*piVar31 = 0;" (assignment_expression "*piVar31 = 0" (pointer_expression "*piVar31" (* "*") (identifier "piVar31")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar31 = piVar31 + 1;" (assignment_expression "piVar31 = piVar31 + 1" (identifier "piVar31") (= "=") (binary_expression "piVar31 + 1" (identifier "piVar31") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "*piVar32 = 1;" (assignment_expression "*piVar32 = 1" (pointer_expression "*piVar32" (* "*") (identifier "piVar32")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n            *piVar32 = 0;\n          }" (else "else") (compound_statement "{\n            *piVar32 = 0;\n          }" ({ "{") (expression_statement "*piVar32 = 0;" (assignment_expression "*piVar32 = 0" (pointer_expression "*piVar32" (* "*") (identifier "piVar32")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 1" (identifier "piVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar27 = iVar27 + param_9;" (assignment_expression "iVar27 = iVar27 + param_9" (identifier "iVar27") (= "=") (binary_expression "iVar27 + param_9" (identifier "iVar27") (+ "+") (identifier "param_9"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))))" (( "(") (binary_expression "piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f)))" (identifier "piVar23") (!= "!=") (cast_expression "(int *)((int)param_4 + (4 << (param_3 & 0x1f)))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_4 + (4 << (param_3 & 0x1f)))" (( "(") (binary_expression "(int)param_4 + (4 << (param_3 & 0x1f))" (cast_expression "(int)param_4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_4")) (+ "+") (parenthesized_expression "(4 << (param_3 & 0x1f))" (( "(") (binary_expression "4 << (param_3 & 0x1f)" (number_literal "4") (<< "<<") (parenthesized_expression "(param_3 & 0x1f)" (( "(") (binary_expression "param_3 & 0x1f" (identifier "param_3") (& "&") (number_literal "0x1f")) () ")"))) () ")"))) () ")")))) () ")")) (; ";")) (} "}"))) (expression_statement "local_74 = (int *)(iVar30 - 1);" (assignment_expression "local_74 = (int *)(iVar30 - 1)" (identifier "local_74") (= "=") (cast_expression "(int *)(iVar30 - 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar30 - 1)" (( "(") (binary_expression "iVar30 - 1" (identifier "iVar30") (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar17 = param_11;" (assignment_expression "puVar17 = param_11" (identifier "puVar17") (= "=") (identifier "param_11")) (; ";")) (expression_statement "iVar27 = iVar7;" (assignment_expression "iVar27 = iVar7" (identifier "iVar27") (= "=") (identifier "iVar7")) (; ";")) (if_statement "if (param_7 != 0xffffffff) {\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }" (if "if") (parenthesized_expression "(param_7 != 0xffffffff)" (( "(") (binary_expression "param_7 != 0xffffffff" (identifier "param_7") (!= "!=") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n      do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);\n    }" ({ "{") (do_statement "do {\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      } while (iVar27 != 0);" (do "do") (compound_statement "{\n        iVar27 = iVar27 + -1;\n        *puVar17 = 0;\n        puVar17 = puVar17 + 1;\n      }" ({ "{") (expression_statement "iVar27 = iVar27 + -1;" (assignment_expression "iVar27 = iVar27 + -1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*puVar17 = 0;" (assignment_expression "*puVar17 = 0" (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar27 != 0)" (( "(") (binary_expression "iVar27 != 0" (identifier "iVar27") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar5 = (int)local_74 * param_8;" (assignment_expression "iVar5 = (int)local_74 * param_8" (identifier "iVar5") (= "=") (binary_expression "(int)local_74 * param_8" (cast_expression "(int)local_74" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_74")) (* "*") (identifier "param_8"))) (; ";")) (expression_statement "local_60 = (int)param_2 * 2;" (assignment_expression "local_60 = (int)param_2 * 2" (identifier "local_60") (= "=") (binary_expression "(int)param_2 * 2" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (* "*") (number_literal "2"))) (; ";")) (expression_statement "local_58 = param_7 + iVar5;" (assignment_expression "local_58 = param_7 + iVar5" (identifier "local_58") (= "=") (binary_expression "param_7 + iVar5" (identifier "param_7") (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "local_64 = local_58 + 1;" (assignment_expression "local_64 = local_58 + 1" (identifier "local_64") (= "=") (binary_expression "local_58 + 1" (identifier "local_58") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar11 = param_6;" (assignment_expression "piVar11 = param_6" (identifier "piVar11") (= "=") (identifier "param_6")) (; ";")) (expression_statement "iVar27 = local_64;" (assignment_expression "iVar27 = local_64" (identifier "iVar27") (= "=") (identifier "local_64")) (; ";")) (if_statement "if (local_64 == 0) {\n      iVar24 = -1;\n    }\n    else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }" (if "if") (parenthesized_expression "(local_64 == 0)" (( "(") (binary_expression "local_64 == 0" (identifier "local_64") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar24 = -1;\n    }" ({ "{") (expression_statement "iVar24 = -1;" (assignment_expression "iVar24 = -1" (identifier "iVar24") (= "=") (number_literal "-1")) (; ";")) (} "}")) (else_clause "else {\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }" (else "else") (compound_statement "{\n      do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);\n    }" ({ "{") (do_statement "do {\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      } while (iVar27 != 0);" (do "do") (compound_statement "{\n        iVar27 = iVar27 + -1;\n        *piVar11 = 0;\n        piVar11 = piVar11 + 1;\n        iVar24 = local_58;\n      }" ({ "{") (expression_statement "iVar27 = iVar27 + -1;" (assignment_expression "iVar27 = iVar27 + -1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*piVar11 = 0;" (assignment_expression "*piVar11 = 0" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 1" (identifier "piVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar24 = local_58;" (assignment_expression "iVar24 = local_58" (identifier "iVar24") (= "=") (identifier "local_58")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar27 != 0)" (( "(") (binary_expression "iVar27 != 0" (identifier "iVar27") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")))) (if_statement "if (-1 < (int)local_74) {\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "(-1 < (int)local_74)" (( "(") (binary_expression "-1 < (int)local_74" (number_literal "-1") (< "<") (cast_expression "(int)local_74" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_74"))) () ")")) (compound_statement "{\n      local_68 = 0;\n      piVar23 = param_6 + iVar7 + iVar5 + 1;\n      piVar26 = param_6 + iVar24;\n      piVar31 = param_6 + iVar5;\n      piVar11 = local_74;\n      uVar4 = param_7;\nLAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);\n      if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "local_68 = 0;" (assignment_expression "local_68 = 0" (identifier "local_68") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar23 = param_6 + iVar7 + iVar5 + 1;" (assignment_expression "piVar23 = param_6 + iVar7 + iVar5 + 1" (identifier "piVar23") (= "=") (binary_expression "param_6 + iVar7 + iVar5 + 1" (binary_expression "param_6 + iVar7 + iVar5" (binary_expression "param_6 + iVar7" (identifier "param_6") (+ "+") (identifier "iVar7")) (+ "+") (identifier "iVar5")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar26 = param_6 + iVar24;" (assignment_expression "piVar26 = param_6 + iVar24" (identifier "piVar26") (= "=") (binary_expression "param_6 + iVar24" (identifier "param_6") (+ "+") (identifier "iVar24"))) (; ";")) (expression_statement "piVar31 = param_6 + iVar5;" (assignment_expression "piVar31 = param_6 + iVar5" (identifier "piVar31") (= "=") (binary_expression "param_6 + iVar5" (identifier "param_6") (+ "+") (identifier "iVar5"))) (; ";")) (expression_statement "piVar11 = local_74;" (assignment_expression "piVar11 = local_74" (identifier "piVar11") (= "=") (identifier "local_74")) (; ";")) (expression_statement "uVar4 = param_7;" (assignment_expression "uVar4 = param_7" (identifier "uVar4") (= "=") (identifier "param_7")) (; ";")) (labeled_statement "LAB_000411b8:\n      do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);" (statement_identifier "LAB_000411b8") (: ":") (do_statement "do {\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      } while (uVar25 - 1 != 0xffffffff);" (do "do") (compound_statement "{\n        uVar25 = (uint)piVar11;\n        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);\n        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }\n        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];\n        param_11[param_8 * 2] = uVar25 + 1;\n        puVar18 = (uint *)(iVar27 + param_7 * 4);\n        iVar27 = iVar7;\n        puVar19 = param_11 + param_7;\n        do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);\n        if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }\nLAB_000412a0:\n        piVar31 = piVar31 + -param_8;\n        piVar23 = piVar23 + -param_8;\n        uVar4 = uVar4 + param_8;\n        piVar26 = piVar26 + -param_8;\n        piVar11 = (int *)(uVar25 - 1);\n      }" ({ "{") (expression_statement "uVar25 = (uint)piVar11;" (assignment_expression "uVar25 = (uint)piVar11" (identifier "uVar25") (= "=") (cast_expression "(uint)piVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar11"))) (; ";")) (expression_statement "iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);" (assignment_expression "iVar27 = (*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7)" (identifier "iVar27") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_00097334)\n                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" (( "(") (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" (* "*") (cast_expression "(code *)PTR___gmpn_add_n_00097334" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_add_n_00097334"))) () ")")) (argument_list "(piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7)" (( "(") (identifier "piVar31") (, ",") (identifier "piVar31") (, ",") (subscript_expression "param_5[iVar30 - uVar25 & (uint)local_74]" (identifier "param_5") ([ "[") (binary_expression "iVar30 - uVar25 & (uint)local_74" (binary_expression "iVar30 - uVar25" (identifier "iVar30") (- "-") (identifier "uVar25")) (& "&") (cast_expression "(uint)local_74" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_74"))) (] "]")) (, ",") (identifier "iVar7") () ")")))) (; ";")) (if_statement "if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }" (if "if") (parenthesized_expression "((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0))" (( "(") (binary_expression "(iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)" (parenthesized_expression "(iVar27 != 0)" (( "(") (binary_expression "iVar27 != 0" (identifier "iVar27") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)" (( "(") (comma_expression "iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0" (assignment_expression "iVar27 = piVar23[-1]" (identifier "iVar27") (= "=") (subscript_expression "piVar23[-1]" (identifier "piVar23") ([ "[") (number_literal "-1") (] "]"))) (, ",") (comma_expression "piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0" (assignment_expression "piVar23[-1] = iVar27 + 1" (subscript_expression "piVar23[-1]" (identifier "piVar23") ([ "[") (number_literal "-1") (] "]")) (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (, ",") (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n          if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }\n        }" ({ "{") (if_statement "if ((int)(uVar4 - param_7) < 2) {\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }\n          else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }" (if "if") (parenthesized_expression "((int)(uVar4 - param_7) < 2)" (( "(") (binary_expression "(int)(uVar4 - param_7) < 2" (cast_expression "(int)(uVar4 - param_7)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar4 - param_7)" (( "(") (binary_expression "uVar4 - param_7" (identifier "uVar4") (- "-") (identifier "param_7")) () ")"))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00041254:\n            local_68 = local_68 + 1;\n          }" ({ "{") (labeled_statement "LAB_00041254:\n            local_68 = local_68 + 1;" (statement_identifier "LAB_00041254") (: ":") (expression_statement "local_68 = local_68 + 1;" (assignment_expression "local_68 = local_68 + 1" (identifier "local_68") (= "=") (binary_expression "local_68 + 1" (identifier "local_68") (+ "+") (number_literal "1"))) (; ";"))) (} "}")) (else_clause "else {\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }" (else "else") (compound_statement "{\n            iVar27 = *piVar23;\n            *piVar23 = iVar27 + 1;\n            if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }\n          }" ({ "{") (expression_statement "iVar27 = *piVar23;" (assignment_expression "iVar27 = *piVar23" (identifier "iVar27") (= "=") (pointer_expression "*piVar23" (* "*") (identifier "piVar23"))) (; ";")) (expression_statement "*piVar23 = iVar27 + 1;" (assignment_expression "*piVar23 = iVar27 + 1" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar27 + 1 == 0) {\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }" (if "if") (parenthesized_expression "(iVar27 + 1 == 0)" (( "(") (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar27 = 2;\n              piVar11 = piVar23;\n              do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);\n            }" ({ "{") (expression_statement "iVar27 = 2;" (assignment_expression "iVar27 = 2" (identifier "iVar27") (= "=") (number_literal "2")) (; ";")) (expression_statement "piVar11 = piVar23;" (assignment_expression "piVar11 = piVar23" (identifier "piVar11") (= "=") (identifier "piVar23")) (; ";")) (do_statement "do {\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              } while (iVar33 + 1 == 0);" (do "do") (compound_statement "{\n                piVar11 = piVar11 + 1;\n                if (uVar4 - param_7 == iVar27) goto LAB_00041254;\n                iVar33 = *piVar11;\n                iVar27 = iVar27 + 1;\n                *piVar11 = iVar33 + 1;\n              }" ({ "{") (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 1" (identifier "piVar11") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar4 - param_7 == iVar27) goto LAB_00041254;" (if "if") (parenthesized_expression "(uVar4 - param_7 == iVar27)" (( "(") (binary_expression "uVar4 - param_7 == iVar27" (binary_expression "uVar4 - param_7" (identifier "uVar4") (- "-") (identifier "param_7")) (== "==") (identifier "iVar27")) () ")")) (goto_statement "goto LAB_00041254;" (goto "goto") (statement_identifier "LAB_00041254") (; ";"))) (expression_statement "iVar33 = *piVar11;" (assignment_expression "iVar33 = *piVar11" (identifier "iVar33") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar11 = iVar33 + 1;" (assignment_expression "*piVar11 = iVar33 + 1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (binary_expression "iVar33 + 1" (identifier "iVar33") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar33 + 1 == 0)" (( "(") (binary_expression "iVar33 + 1 == 0" (binary_expression "iVar33 + 1" (identifier "iVar33") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];" (assignment_expression "iVar27 = param_5[iVar30 - uVar25 & (uint)local_74]" (identifier "iVar27") (= "=") (subscript_expression "param_5[iVar30 - uVar25 & (uint)local_74]" (identifier "param_5") ([ "[") (binary_expression "iVar30 - uVar25 & (uint)local_74" (binary_expression "iVar30 - uVar25" (identifier "iVar30") (- "-") (identifier "uVar25")) (& "&") (cast_expression "(uint)local_74" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_74"))) (] "]"))) (; ";")) (expression_statement "param_11[param_8 * 2] = uVar25 + 1;" (assignment_expression "param_11[param_8 * 2] = uVar25 + 1" (subscript_expression "param_11[param_8 * 2]" (identifier "param_11") ([ "[") (binary_expression "param_8 * 2" (identifier "param_8") (* "*") (number_literal "2")) (] "]")) (= "=") (binary_expression "uVar25 + 1" (identifier "uVar25") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar18 = (uint *)(iVar27 + param_7 * 4);" (assignment_expression "puVar18 = (uint *)(iVar27 + param_7 * 4)" (identifier "puVar18") (= "=") (cast_expression "(uint *)(iVar27 + param_7 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar27 + param_7 * 4)" (( "(") (binary_expression "iVar27 + param_7 * 4" (identifier "iVar27") (+ "+") (binary_expression "param_7 * 4" (identifier "param_7") (* "*") (number_literal "4"))) () ")")))) (; ";")) (expression_statement "iVar27 = iVar7;" (assignment_expression "iVar27 = iVar7" (identifier "iVar27") (= "=") (identifier "iVar7")) (; ";")) (expression_statement "puVar19 = param_11 + param_7;" (assignment_expression "puVar19 = param_11 + param_7" (identifier "puVar19") (= "=") (binary_expression "param_11 + param_7" (identifier "param_11") (+ "+") (identifier "param_7"))) (; ";")) (do_statement "do {\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        } while (uVar6 == uVar29);" (do "do") (compound_statement "{\n          iVar27 = iVar27 + -1;\n          if (iVar27 < 0) goto LAB_000412a0;\n          uVar6 = *puVar18;\n          uVar29 = *puVar19;\n          puVar18 = puVar18 + -1;\n          puVar19 = puVar19 + -1;\n        }" ({ "{") (expression_statement "iVar27 = iVar27 + -1;" (assignment_expression "iVar27 = iVar27 + -1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar27 < 0) goto LAB_000412a0;" (if "if") (parenthesized_expression "(iVar27 < 0)" (( "(") (binary_expression "iVar27 < 0" (identifier "iVar27") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_000412a0;" (goto "goto") (statement_identifier "LAB_000412a0") (; ";"))) (expression_statement "uVar6 = *puVar18;" (assignment_expression "uVar6 = *puVar18" (identifier "uVar6") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "uVar29 = *puVar19;" (assignment_expression "uVar29 = *puVar19" (identifier "uVar29") (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (; ";")) (expression_statement "puVar18 = puVar18 + -1;" (assignment_expression "puVar18 = puVar18 + -1" (identifier "puVar18") (= "=") (binary_expression "puVar18 + -1" (identifier "puVar18") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar19 = puVar19 + -1;" (assignment_expression "puVar19 = puVar19 + -1" (identifier "puVar19") (= "=") (binary_expression "puVar19 + -1" (identifier "puVar19") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar6 == uVar29)" (( "(") (binary_expression "uVar6 == uVar29" (identifier "uVar6") (== "==") (identifier "uVar29")) () ")")) (; ";")) (if_statement "if (uVar29 < uVar6) {\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }" (if "if") (parenthesized_expression "(uVar29 < uVar6)" (( "(") (binary_expression "uVar29 < uVar6" (identifier "uVar29") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n          iVar27 = *piVar31;\n          *piVar31 = iVar27 + -1;\n          if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }\n          iVar27 = *piVar26;\n          *piVar26 = iVar27 + -1;\n          if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }\n        }" ({ "{") (expression_statement "iVar27 = *piVar31;" (assignment_expression "iVar27 = *piVar31" (identifier "iVar27") (= "=") (pointer_expression "*piVar31" (* "*") (identifier "piVar31"))) (; ";")) (expression_statement "*piVar31 = iVar27 + -1;" (assignment_expression "*piVar31 = iVar27 + -1" (pointer_expression "*piVar31" (* "*") (identifier "piVar31")) (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar27 == 0) {\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }" (if "if") (parenthesized_expression "(iVar27 == 0)" (( "(") (binary_expression "iVar27 == 0" (identifier "iVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }\n          }" ({ "{") (if_statement "if ((int)(uVar4 + 1) < 2) {\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }\n            else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }" (if "if") (parenthesized_expression "((int)(uVar4 + 1) < 2)" (( "(") (binary_expression "(int)(uVar4 + 1) < 2" (cast_expression "(int)(uVar4 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar4 + 1)" (( "(") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) () ")"))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_000417cc:\n              local_68 = local_68 + -1;\n            }" ({ "{") (labeled_statement "LAB_000417cc:\n              local_68 = local_68 + -1;" (statement_identifier "LAB_000417cc") (: ":") (expression_statement "local_68 = local_68 + -1;" (assignment_expression "local_68 = local_68 + -1" (identifier "local_68") (= "=") (binary_expression "local_68 + -1" (identifier "local_68") (+ "+") (number_literal "-1"))) (; ";"))) (} "}")) (else_clause "else {\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }" (else "else") (compound_statement "{\n              iVar27 = piVar31[1];\n              piVar31[1] = iVar27 + -1;\n              if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }\n            }" ({ "{") (expression_statement "iVar27 = piVar31[1];" (assignment_expression "iVar27 = piVar31[1]" (identifier "iVar27") (= "=") (subscript_expression "piVar31[1]" (identifier "piVar31") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar31[1] = iVar27 + -1;" (assignment_expression "piVar31[1] = iVar27 + -1" (subscript_expression "piVar31[1]" (identifier "piVar31") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar27 == 0) {\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }" (if "if") (parenthesized_expression "(iVar27 == 0)" (( "(") (binary_expression "iVar27 == 0" (identifier "iVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar27 = 2;\n                piVar11 = piVar31 + 2;\n                do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);\n              }" ({ "{") (expression_statement "iVar27 = 2;" (assignment_expression "iVar27 = 2" (identifier "iVar27") (= "=") (number_literal "2")) (; ";")) (expression_statement "piVar11 = piVar31 + 2;" (assignment_expression "piVar11 = piVar31 + 2" (identifier "piVar11") (= "=") (binary_expression "piVar31 + 2" (identifier "piVar31") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                } while (iVar33 == 0);" (do "do") (compound_statement "{\n                  bVar1 = uVar4 + 1 == iVar27;\n                  iVar27 = iVar27 + 1;\n                  if (bVar1) goto LAB_000417cc;\n                  iVar33 = *piVar11;\n                  *piVar11 = iVar33 + -1;\n                  piVar11 = piVar11 + 1;\n                }" ({ "{") (expression_statement "bVar1 = uVar4 + 1 == iVar27;" (assignment_expression "bVar1 = uVar4 + 1 == iVar27" (identifier "bVar1") (= "=") (binary_expression "uVar4 + 1 == iVar27" (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) (== "==") (identifier "iVar27"))) (; ";")) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar1) goto LAB_000417cc;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_000417cc;" (goto "goto") (statement_identifier "LAB_000417cc") (; ";"))) (expression_statement "iVar33 = *piVar11;" (assignment_expression "iVar33 = *piVar11" (identifier "iVar33") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (expression_statement "*piVar11 = iVar33 + -1;" (assignment_expression "*piVar11 = iVar33 + -1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (binary_expression "iVar33 + -1" (identifier "iVar33") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 1" (identifier "piVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar33 == 0)" (( "(") (binary_expression "iVar33 == 0" (identifier "iVar33") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "iVar27 = *piVar26;" (assignment_expression "iVar27 = *piVar26" (identifier "iVar27") (= "=") (pointer_expression "*piVar26" (* "*") (identifier "piVar26"))) (; ";")) (expression_statement "*piVar26 = iVar27 + -1;" (assignment_expression "*piVar26 = iVar27 + -1" (pointer_expression "*piVar26" (* "*") (identifier "piVar26")) (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar27 == 0) {\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }" (if "if") (parenthesized_expression "(iVar27 == 0)" (( "(") (binary_expression "iVar27 == 0" (identifier "iVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;\n            if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }\n            iVar33 = piVar26[1];\n            piVar26[1] = iVar33 + -1;\n            if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }\n          }" ({ "{") (expression_statement "iVar27 = ((iVar5 + 1) - iVar24) + uVar4;" (assignment_expression "iVar27 = ((iVar5 + 1) - iVar24) + uVar4" (identifier "iVar27") (= "=") (binary_expression "((iVar5 + 1) - iVar24) + uVar4" (parenthesized_expression "((iVar5 + 1) - iVar24)" (( "(") (binary_expression "(iVar5 + 1) - iVar24" (parenthesized_expression "(iVar5 + 1)" (( "(") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1")) () ")")) (- "-") (identifier "iVar24")) () ")")) (+ "+") (identifier "uVar4"))) (; ";")) (if_statement "if (iVar27 < 2) {\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }" (if "if") (parenthesized_expression "(iVar27 < 2)" (( "(") (binary_expression "iVar27 < 2" (identifier "iVar27") (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00041838:\n              piVar31 = piVar31 + -param_8;\n              piVar23 = piVar23 + -param_8;\n              local_68 = local_68 + -1;\n              uVar4 = uVar4 + param_8;\n              piVar26 = piVar26 + -param_8;\n              piVar11 = (int *)(uVar25 - 1);\n              if (uVar25 - 1 == 0xffffffff) break;\n              goto LAB_000411b8;\n            }" ({ "{") (labeled_statement "LAB_00041838:\n              piVar31 = piVar31 + -param_8;" (statement_identifier "LAB_00041838") (: ":") (expression_statement "piVar31 = piVar31 + -param_8;" (assignment_expression "piVar31 = piVar31 + -param_8" (identifier "piVar31") (= "=") (binary_expression "piVar31 + -param_8" (identifier "piVar31") (+ "+") (unary_expression "-param_8" (- "-") (identifier "param_8")))) (; ";"))) (expression_statement "piVar23 = piVar23 + -param_8;" (assignment_expression "piVar23 = piVar23 + -param_8" (identifier "piVar23") (= "=") (binary_expression "piVar23 + -param_8" (identifier "piVar23") (+ "+") (unary_expression "-param_8" (- "-") (identifier "param_8")))) (; ";")) (expression_statement "local_68 = local_68 + -1;" (assignment_expression "local_68 = local_68 + -1" (identifier "local_68") (= "=") (binary_expression "local_68 + -1" (identifier "local_68") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "uVar4 = uVar4 + param_8;" (assignment_expression "uVar4 = uVar4 + param_8" (identifier "uVar4") (= "=") (binary_expression "uVar4 + param_8" (identifier "uVar4") (+ "+") (identifier "param_8"))) (; ";")) (expression_statement "piVar26 = piVar26 + -param_8;" (assignment_expression "piVar26 = piVar26 + -param_8" (identifier "piVar26") (= "=") (binary_expression "piVar26 + -param_8" (identifier "piVar26") (+ "+") (unary_expression "-param_8" (- "-") (identifier "param_8")))) (; ";")) (expression_statement "piVar11 = (int *)(uVar25 - 1);" (assignment_expression "piVar11 = (int *)(uVar25 - 1)" (identifier "piVar11") (= "=") (cast_expression "(int *)(uVar25 - 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar25 - 1)" (( "(") (binary_expression "uVar25 - 1" (identifier "uVar25") (- "-") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (uVar25 - 1 == 0xffffffff) break;" (if "if") (parenthesized_expression "(uVar25 - 1 == 0xffffffff)" (( "(") (binary_expression "uVar25 - 1 == 0xffffffff" (binary_expression "uVar25 - 1" (identifier "uVar25") (- "-") (number_literal "1")) (== "==") (number_literal "0xffffffff")) () ")")) (break_statement "break;" (break "break") (; ";"))) (goto_statement "goto LAB_000411b8;" (goto "goto") (statement_identifier "LAB_000411b8") (; ";")) (} "}"))) (expression_statement "iVar33 = piVar26[1];" (assignment_expression "iVar33 = piVar26[1]" (identifier "iVar33") (= "=") (subscript_expression "piVar26[1]" (identifier "piVar26") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar26[1] = iVar33 + -1;" (assignment_expression "piVar26[1] = iVar33 + -1" (subscript_expression "piVar26[1]" (identifier "piVar26") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar33 + -1" (identifier "iVar33") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar33 == 0) {\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }" (if "if") (parenthesized_expression "(iVar33 == 0)" (( "(") (binary_expression "iVar33 == 0" (identifier "iVar33") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar33 = 2;\n              piVar11 = piVar26 + 2;\n              do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);\n            }" ({ "{") (expression_statement "iVar33 = 2;" (assignment_expression "iVar33 = 2" (identifier "iVar33") (= "=") (number_literal "2")) (; ";")) (expression_statement "piVar11 = piVar26 + 2;" (assignment_expression "piVar11 = piVar26 + 2" (identifier "piVar11") (= "=") (binary_expression "piVar26 + 2" (identifier "piVar26") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              } while (iVar34 == 0);" (do "do") (compound_statement "{\n                if (iVar33 == iVar27) goto LAB_00041838;\n                iVar34 = *piVar11;\n                iVar33 = iVar33 + 1;\n                *piVar11 = iVar34 + -1;\n                piVar11 = piVar11 + 1;\n              }" ({ "{") (if_statement "if (iVar33 == iVar27) goto LAB_00041838;" (if "if") (parenthesized_expression "(iVar33 == iVar27)" (( "(") (binary_expression "iVar33 == iVar27" (identifier "iVar33") (== "==") (identifier "iVar27")) () ")")) (goto_statement "goto LAB_00041838;" (goto "goto") (statement_identifier "LAB_00041838") (; ";"))) (expression_statement "iVar34 = *piVar11;" (assignment_expression "iVar34 = *piVar11" (identifier "iVar34") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (expression_statement "iVar33 = iVar33 + 1;" (assignment_expression "iVar33 = iVar33 + 1" (identifier "iVar33") (= "=") (binary_expression "iVar33 + 1" (identifier "iVar33") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*piVar11 = iVar34 + -1;" (assignment_expression "*piVar11 = iVar34 + -1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (binary_expression "iVar34 + -1" (identifier "iVar34") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 1" (identifier "piVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar34 == 0)" (( "(") (binary_expression "iVar34 == 0" (identifier "iVar34") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "LAB_000412a0:\n        piVar31 = piVar31 + -param_8;" (statement_identifier "LAB_000412a0") (: ":") (expression_statement "piVar31 = piVar31 + -param_8;" (assignment_expression "piVar31 = piVar31 + -param_8" (identifier "piVar31") (= "=") (binary_expression "piVar31 + -param_8" (identifier "piVar31") (+ "+") (unary_expression "-param_8" (- "-") (identifier "param_8")))) (; ";"))) (expression_statement "piVar23 = piVar23 + -param_8;" (assignment_expression "piVar23 = piVar23 + -param_8" (identifier "piVar23") (= "=") (binary_expression "piVar23 + -param_8" (identifier "piVar23") (+ "+") (unary_expression "-param_8" (- "-") (identifier "param_8")))) (; ";")) (expression_statement "uVar4 = uVar4 + param_8;" (assignment_expression "uVar4 = uVar4 + param_8" (identifier "uVar4") (= "=") (binary_expression "uVar4 + param_8" (identifier "uVar4") (+ "+") (identifier "param_8"))) (; ";")) (expression_statement "piVar26 = piVar26 + -param_8;" (assignment_expression "piVar26 = piVar26 + -param_8" (identifier "piVar26") (= "=") (binary_expression "piVar26 + -param_8" (identifier "piVar26") (+ "+") (unary_expression "-param_8" (- "-") (identifier "param_8")))) (; ";")) (expression_statement "piVar11 = (int *)(uVar25 - 1);" (assignment_expression "piVar11 = (int *)(uVar25 - 1)" (identifier "piVar11") (= "=") (cast_expression "(int *)(uVar25 - 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar25 - 1)" (( "(") (binary_expression "uVar25 - 1" (identifier "uVar25") (- "-") (number_literal "1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar25 - 1 != 0xffffffff)" (( "(") (binary_expression "uVar25 - 1 != 0xffffffff" (binary_expression "uVar25 - 1" (identifier "uVar25") (- "-") (number_literal "1")) (!= "!=") (number_literal "0xffffffff")) () ")")) (; ";"))) (if_statement "if (local_68 == uVar25 - 1) {\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }\n      else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(local_68 == uVar25 - 1)" (( "(") (binary_expression "local_68 == uVar25 - 1" (identifier "local_68") (== "==") (binary_expression "uVar25 - 1" (identifier "uVar25") (- "-") (number_literal "1"))) () ")")) (compound_statement "{\n        iVar30 = local_64 - (int)param_2;\n        piVar11 = param_6 + iVar30;\n        iVar27 = *piVar11;\n        *piVar11 = iVar27 + 1;\n        if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }\n      }" ({ "{") (expression_statement "iVar30 = local_64 - (int)param_2;" (assignment_expression "iVar30 = local_64 - (int)param_2" (identifier "iVar30") (= "=") (binary_expression "local_64 - (int)param_2" (identifier "local_64") (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")))) (; ";")) (expression_statement "piVar11 = param_6 + iVar30;" (assignment_expression "piVar11 = param_6 + iVar30" (identifier "piVar11") (= "=") (binary_expression "param_6 + iVar30" (identifier "param_6") (+ "+") (identifier "iVar30"))) (; ";")) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" (identifier "iVar27") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (expression_statement "*piVar11 = iVar27 + 1;" (assignment_expression "*piVar11 = iVar27 + 1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar27 + 1 == 0) {\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }" (if "if") (parenthesized_expression "(iVar27 + 1 == 0)" (( "(") (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar27 = iVar30 * 4 + -4;\n          if ((int)param_2 < 2) goto LAB_00041ccc;\n          iVar27 = piVar11[1];\n          piVar11[1] = iVar27 + 1;\n          if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }\n        }" ({ "{") (expression_statement "iVar27 = iVar30 * 4 + -4;" (assignment_expression "iVar27 = iVar30 * 4 + -4" (identifier "iVar27") (= "=") (binary_expression "iVar30 * 4 + -4" (binary_expression "iVar30 * 4" (identifier "iVar30") (* "*") (number_literal "4")) (+ "+") (number_literal "-4"))) (; ";")) (if_statement "if ((int)param_2 < 2) goto LAB_00041ccc;" (if "if") (parenthesized_expression "((int)param_2 < 2)" (( "(") (binary_expression "(int)param_2 < 2" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (< "<") (number_literal "2")) () ")")) (goto_statement "goto LAB_00041ccc;" (goto "goto") (statement_identifier "LAB_00041ccc") (; ";"))) (expression_statement "iVar27 = piVar11[1];" (assignment_expression "iVar27 = piVar11[1]" (identifier "iVar27") (= "=") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar11[1] = iVar27 + 1;" (assignment_expression "piVar11[1] = iVar27 + 1" (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar27 + 1 == 0) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }" (if "if") (parenthesized_expression "(iVar27 + 1 == 0)" (( "(") (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);\n          }" ({ "{") (expression_statement "piVar23 = (int *)0x2;" (assignment_expression "piVar23 = (int *)0x2" (identifier "piVar23") (= "=") (cast_expression "(int *)0x2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (expression_statement "piVar11 = piVar11 + 2;" (assignment_expression "piVar11 = piVar11 + 2" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 2" (identifier "piVar11") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 + 1 == 0);" (do "do") (compound_statement "{\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + 1;\n              piVar11 = piVar11 + 1;\n            }" ({ "{") (expression_statement "bVar1 = param_2 == piVar23;" (assignment_expression "bVar1 = param_2 == piVar23" (identifier "bVar1") (= "=") (binary_expression "param_2 == piVar23" (identifier "param_2") (== "==") (identifier "piVar23"))) (; ";")) (expression_statement "piVar23 = (int *)((int)piVar23 + 1);" (assignment_expression "piVar23 = (int *)((int)piVar23 + 1)" (identifier "piVar23") (= "=") (cast_expression "(int *)((int)piVar23 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar23 + 1)" (( "(") (binary_expression "(int)piVar23 + 1" (cast_expression "(int)piVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar23")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (bVar1) {\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n                piVar11 = param_6 + iVar30 + -1;\n                iVar27 = *piVar11;\n                *piVar11 = iVar27 + -1;\n                if (iVar27 != 0) goto LAB_00041a74;\n                iVar27 = piVar11[1];\n                goto LAB_00041a38;\n              }" ({ "{") (expression_statement "piVar11 = param_6 + iVar30 + -1;" (assignment_expression "piVar11 = param_6 + iVar30 + -1" (identifier "piVar11") (= "=") (binary_expression "param_6 + iVar30 + -1" (binary_expression "param_6 + iVar30" (identifier "param_6") (+ "+") (identifier "iVar30")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" (identifier "iVar27") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar27 != 0) goto LAB_00041a74;" (if "if") (parenthesized_expression "(iVar27 != 0)" (( "(") (binary_expression "iVar27 != 0" (identifier "iVar27") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00041a74;" (goto "goto") (statement_identifier "LAB_00041a74") (; ";"))) (expression_statement "iVar27 = piVar11[1];" (assignment_expression "iVar27 = piVar11[1]" (identifier "iVar27") (= "=") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (goto_statement "goto LAB_00041a38;" (goto "goto") (statement_identifier "LAB_00041a38") (; ";")) (} "}"))) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" (identifier "iVar27") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (expression_statement "*piVar11 = iVar27 + 1;" (assignment_expression "*piVar11 = iVar27 + 1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 1" (identifier "piVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar27 + 1 == 0)" (( "(") (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }" (else "else") (if_statement "if (local_68 == 1) {\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(local_68 == 1)" (( "(") (binary_expression "local_68 == 1" (identifier "local_68") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n        if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }\n      }" ({ "{") (if_statement "if (local_64 < local_60) {\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }\n        else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }" (if "if") (parenthesized_expression "(local_64 < local_60)" (( "(") (binary_expression "local_64 < local_60" (identifier "local_64") (< "<") (identifier "local_60")) () ")")) (compound_statement "{\n          piVar11 = param_6 + (local_64 - (int)param_2);\n          iVar27 = *piVar11;\n          *piVar11 = iVar27 + -1;\n          if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }\n        }" ({ "{") (expression_statement "piVar11 = param_6 + (local_64 - (int)param_2);" (assignment_expression "piVar11 = param_6 + (local_64 - (int)param_2)" (identifier "piVar11") (= "=") (binary_expression "param_6 + (local_64 - (int)param_2)" (identifier "param_6") (+ "+") (parenthesized_expression "(local_64 - (int)param_2)" (( "(") (binary_expression "local_64 - (int)param_2" (identifier "local_64") (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")")))) (; ";")) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" (identifier "iVar27") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }" (if "if") (parenthesized_expression "(((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0))" (( "(") (binary_expression "((iVar27 == 0) && (1 < (int)param_2)) &&\n             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)" (parenthesized_expression "((iVar27 == 0) && (1 < (int)param_2))" (( "(") (binary_expression "(iVar27 == 0) && (1 < (int)param_2)" (parenthesized_expression "(iVar27 == 0)" (( "(") (binary_expression "iVar27 == 0" (identifier "iVar27") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(1 < (int)param_2)" (( "(") (binary_expression "1 < (int)param_2" (number_literal "1") (< "<") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)" (( "(") (comma_expression "iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0" (assignment_expression "iVar27 = piVar11[1]" (identifier "iVar27") (= "=") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]"))) (, ",") (comma_expression "piVar11[1] = iVar27 + -1, iVar27 == 0" (assignment_expression "piVar11[1] = iVar27 + -1" (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "iVar27 == 0" (identifier "iVar27") (== "==") (number_literal "0")))) () ")"))) () ")")) (compound_statement "{\n            piVar23 = (int *)0x2;\n            piVar11 = piVar11 + 2;\n            do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);\n          }" ({ "{") (expression_statement "piVar23 = (int *)0x2;" (assignment_expression "piVar23 = (int *)0x2" (identifier "piVar23") (= "=") (cast_expression "(int *)0x2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (expression_statement "piVar11 = piVar11 + 2;" (assignment_expression "piVar11 = piVar11 + 2" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 2" (identifier "piVar11") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            } while (iVar27 == 0);" (do "do") (compound_statement "{\n              bVar1 = param_2 == piVar23;\n              piVar23 = (int *)((int)piVar23 + 1);\n              if (bVar1) break;\n              iVar27 = *piVar11;\n              *piVar11 = iVar27 + -1;\n              piVar11 = piVar11 + 1;\n            }" ({ "{") (expression_statement "bVar1 = param_2 == piVar23;" (assignment_expression "bVar1 = param_2 == piVar23" (identifier "bVar1") (= "=") (binary_expression "param_2 == piVar23" (identifier "param_2") (== "==") (identifier "piVar23"))) (; ";")) (expression_statement "piVar23 = (int *)((int)piVar23 + 1);" (assignment_expression "piVar23 = (int *)((int)piVar23 + 1)" (identifier "piVar23") (= "=") (cast_expression "(int *)((int)piVar23 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar23 + 1)" (( "(") (binary_expression "(int)piVar23 + 1" (cast_expression "(int)piVar23" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar23")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (bVar1) break;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" (identifier "iVar27") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 1" (identifier "piVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar27 == 0)" (( "(") (binary_expression "iVar27 == 0" (identifier "iVar27") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }" (else "else") (compound_statement "{\n          piVar11 = param_6 + local_64 + (int)param_2 * -2;\n          while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }\n        }" ({ "{") (expression_statement "piVar11 = param_6 + local_64 + (int)param_2 * -2;" (assignment_expression "piVar11 = param_6 + local_64 + (int)param_2 * -2" (identifier "piVar11") (= "=") (binary_expression "param_6 + local_64 + (int)param_2 * -2" (binary_expression "param_6 + local_64" (identifier "param_6") (+ "+") (identifier "local_64")) (+ "+") (binary_expression "(int)param_2 * -2" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (* "*") (number_literal "-2")))) (; ";")) (while_statement "while( true ) {\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            iVar27 = *piVar11;\n            do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);\n            iVar27 = piVar11[1];\n            piVar11[1] = iVar27 + 1;\n            if (iVar27 + 1 != 0) break;\n            iVar27 = 2;\n            piVar23 = piVar11 + 2;\n            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }\n          }" ({ "{") (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" (identifier "iVar27") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (do_statement "do {\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            } while (local_60 < 2);" (do "do") (compound_statement "{\n              *piVar11 = iVar27 + 1;\n              if (iVar27 + 1 != 0) goto LAB_000412d8;\n              iVar27 = 0;\n            }" ({ "{") (expression_statement "*piVar11 = iVar27 + 1;" (assignment_expression "*piVar11 = iVar27 + 1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar27 + 1 != 0) goto LAB_000412d8;" (if "if") (parenthesized_expression "(iVar27 + 1 != 0)" (( "(") (binary_expression "iVar27 + 1 != 0" (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000412d8;" (goto "goto") (statement_identifier "LAB_000412d8") (; ";"))) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_60 < 2)" (( "(") (binary_expression "local_60 < 2" (identifier "local_60") (< "<") (number_literal "2")) () ")")) (; ";")) (expression_statement "iVar27 = piVar11[1];" (assignment_expression "iVar27 = piVar11[1]" (identifier "iVar27") (= "=") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar11[1] = iVar27 + 1;" (assignment_expression "piVar11[1] = iVar27 + 1" (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar27 + 1 != 0) break;" (if "if") (parenthesized_expression "(iVar27 + 1 != 0)" (( "(") (binary_expression "iVar27 + 1 != 0" (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar27 = 2;" (assignment_expression "iVar27 = 2" (identifier "iVar27") (= "=") (number_literal "2")) (; ";")) (expression_statement "piVar23 = piVar11 + 2;" (assignment_expression "piVar23 = piVar11 + 2" (identifier "piVar23") (= "=") (binary_expression "piVar11 + 2" (identifier "piVar11") (+ "+") (number_literal "2"))) (; ";")) (while_statement "while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }" (while "while") (parenthesized_expression "(bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1)" (( "(") (comma_expression "bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1" (assignment_expression "bVar1 = iVar27 != local_60" (identifier "bVar1") (= "=") (binary_expression "iVar27 != local_60" (identifier "iVar27") (!= "!=") (identifier "local_60"))) (, ",") (comma_expression "iVar27 = iVar27 + 1, bVar1" (assignment_expression "iVar27 = iVar27 + 1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (, ",") (identifier "bVar1"))) () ")")) (compound_statement "{\n              iVar30 = *piVar23;\n              *piVar23 = iVar30 + 1;\n              piVar23 = piVar23 + 1;\n              if (iVar30 + 1 != 0) goto LAB_000412d8;\n            }" ({ "{") (expression_statement "iVar30 = *piVar23;" (assignment_expression "iVar30 = *piVar23" (identifier "iVar30") (= "=") (pointer_expression "*piVar23" (* "*") (identifier "piVar23"))) (; ";")) (expression_statement "*piVar23 = iVar30 + 1;" (assignment_expression "*piVar23 = iVar30 + 1" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 1" (identifier "piVar23") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar30 + 1 != 0) goto LAB_000412d8;" (if "if") (parenthesized_expression "(iVar30 + 1 != 0)" (( "(") (binary_expression "iVar30 + 1 != 0" (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000412d8;" (goto "goto") (statement_identifier "LAB_000412d8") (; ";"))) (} "}"))) (} "}"))) (} "}")))) (} "}"))))) (} "}"))) (} "}")) (else_clause "else {\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }" (else "else") (compound_statement "{\nLAB_00040bb8:\n    iVar7 = 0x230;\n    local_74 = param_4;\n    if ((int)param_7 < 0x230) goto LAB_0004149c;\nLAB_00040bc8:\n    local_30 = 0;\n    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);\n    iVar5 = 1 << (uVar4 & 0x1f);\n    if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }\n    (*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);\nLAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);\nLAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);\n    iVar27 = *piVar11;\n    *piVar11 = iVar27 + -1;\n    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }\nLAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;\n  }" ({ "{") (labeled_statement "LAB_00040bb8:\n    iVar7 = 0x230;" (statement_identifier "LAB_00040bb8") (: ":") (expression_statement "iVar7 = 0x230;" (assignment_expression "iVar7 = 0x230" (identifier "iVar7") (= "=") (number_literal "0x230")) (; ";"))) (expression_statement "local_74 = param_4;" (assignment_expression "local_74 = param_4" (identifier "local_74") (= "=") (identifier "param_4")) (; ";")) (if_statement "if ((int)param_7 < 0x230) goto LAB_0004149c;" (if "if") (parenthesized_expression "((int)param_7 < 0x230)" (( "(") (binary_expression "(int)param_7 < 0x230" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (< "<") (number_literal "0x230")) () ")")) (goto_statement "goto LAB_0004149c;" (goto "goto") (statement_identifier "LAB_0004149c") (; ";"))) (labeled_statement "LAB_00040bc8:\n    local_30 = 0;" (statement_identifier "LAB_00040bc8") (: ":") (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12)" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)" (( "(") (pointer_expression "*(code *)PTR___gmpn_fft_best_k_00097320" (* "*") (cast_expression "(code *)PTR___gmpn_fft_best_k_00097320" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_fft_best_k_00097320"))) () ")")) (argument_list "(param_7,param_12)" (( "(") (identifier "param_7") (, ",") (identifier "param_12") () ")")))) (; ";")) (expression_statement "iVar5 = 1 << (uVar4 & 0x1f);" (assignment_expression "iVar5 = 1 << (uVar4 & 0x1f)" (identifier "iVar5") (= "=") (binary_expression "1 << (uVar4 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar4 & 0x1f)" (( "(") (binary_expression "uVar4 & 0x1f" (identifier "uVar4") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if ((iVar5 - 1U & param_7) == 0) {\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }" (if "if") (parenthesized_expression "((iVar5 - 1U & param_7) == 0)" (( "(") (binary_expression "(iVar5 - 1U & param_7) == 0" (parenthesized_expression "(iVar5 - 1U & param_7)" (( "(") (binary_expression "iVar5 - 1U & param_7" (binary_expression "iVar5 - 1U" (identifier "iVar5") (- "-") (number_literal "1U")) (& "&") (identifier "param_7")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar24 = iVar5;\n      if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }\n      iVar33 = (int)param_7 >> (uVar4 & 0x1f);\n      if (iVar24 == 0) {\n        trap(7);\n      }\n      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;\n      iVar34 = iVar24;\n      if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }\n      uVar25 = iVar34 >> 5;\n      if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }\n      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;\n      iVar7 = 4 << (uVar4 & 0x1f);\n      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar34 = uVar25 + 1;\n      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);\n      iVar24 = iVar24 >> (uVar4 & 0x1f);\n      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);\n      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);\n      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;\n      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);\n      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));\n      if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }\n      FUN_0003f560(piVar11,uVar4);\n      if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }\n      goto LAB_00040f88;\n    }" ({ "{") (expression_statement "iVar24 = iVar5;" (assignment_expression "iVar24 = iVar5" (identifier "iVar24") (= "=") (identifier "iVar5")) (; ";")) (if_statement "if (iVar5 < 0x20) {\n        iVar24 = 0x20;\n      }" (if "if") (parenthesized_expression "(iVar5 < 0x20)" (( "(") (binary_expression "iVar5 < 0x20" (identifier "iVar5") (< "<") (number_literal "0x20")) () ")")) (compound_statement "{\n        iVar24 = 0x20;\n      }" ({ "{") (expression_statement "iVar24 = 0x20;" (assignment_expression "iVar24 = 0x20" (identifier "iVar24") (= "=") (number_literal "0x20")) (; ";")) (} "}"))) (expression_statement "iVar33 = (int)param_7 >> (uVar4 & 0x1f);" (assignment_expression "iVar33 = (int)param_7 >> (uVar4 & 0x1f)" (identifier "iVar33") (= "=") (binary_expression "(int)param_7 >> (uVar4 & 0x1f)" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (>> ">>") (parenthesized_expression "(uVar4 & 0x1f)" (( "(") (binary_expression "uVar4 & 0x1f" (identifier "uVar4") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if (iVar24 == 0) {\n        trap(7);\n      }" (if "if") (parenthesized_expression "(iVar24 == 0)" (( "(") (binary_expression "iVar24 == 0" (identifier "iVar24") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        trap(7);\n      }" ({ "{") (expression_statement "trap(7);" (call_expression "trap(7)" (identifier "trap") (argument_list "(7)" (( "(") (number_literal "7") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24;" (assignment_expression "iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24" (identifier "iVar24") (= "=") (binary_expression "((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *\n               iVar24" (parenthesized_expression "((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24)" (( "(") (binary_expression "(int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24" (cast_expression "(int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24)" (( "(") (binary_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24" (binary_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2" (binary_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4" (binary_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2" (parenthesized_expression "((int)(param_7 << 5) >> (uVar4 & 0x1f))" (( "(") (binary_expression "(int)(param_7 << 5) >> (uVar4 & 0x1f)" (cast_expression "(int)(param_7 << 5)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(param_7 << 5)" (( "(") (binary_expression "param_7 << 5" (identifier "param_7") (<< "<<") (number_literal "5")) () ")"))) (>> ">>") (parenthesized_expression "(uVar4 & 0x1f)" (( "(") (binary_expression "uVar4 & 0x1f" (identifier "uVar4") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (* "*") (number_literal "2")) (+ "+") (identifier "uVar4")) (+ "+") (number_literal "2")) (+ "+") (identifier "iVar24")) () ")"))) (/ "/") (identifier "iVar24")) () ")")) (* "*") (identifier "iVar24"))) (; ";")) (expression_statement "iVar34 = iVar24;" (assignment_expression "iVar34 = iVar24" (identifier "iVar34") (= "=") (identifier "iVar24")) (; ";")) (if_statement "if (iVar24 < 0) {\n        iVar34 = iVar24 + 0x1f;\n      }" (if "if") (parenthesized_expression "(iVar24 < 0)" (( "(") (binary_expression "iVar24 < 0" (identifier "iVar24") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        iVar34 = iVar24 + 0x1f;\n      }" ({ "{") (expression_statement "iVar34 = iVar24 + 0x1f;" (assignment_expression "iVar34 = iVar24 + 0x1f" (identifier "iVar34") (= "=") (binary_expression "iVar24 + 0x1f" (identifier "iVar24") (+ "+") (number_literal "0x1f"))) (; ";")) (} "}"))) (expression_statement "uVar25 = iVar34 >> 5;" (assignment_expression "uVar25 = iVar34 >> 5" (identifier "uVar25") (= "=") (binary_expression "iVar34 >> 5" (identifier "iVar34") (>> ">>") (number_literal "5"))) (; ";")) (if_statement "if (iVar7 <= (int)uVar25) {\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }" (if "if") (parenthesized_expression "(iVar7 <= (int)uVar25)" (( "(") (binary_expression "iVar7 <= (int)uVar25" (identifier "iVar7") (<= "<=") (cast_expression "(int)uVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar25"))) () ")")) (compound_statement "{\n        while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }\n      }" ({ "{") (while_statement "while( true ) {\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);\n          iVar7 = 1 << (uVar6 & 0x1f);\n          if ((iVar7 - 1U & uVar25) == 0) break;\n          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;\n          iVar24 = uVar25 << 5;\n        }" ({ "{") (expression_statement "uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);" (assignment_expression "uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12)" (identifier "uVar6") (= "=") (call_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12)" (parenthesized_expression "(*(code *)PTR___gmpn_fft_best_k_00097320)" (( "(") (pointer_expression "*(code *)PTR___gmpn_fft_best_k_00097320" (* "*") (cast_expression "(code *)PTR___gmpn_fft_best_k_00097320" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_fft_best_k_00097320"))) () ")")) (argument_list "(uVar25,param_12)" (( "(") (identifier "uVar25") (, ",") (identifier "param_12") () ")")))) (; ";")) (expression_statement "iVar7 = 1 << (uVar6 & 0x1f);" (assignment_expression "iVar7 = 1 << (uVar6 & 0x1f)" (identifier "iVar7") (= "=") (binary_expression "1 << (uVar6 & 0x1f)" (number_literal "1") (<< "<<") (parenthesized_expression "(uVar6 & 0x1f)" (( "(") (binary_expression "uVar6 & 0x1f" (identifier "uVar6") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (if_statement "if ((iVar7 - 1U & uVar25) == 0) break;" (if "if") (parenthesized_expression "((iVar7 - 1U & uVar25) == 0)" (( "(") (binary_expression "(iVar7 - 1U & uVar25) == 0" (parenthesized_expression "(iVar7 - 1U & uVar25)" (( "(") (binary_expression "iVar7 - 1U & uVar25" (binary_expression "iVar7 - 1U" (identifier "iVar7") (- "-") (number_literal "1U")) (& "&") (identifier "uVar25")) () ")")) (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar25 = -iVar7 & (uVar25 + iVar7) - 1;" (assignment_expression "uVar25 = -iVar7 & (uVar25 + iVar7) - 1" (identifier "uVar25") (= "=") (binary_expression "-iVar7 & (uVar25 + iVar7) - 1" (unary_expression "-iVar7" (- "-") (identifier "iVar7")) (& "&") (binary_expression "(uVar25 + iVar7) - 1" (parenthesized_expression "(uVar25 + iVar7)" (( "(") (binary_expression "uVar25 + iVar7" (identifier "uVar25") (+ "+") (identifier "iVar7")) () ")")) (- "-") (number_literal "1")))) (; ";")) (expression_statement "iVar24 = uVar25 << 5;" (assignment_expression "iVar24 = uVar25 << 5" (identifier "iVar24") (= "=") (binary_expression "uVar25 << 5" (identifier "uVar25") (<< "<<") (number_literal "5"))) (; ";")) (} "}"))) (} "}"))) (if_statement "if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;" (if "if") (parenthesized_expression "((int)param_7 <= (int)uVar25)" (( "(") (binary_expression "(int)param_7 <= (int)uVar25" (cast_expression "(int)param_7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_7")) (<= "<=") (cast_expression "(int)uVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar25"))) () ")")) (goto_statement "goto LAB_00041cb0;" (goto "goto") (statement_identifier "LAB_00041cb0") (; ";"))) (expression_statement "iVar7 = 4 << (uVar4 & 0x1f);" (assignment_expression "iVar7 = 4 << (uVar4 & 0x1f)" (identifier "iVar7") (= "=") (binary_expression "4 << (uVar4 & 0x1f)" (number_literal "4") (<< "<<") (parenthesized_expression "(uVar4 & 0x1f)" (( "(") (binary_expression "uVar4 & 0x1f" (identifier "uVar4") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);" (assignment_expression "uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7)" (identifier "uVar8") (= "=") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_000972f0"))) () ")")) (argument_list "(&local_30,iVar7)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (identifier "iVar7") () ")")))) (; ";")) (expression_statement "iVar34 = uVar25 + 1;" (assignment_expression "iVar34 = uVar25 + 1" (identifier "iVar34") (= "=") (binary_expression "uVar25 + 1" (identifier "uVar25") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);" (assignment_expression "uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7)" (identifier "uVar9") (= "=") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_000972f0"))) () ")")) (argument_list "(&local_30,iVar7)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (identifier "iVar7") () ")")))) (; ";")) (expression_statement "iVar24 = iVar24 >> (uVar4 & 0x1f);" (assignment_expression "iVar24 = iVar24 >> (uVar4 & 0x1f)" (identifier "iVar24") (= "=") (binary_expression "iVar24 >> (uVar4 & 0x1f)" (identifier "iVar24") (>> ">>") (parenthesized_expression "(uVar4 & 0x1f)" (( "(") (binary_expression "uVar4 & 0x1f" (identifier "uVar4") (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);" (assignment_expression "iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2)" (identifier "iVar7") (= "=") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)\n                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_000972f0"))) () ")")) (argument_list "(&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (binary_expression "(iVar34 * 2 << (uVar4 & 0x1f)) << 2" (parenthesized_expression "(iVar34 * 2 << (uVar4 & 0x1f))" (( "(") (binary_expression "iVar34 * 2 << (uVar4 & 0x1f)" (binary_expression "iVar34 * 2" (identifier "iVar34") (* "*") (number_literal "2")) (<< "<<") (parenthesized_expression "(uVar4 & 0x1f)" (( "(") (binary_expression "uVar4 & 0x1f" (identifier "uVar4") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (<< "<<") (number_literal "2")) () ")")))) (; ";")) (expression_statement "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);" (assignment_expression "uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8)" (identifier "uVar10") (= "=") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_000972f0"))) () ")")) (argument_list "(&local_30,iVar34 * 8)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (binary_expression "iVar34 * 8" (identifier "iVar34") (* "*") (number_literal "8")) () ")")))) (; ";")) (expression_statement "iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;" (assignment_expression "iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4" (identifier "iVar34") (= "=") (binary_expression "iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4" (identifier "iVar7") (+ "+") (binary_expression "(iVar34 << (uVar4 & 0x1f)) * 4" (parenthesized_expression "(iVar34 << (uVar4 & 0x1f))" (( "(") (binary_expression "iVar34 << (uVar4 & 0x1f)" (identifier "iVar34") (<< "<<") (parenthesized_expression "(uVar4 & 0x1f)" (( "(") (binary_expression "uVar4 & 0x1f" (identifier "uVar4") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (* "*") (number_literal "4")))) (; ";")) (expression_statement "piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);" (assignment_expression "piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4)" (identifier "piVar11") (= "=") (cast_expression "(int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4)" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_000972f0"))) () ")")) (argument_list "(&local_30,(uVar4 + 1) * 4)" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (binary_expression "(uVar4 + 1) * 4" (parenthesized_expression "(uVar4 + 1)" (( "(") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));" (assignment_expression "iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f))" (identifier "iVar12") (= "=") (call_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f))" (parenthesized_expression "(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)" (( "(") (pointer_expression "*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (* "*") (cast_expression "(code *)PTR___gmp_tmp_reentrant_alloc_000972f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_tmp_reentrant_alloc_000972f0"))) () ")")) (argument_list "(&local_30,8 << (uVar4 & 0x1f))" (( "(") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (binary_expression "8 << (uVar4 & 0x1f)" (number_literal "8") (<< "<<") (parenthesized_expression "(uVar4 & 0x1f)" (( "(") (binary_expression "uVar4 & 0x1f" (identifier "uVar4") (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (; ";")) (if_statement "if (-1 < (int)uVar4) {\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }" (if "if") (parenthesized_expression "(-1 < (int)uVar4)" (( "(") (binary_expression "-1 < (int)uVar4" (number_literal "-1") (< "<") (cast_expression "(int)uVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar4"))) () ")")) (compound_statement "{\n        uVar6 = 0;\n        piVar23 = piVar11;\n        do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);\n      }" ({ "{") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar23 = piVar11;" (assignment_expression "piVar23 = piVar11" (identifier "piVar23") (= "=") (identifier "piVar11")) (; ";")) (do_statement "do {\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        } while (uVar6 != uVar4 + 1);" (do "do") (compound_statement "{\n          uVar29 = uVar6 & 0x1f;\n          *piVar23 = iVar12;\n          uVar6 = uVar6 + 1;\n          iVar12 = iVar12 + (4 << uVar29);\n          piVar23 = piVar23 + 1;\n        }" ({ "{") (expression_statement "uVar29 = uVar6 & 0x1f;" (assignment_expression "uVar29 = uVar6 & 0x1f" (identifier "uVar29") (= "=") (binary_expression "uVar6 & 0x1f" (identifier "uVar6") (& "&") (number_literal "0x1f"))) (; ";")) (expression_statement "*piVar23 = iVar12;" (assignment_expression "*piVar23 = iVar12" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (identifier "iVar12")) (; ";")) (expression_statement "uVar6 = uVar6 + 1;" (assignment_expression "uVar6 = uVar6 + 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 + 1" (identifier "uVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar12 = iVar12 + (4 << uVar29);" (assignment_expression "iVar12 = iVar12 + (4 << uVar29)" (identifier "iVar12") (= "=") (binary_expression "iVar12 + (4 << uVar29)" (identifier "iVar12") (+ "+") (parenthesized_expression "(4 << uVar29)" (( "(") (binary_expression "4 << uVar29" (number_literal "4") (<< "<<") (identifier "uVar29")) () ")")))) (; ";")) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 1" (identifier "piVar23") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar6 != uVar4 + 1)" (( "(") (binary_expression "uVar6 != uVar4 + 1" (identifier "uVar6") (!= "!=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_0003f560(piVar11,uVar4);" (call_expression "FUN_0003f560(piVar11,uVar4)" (identifier "FUN_0003f560") (argument_list "(piVar11,uVar4)" (( "(") (identifier "piVar11") (, ",") (identifier "uVar4") () ")"))) (; ";")) (if_statement "if (0 < iVar30) {\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }" (if "if") (parenthesized_expression "(0 < iVar30)" (( "(") (binary_expression "0 < iVar30" (number_literal "0") (< "<") (identifier "iVar30")) () ")")) (compound_statement "{\n        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;\n        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);\n        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);\n        iVar12 = 0;\n        do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);\n      }" ({ "{") (expression_statement "iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;" (assignment_expression "iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1" (identifier "iVar13") (= "=") (binary_expression "(iVar33 << (uVar4 & 0x1f)) + 1" (parenthesized_expression "(iVar33 << (uVar4 & 0x1f))" (( "(") (binary_expression "iVar33 << (uVar4 & 0x1f)" (identifier "iVar33") (<< "<<") (parenthesized_expression "(uVar4 & 0x1f)" (( "(") (binary_expression "uVar4 & 0x1f" (identifier "uVar4") (& "&") (number_literal "0x1f")) () ")"))) () ")")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4)" (identifier "pcVar14") (= "=") (cast_expression "(code *)(PTR_LAB_00097078 + 0xad4)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00097078 + 0xad4)" (( "(") (binary_expression "PTR_LAB_00097078 + 0xad4" (identifier "PTR_LAB_00097078") (+ "+") (number_literal "0xad4")) () ")")))) (; ";")) (expression_statement "pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);" (assignment_expression "pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac)" (identifier "pcVar15") (= "=") (cast_expression "(code *)(PTR_LAB_00097078 + -0x4ac)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00097078 + -0x4ac)" (( "(") (binary_expression "PTR_LAB_00097078 + -0x4ac" (identifier "PTR_LAB_00097078") (+ "+") (number_literal "-0x4ac")) () ")")))) (; ";")) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        } while (iVar30 != iVar12);" (do "do") (compound_statement "{\n          piVar32 = param_4 + iVar12;\n          piVar31 = (int *)*piVar32;\n          piVar26 = piVar31 + param_7;\n          piVar23 = piVar31;\n          if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }\n          if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }\n          iVar12 = iVar12 + 1;\n          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);\n          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;\n        }" ({ "{") (expression_statement "piVar32 = param_4 + iVar12;" (assignment_expression "piVar32 = param_4 + iVar12" (identifier "piVar32") (= "=") (binary_expression "param_4 + iVar12" (identifier "param_4") (+ "+") (identifier "iVar12"))) (; ";")) (expression_statement "piVar31 = (int *)*piVar32;" (assignment_expression "piVar31 = (int *)*piVar32" (identifier "piVar31") (= "=") (cast_expression "(int *)*piVar32" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar32" (* "*") (identifier "piVar32")))) (; ";")) (expression_statement "piVar26 = piVar31 + param_7;" (assignment_expression "piVar26 = piVar31 + param_7" (identifier "piVar26") (= "=") (binary_expression "piVar31 + param_7" (identifier "piVar31") (+ "+") (identifier "param_7"))) (; ";")) (expression_statement "piVar23 = piVar31;" (assignment_expression "piVar23 = piVar31" (identifier "piVar23") (= "=") (identifier "piVar31")) (; ";")) (if_statement "if (*piVar26 != 0) {\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }" (if "if") (parenthesized_expression "(*piVar26 != 0)" (( "(") (binary_expression "*piVar26 != 0" (pointer_expression "*piVar26" (* "*") (identifier "piVar26")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);\n            piVar23 = piVar31;\n            uVar6 = param_7;\n            if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }\n          }" ({ "{") (do_statement "do {\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            } while (iVar21 == 0);" (do "do") (compound_statement "{\n              iVar21 = *piVar23;\n              *piVar23 = iVar21 + -1;\n              piVar23 = piVar23 + 1;\n            }" ({ "{") (expression_statement "iVar21 = *piVar23;" (assignment_expression "iVar21 = *piVar23" (identifier "iVar21") (= "=") (pointer_expression "*piVar23" (* "*") (identifier "piVar23"))) (; ";")) (expression_statement "*piVar23 = iVar21 + -1;" (assignment_expression "*piVar23 = iVar21 + -1" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (binary_expression "iVar21 + -1" (identifier "iVar21") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 1" (identifier "piVar23") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "piVar23 = piVar31;" (assignment_expression "piVar23 = piVar31" (identifier "piVar23") (= "=") (identifier "piVar31")) (; ";")) (expression_statement "uVar6 = param_7;" (assignment_expression "uVar6 = param_7" (identifier "uVar6") (= "=") (identifier "param_7")) (; ";")) (if_statement "if (*piVar26 == 0) {\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }\n            else {\n              *piVar26 = 0;\n            }" (if "if") (parenthesized_expression "(*piVar26 == 0)" (( "(") (binary_expression "*piVar26 == 0" (pointer_expression "*piVar26" (* "*") (identifier "piVar26")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);\n              *piVar26 = 1;\n            }" ({ "{") (do_statement "do {\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              } while (uVar6 != 0);" (do "do") (compound_statement "{\n                uVar6 = uVar6 - 1;\n                *piVar23 = 0;\n                piVar23 = piVar23 + 1;\n              }" ({ "{") (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) (; ";")) (expression_statement "*piVar23 = 0;" (assignment_expression "*piVar23 = 0" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 1" (identifier "piVar23") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "*piVar26 = 1;" (assignment_expression "*piVar26 = 1" (pointer_expression "*piVar26" (* "*") (identifier "piVar26")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n              *piVar26 = 0;\n            }" (else "else") (compound_statement "{\n              *piVar26 = 0;\n            }" ({ "{") (expression_statement "*piVar26 = 0;" (assignment_expression "*piVar26 = 0" (pointer_expression "*piVar26" (* "*") (identifier "piVar26")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (if_statement "if (param_4 == local_74) {\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }\n          else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }" (if "if") (parenthesized_expression "(param_4 == local_74)" (( "(") (binary_expression "param_4 == local_74" (identifier "param_4") (== "==") (identifier "local_74")) () ")")) (compound_statement "{\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n          }" ({ "{") (expression_statement "(*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);" (call_expression "(*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10)" (( "(") (identifier "iVar7") (, ",") (identifier "uVar8") (, ",") (identifier "iVar5") (, ",") (identifier "uVar25") (, ",") (identifier "piVar31") (, ",") (identifier "iVar13") (, ",") (identifier "iVar33") (, ",") (identifier "iVar24") (, ",") (identifier "uVar10") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }" (else "else") (compound_statement "{\n            piVar26 = (int *)local_74[iVar12];\n            piVar28 = piVar26 + param_7;\n            piVar23 = piVar26;\n            if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }\n            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);\n            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);\n          }" ({ "{") (expression_statement "piVar26 = (int *)local_74[iVar12];" (assignment_expression "piVar26 = (int *)local_74[iVar12]" (identifier "piVar26") (= "=") (cast_expression "(int *)local_74[iVar12]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_74[iVar12]" (identifier "local_74") ([ "[") (identifier "iVar12") (] "]")))) (; ";")) (expression_statement "piVar28 = piVar26 + param_7;" (assignment_expression "piVar28 = piVar26 + param_7" (identifier "piVar28") (= "=") (binary_expression "piVar26 + param_7" (identifier "piVar26") (+ "+") (identifier "param_7"))) (; ";")) (expression_statement "piVar23 = piVar26;" (assignment_expression "piVar23 = piVar26" (identifier "piVar23") (= "=") (identifier "piVar26")) (; ";")) (if_statement "if (*piVar28 != 0) {\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }" (if "if") (parenthesized_expression "(*piVar28 != 0)" (( "(") (binary_expression "*piVar28 != 0" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);\n              uVar6 = param_7;\n              if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }\n            }" ({ "{") (do_statement "do {\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              } while (iVar21 == 0);" (do "do") (compound_statement "{\n                iVar21 = *piVar23;\n                *piVar23 = iVar21 + -1;\n                piVar23 = piVar23 + 1;\n              }" ({ "{") (expression_statement "iVar21 = *piVar23;" (assignment_expression "iVar21 = *piVar23" (identifier "iVar21") (= "=") (pointer_expression "*piVar23" (* "*") (identifier "piVar23"))) (; ";")) (expression_statement "*piVar23 = iVar21 + -1;" (assignment_expression "*piVar23 = iVar21 + -1" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (binary_expression "iVar21 + -1" (identifier "iVar21") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 1" (identifier "piVar23") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar21 == 0)" (( "(") (binary_expression "iVar21 == 0" (identifier "iVar21") (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "uVar6 = param_7;" (assignment_expression "uVar6 = param_7" (identifier "uVar6") (= "=") (identifier "param_7")) (; ";")) (if_statement "if (*piVar28 == 0) {\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }\n              else {\n                *piVar28 = 0;\n              }" (if "if") (parenthesized_expression "(*piVar28 == 0)" (( "(") (binary_expression "*piVar28 == 0" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);\n                *piVar28 = 1;\n              }" ({ "{") (do_statement "do {\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                } while (uVar6 != 0);" (do "do") (compound_statement "{\n                  uVar6 = uVar6 - 1;\n                  *piVar26 = 0;\n                  piVar26 = piVar26 + 1;\n                }" ({ "{") (expression_statement "uVar6 = uVar6 - 1;" (assignment_expression "uVar6 = uVar6 - 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) (; ";")) (expression_statement "*piVar26 = 0;" (assignment_expression "*piVar26 = 0" (pointer_expression "*piVar26" (* "*") (identifier "piVar26")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar26 = piVar26 + 1;" (assignment_expression "piVar26 = piVar26 + 1" (identifier "piVar26") (= "=") (binary_expression "piVar26 + 1" (identifier "piVar26") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "*piVar28 = 1;" (assignment_expression "*piVar28 = 1" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n                *piVar28 = 0;\n              }" (else "else") (compound_statement "{\n                *piVar28 = 0;\n              }" ({ "{") (expression_statement "*piVar28 = 0;" (assignment_expression "*piVar28 = 0" (pointer_expression "*piVar28" (* "*") (identifier "piVar28")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (expression_statement "(*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);" (call_expression "(*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10)" (( "(") (identifier "iVar7") (, ",") (identifier "uVar8") (, ",") (identifier "iVar5") (, ",") (identifier "uVar25") (, ",") (identifier "piVar31") (, ",") (identifier "iVar13") (, ",") (identifier "iVar33") (, ",") (identifier "iVar24") (, ",") (identifier "uVar10") () ")"))) (; ";")) (expression_statement "(*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);" (call_expression "(*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10)" (parenthesized_expression "(*pcVar15)" (( "(") (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) () ")")) (argument_list "(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10)" (( "(") (identifier "iVar34") (, ",") (identifier "uVar9") (, ",") (identifier "iVar5") (, ",") (identifier "uVar25") (, ",") (subscript_expression "local_74[iVar12]" (identifier "local_74") ([ "[") (identifier "iVar12") (] "]")) (, ",") (identifier "iVar13") (, ",") (identifier "iVar33") (, ",") (identifier "iVar24") (, ",") (identifier "uVar10") () ")"))) (; ";")) (} "}")))) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" (identifier "iVar12") (= "=") (binary_expression "iVar12 + 1" (identifier "iVar12") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12);" (assignment_expression "uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12)" (identifier "uVar16") (= "=") (call_expression "(*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11\n                              ,uVar10,param_12)" (( "(") (pointer_expression "*piVar32" (* "*") (identifier "piVar32")) (, ",") (identifier "param_7") (, ",") (identifier "uVar4") (, ",") (identifier "uVar8") (, ",") (identifier "uVar9") (, ",") (identifier "iVar34") (, ",") (identifier "uVar25") (, ",") (identifier "iVar33") (, ",") (identifier "iVar24") (, ",") (identifier "piVar11") (, ",") (identifier "uVar10") (, ",") (identifier "param_12") () ")")))) (; ";")) (expression_statement "*(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;" (assignment_expression "*(undefined4 *)(*piVar32 + param_7 * 4) = uVar16" (pointer_expression "*(undefined4 *)(*piVar32 + param_7 * 4)" (* "*") (cast_expression "(undefined4 *)(*piVar32 + param_7 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar32 + param_7 * 4)" (( "(") (binary_expression "*piVar32 + param_7 * 4" (pointer_expression "*piVar32" (* "*") (identifier "piVar32")) (+ "+") (binary_expression "param_7 * 4" (identifier "param_7") (* "*") (number_literal "4"))) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar30 != iVar12)" (( "(") (binary_expression "iVar30 != iVar12" (identifier "iVar30") (!= "!=") (identifier "iVar12")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_00040f88;" (goto "goto") (statement_identifier "LAB_00040f88") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);" (call_expression "(*(code *)PTR___gmp_assert_fail_00097420)\n              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_00097420)" (( "(") (pointer_expression "*(code *)PTR___gmp_assert_fail_00097420" (* "*") (cast_expression "(code *)PTR___gmp_assert_fail_00097420" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_assert_fail_00097420"))) () ")")) (argument_list "(PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490)" (( "(") (binary_expression "PTR_DAT_0009706c + -0x149c" (identifier "PTR_DAT_0009706c") (+ "+") (number_literal "-0x149c")) (, ",") (number_literal "0x1c1") (, ",") (binary_expression "PTR_DAT_0009706c + -0x1490" (identifier "PTR_DAT_0009706c") (+ "+") (number_literal "-0x1490")) () ")"))) (; ";")) (labeled_statement "LAB_00041cb0:\n    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);" (statement_identifier "LAB_00041cb0") (: ":") (expression_statement "iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);" (assignment_expression "iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c)" (identifier "iVar27") (= "=") (call_expression "(*(code *)PTR___gmp_assert_fail_00097420)\n                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c)" (parenthesized_expression "(*(code *)PTR___gmp_assert_fail_00097420)" (( "(") (pointer_expression "*(code *)PTR___gmp_assert_fail_00097420" (* "*") (cast_expression "(code *)PTR___gmp_assert_fail_00097420" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmp_assert_fail_00097420"))) () ")")) (argument_list "(PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c)" (( "(") (binary_expression "PTR_DAT_0009706c + -0x149c" (identifier "PTR_DAT_0009706c") (+ "+") (number_literal "-0x149c")) (, ",") (number_literal "0x1d7") (, ",") (binary_expression "PTR_DAT_0009706c + -0x147c" (identifier "PTR_DAT_0009706c") (+ "+") (number_literal "-0x147c")) () ")")))) (; ";"))) (labeled_statement "LAB_00041ccc:\n    piVar11 = (int *)((int)param_6 + iVar27);" (statement_identifier "LAB_00041ccc") (: ":") (expression_statement "piVar11 = (int *)((int)param_6 + iVar27);" (assignment_expression "piVar11 = (int *)((int)param_6 + iVar27)" (identifier "piVar11") (= "=") (cast_expression "(int *)((int)param_6 + iVar27)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_6 + iVar27)" (( "(") (binary_expression "(int)param_6 + iVar27" (cast_expression "(int)param_6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_6")) (+ "+") (identifier "iVar27")) () ")")))) (; ";"))) (expression_statement "iVar27 = *piVar11;" (assignment_expression "iVar27 = *piVar11" (identifier "iVar27") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (expression_statement "*piVar11 = iVar27 + -1;" (assignment_expression "*piVar11 = iVar27 + -1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if ((iVar27 == 0) && (param_2 == (int *)0x1)) {\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }" (if "if") (parenthesized_expression "((iVar27 == 0) && (param_2 == (int *)0x1))" (( "(") (binary_expression "(iVar27 == 0) && (param_2 == (int *)0x1)" (parenthesized_expression "(iVar27 == 0)" (( "(") (binary_expression "iVar27 == 0" (identifier "iVar27") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_2 == (int *)0x1)" (( "(") (binary_expression "param_2 == (int *)0x1" (identifier "param_2") (== "==") (cast_expression "(int *)0x1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) () ")"))) () ")")) (compound_statement "{\n      iVar27 = piVar11[1];\nLAB_00041a38:\n      piVar11[1] = iVar27 + -1;\n      if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }\n    }" ({ "{") (expression_statement "iVar27 = piVar11[1];" (assignment_expression "iVar27 = piVar11[1]" (identifier "iVar27") (= "=") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (labeled_statement "LAB_00041a38:\n      piVar11[1] = iVar27 + -1;" (statement_identifier "LAB_00041a38") (: ":") (expression_statement "piVar11[1] = iVar27 + -1;" (assignment_expression "piVar11[1] = iVar27 + -1" (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (; ";"))) (if_statement "if (iVar27 == 0) {\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }" (if "if") (parenthesized_expression "(iVar27 == 0)" (( "(") (binary_expression "iVar27 == 0" (identifier "iVar27") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar27 = 2;\n        piVar11 = piVar11 + 2;\n        do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);\n      }" ({ "{") (expression_statement "iVar27 = 2;" (assignment_expression "iVar27 = 2" (identifier "iVar27") (= "=") (number_literal "2")) (; ";")) (expression_statement "piVar11 = piVar11 + 2;" (assignment_expression "piVar11 = piVar11 + 2" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 2" (identifier "piVar11") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 == 0);" (do "do") (compound_statement "{\n          bVar1 = (int)param_2 < iVar27;\n          iVar27 = iVar27 + 1;\n          if (bVar1) break;\n          iVar30 = *piVar11;\n          *piVar11 = iVar30 + -1;\n          piVar11 = piVar11 + 1;\n        }" ({ "{") (expression_statement "bVar1 = (int)param_2 < iVar27;" (assignment_expression "bVar1 = (int)param_2 < iVar27" (identifier "bVar1") (= "=") (binary_expression "(int)param_2 < iVar27" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (< "<") (identifier "iVar27"))) (; ";")) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar1) break;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar30 = *piVar11;" (assignment_expression "iVar30 = *piVar11" (identifier "iVar30") (= "=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) (; ";")) (expression_statement "*piVar11 = iVar30 + -1;" (assignment_expression "*piVar11 = iVar30 + -1" (pointer_expression "*piVar11" (* "*") (identifier "piVar11")) (= "=") (binary_expression "iVar30 + -1" (identifier "iVar30") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 1" (identifier "piVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar30 == 0)" (( "(") (binary_expression "iVar30 == 0" (identifier "iVar30") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00041a74:\n    param_6[local_58] = param_6[local_58] + -1;" (statement_identifier "LAB_00041a74") (: ":") (expression_statement "param_6[local_58] = param_6[local_58] + -1;" (assignment_expression "param_6[local_58] = param_6[local_58] + -1" (subscript_expression "param_6[local_58]" (identifier "param_6") ([ "[") (identifier "local_58") (] "]")) (= "=") (binary_expression "param_6[local_58] + -1" (subscript_expression "param_6[local_58]" (identifier "param_6") ([ "[") (identifier "local_58") (] "]")) (+ "+") (number_literal "-1"))) (; ";"))) (} "}")))) (labeled_statement "LAB_000412d8:\n  iVar27 = local_64 - local_60;" (statement_identifier "LAB_000412d8") (: ":") (expression_statement "iVar27 = local_64 - local_60;" (assignment_expression "iVar27 = local_64 - local_60" (identifier "iVar27") (= "=") (binary_expression "local_64 - local_60" (identifier "local_64") (- "-") (identifier "local_60"))) (; ";"))) (if_statement "if (iVar27 < 1) {\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }\n  else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }" (if "if") (parenthesized_expression "(iVar27 < 1)" (( "(") (binary_expression "iVar27 < 1" (identifier "iVar27") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n    if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);\n    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);\n    uVar25 = *puVar19;\n    piVar11 = (int *)(uVar25 - uVar4);\n    *puVar19 = (uint)piVar11;\n    if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }\n  }" ({ "{") (if_statement "if (param_2 != (int *)0x0) {\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }" (if "if") (parenthesized_expression "(param_2 != (int *)0x0)" (( "(") (binary_expression "param_2 != (int *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      iVar30 = (int)param_2 + -1;\n      iVar7 = *param_6;\n      piVar23 = param_1;\n      piVar11 = param_6;\n      if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }\n    }" ({ "{") (expression_statement "iVar30 = (int)param_2 + -1;" (assignment_expression "iVar30 = (int)param_2 + -1" (identifier "iVar30") (= "=") (binary_expression "(int)param_2 + -1" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar7 = *param_6;" (assignment_expression "iVar7 = *param_6" (identifier "iVar7") (= "=") (pointer_expression "*param_6" (* "*") (identifier "param_6"))) (; ";")) (expression_statement "piVar23 = param_1;" (assignment_expression "piVar23 = param_1" (identifier "piVar23") (= "=") (identifier "param_1")) (; ";")) (expression_statement "piVar11 = param_6;" (assignment_expression "piVar11 = param_6" (identifier "piVar11") (= "=") (identifier "param_6")) (; ";")) (if_statement "if (iVar30 == 0) {\n        *param_1 = iVar7;\n      }\n      else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }" (if "if") (parenthesized_expression "(iVar30 == 0)" (( "(") (binary_expression "iVar30 == 0" (identifier "iVar30") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        *param_1 = iVar7;\n      }" ({ "{") (expression_statement "*param_1 = iVar7;" (assignment_expression "*param_1 = iVar7" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "iVar7")) (; ";")) (} "}")) (else_clause "else {\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }" (else "else") (compound_statement "{\n        do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);\n        param_1[(int)param_2 + -1] = iVar7;\n      }" ({ "{") (do_statement "do {\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        } while (iVar30 != 0);" (do "do") (compound_statement "{\n          *piVar23 = iVar7;\n          iVar30 = iVar30 + -1;\n          iVar7 = piVar11[1];\n          piVar23 = piVar23 + 1;\n          piVar11 = piVar11 + 1;\n        }" ({ "{") (expression_statement "*piVar23 = iVar7;" (assignment_expression "*piVar23 = iVar7" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "iVar30 = iVar30 + -1;" (assignment_expression "iVar30 = iVar30 + -1" (identifier "iVar30") (= "=") (binary_expression "iVar30 + -1" (identifier "iVar30") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar7 = piVar11[1];" (assignment_expression "iVar7 = piVar11[1]" (identifier "iVar7") (= "=") (subscript_expression "piVar11[1]" (identifier "piVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 1" (identifier "piVar23") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar11 = piVar11 + 1;" (assignment_expression "piVar11 = piVar11 + 1" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 1" (identifier "piVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar30 != 0)" (( "(") (binary_expression "iVar30 != 0" (identifier "iVar30") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "param_1[(int)param_2 + -1] = iVar7;" (assignment_expression "param_1[(int)param_2 + -1] = iVar7" (subscript_expression "param_1[(int)param_2 + -1]" (identifier "param_1") ([ "[") (binary_expression "(int)param_2 + -1" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "-1")) (] "]")) (= "=") (identifier "iVar7")) (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27)" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_00097514)\n                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_00097514)" (( "(") (pointer_expression "*(code *)PTR___gmpn_sub_n_00097514" (* "*") (cast_expression "(code *)PTR___gmpn_sub_n_00097514" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sub_n_00097514"))) () ")")) (argument_list "(param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27)" (( "(") (identifier "param_1") (, ",") (identifier "param_1") (, ",") (binary_expression "param_6 + (int)param_2" (identifier "param_6") (+ "+") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (, ",") (binary_expression "(int)param_2 + iVar27" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (identifier "iVar27")) () ")")))) (; ";")) (expression_statement "puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);" (assignment_expression "puVar19 = (uint *)(param_1 + (int)param_2 + iVar27)" (identifier "puVar19") (= "=") (cast_expression "(uint *)(param_1 + (int)param_2 + iVar27)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + (int)param_2 + iVar27)" (( "(") (binary_expression "param_1 + (int)param_2 + iVar27" (binary_expression "param_1 + (int)param_2" (identifier "param_1") (+ "+") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (+ "+") (identifier "iVar27")) () ")")))) (; ";")) (expression_statement "uVar25 = *puVar19;" (assignment_expression "uVar25 = *puVar19" (identifier "uVar25") (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (; ";")) (expression_statement "piVar11 = (int *)(uVar25 - uVar4);" (assignment_expression "piVar11 = (int *)(uVar25 - uVar4)" (identifier "piVar11") (= "=") (cast_expression "(int *)(uVar25 - uVar4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar25 - uVar4)" (( "(") (binary_expression "uVar25 - uVar4" (identifier "uVar25") (- "-") (identifier "uVar4")) () ")")))) (; ";")) (expression_statement "*puVar19 = (uint)piVar11;" (assignment_expression "*puVar19 = (uint)piVar11" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (cast_expression "(uint)piVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar11"))) (; ";")) (if_statement "if (uVar25 < uVar4) {\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(uVar25 < uVar4)" (( "(") (binary_expression "uVar25 < uVar4" (identifier "uVar25") (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n      if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }\n    }" ({ "{") (if_statement "if (local_60 - local_64 < 2) {\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }\n      else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }" (if "if") (parenthesized_expression "(local_60 - local_64 < 2)" (( "(") (binary_expression "local_60 - local_64 < 2" (binary_expression "local_60 - local_64" (identifier "local_60") (- "-") (identifier "local_64")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_000413d8:\n        iVar27 = *param_1;\n        *param_1 = iVar27 + 1;\n        if (iVar27 + 1 == 0) goto LAB_000413ec;\n      }" ({ "{") (labeled_statement "LAB_000413d8:\n        iVar27 = *param_1;" (statement_identifier "LAB_000413d8") (: ":") (expression_statement "iVar27 = *param_1;" (assignment_expression "iVar27 = *param_1" (identifier "iVar27") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";"))) (expression_statement "*param_1 = iVar27 + 1;" (assignment_expression "*param_1 = iVar27 + 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar27 + 1 == 0) goto LAB_000413ec;" (if "if") (parenthesized_expression "(iVar27 + 1 == 0)" (( "(") (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000413ec;" (goto "goto") (statement_identifier "LAB_000413ec") (; ";"))) (} "}")) (else_clause "else {\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }" (else "else") (compound_statement "{\n        uVar4 = puVar19[1];\n        puVar19[1] = uVar4 - 1;\n        if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }\n      }" ({ "{") (expression_statement "uVar4 = puVar19[1];" (assignment_expression "uVar4 = puVar19[1]" (identifier "uVar4") (= "=") (subscript_expression "puVar19[1]" (identifier "puVar19") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar19[1] = uVar4 - 1;" (assignment_expression "puVar19[1] = uVar4 - 1" (subscript_expression "puVar19[1]" (identifier "puVar19") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar4 - 1" (identifier "uVar4") (- "-") (number_literal "1"))) (; ";")) (if_statement "if (uVar4 == 0) {\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar30 = 2;\n          puVar19 = puVar19 + 2;\n          do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);\n          goto LAB_000418b4;\n        }" ({ "{") (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" (identifier "iVar30") (= "=") (number_literal "2")) (; ";")) (expression_statement "puVar19 = puVar19 + 2;" (assignment_expression "puVar19 = puVar19 + 2" (identifier "puVar19") (= "=") (binary_expression "puVar19 + 2" (identifier "puVar19") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          } while (uVar4 == 0);" (do "do") (compound_statement "{\n            bVar1 = local_60 - local_64 == iVar30;\n            iVar30 = iVar30 + 1;\n            if (bVar1) goto LAB_000413d8;\n            uVar4 = *puVar19;\n            piVar11 = (int *)(uVar4 - 1);\n            *puVar19 = (uint)piVar11;\n            iVar27 = 0;\n            puVar19 = puVar19 + 1;\n          }" ({ "{") (expression_statement "bVar1 = local_60 - local_64 == iVar30;" (assignment_expression "bVar1 = local_60 - local_64 == iVar30" (identifier "bVar1") (= "=") (binary_expression "local_60 - local_64 == iVar30" (binary_expression "local_60 - local_64" (identifier "local_60") (- "-") (identifier "local_64")) (== "==") (identifier "iVar30"))) (; ";")) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" (identifier "iVar30") (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (bVar1) goto LAB_000413d8;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_000413d8;" (goto "goto") (statement_identifier "LAB_000413d8") (; ";"))) (expression_statement "uVar4 = *puVar19;" (assignment_expression "uVar4 = *puVar19" (identifier "uVar4") (= "=") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (; ";")) (expression_statement "piVar11 = (int *)(uVar4 - 1);" (assignment_expression "piVar11 = (int *)(uVar4 - 1)" (identifier "piVar11") (= "=") (cast_expression "(int *)(uVar4 - 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar4 - 1)" (( "(") (binary_expression "uVar4 - 1" (identifier "uVar4") (- "-") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar19 = (uint)piVar11;" (assignment_expression "*puVar19 = (uint)piVar11" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (cast_expression "(uint)piVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar11"))) (; ";")) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" (identifier "puVar19") (= "=") (binary_expression "puVar19 + 1" (identifier "puVar19") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (; ";")) (goto_statement "goto LAB_000418b4;" (goto "goto") (statement_identifier "LAB_000418b4") (; ";")) (} "}"))) (} "}")))) (} "}"))) (} "}")) (else_clause "else {\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }" (else "else") (compound_statement "{\n    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);\n    puVar18 = (uint *)(param_6 + iVar27);\n    puVar19 = (uint *)(param_1 + iVar27);\n    iVar27 = (int)param_2 - iVar27;\n    uVar25 = *puVar18;\n    *puVar19 = uVar4 + uVar25;\n    if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }\n    piVar11 = param_1;\n    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);\n    uVar25 = param_1[(int)param_2];\n    param_1[(int)param_2] = uVar25 - uVar4;\n    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;\n    iVar27 = *param_1;\n    *param_1 = iVar27 + 1;\n    if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }\nLAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }\n    iVar27 = param_1[1];\n    param_1[1] = iVar27 + 1;\n    if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }\n  }" ({ "{") (expression_statement "uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27)" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27)" (parenthesized_expression "(*(code *)PTR___gmpn_add_n_00097334)" (( "(") (pointer_expression "*(code *)PTR___gmpn_add_n_00097334" (* "*") (cast_expression "(code *)PTR___gmpn_add_n_00097334" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_add_n_00097334"))) () ")")) (argument_list "(param_1,param_6,param_6 + (int)param_2 * 2,iVar27)" (( "(") (identifier "param_1") (, ",") (identifier "param_6") (, ",") (binary_expression "param_6 + (int)param_2 * 2" (identifier "param_6") (+ "+") (binary_expression "(int)param_2 * 2" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (* "*") (number_literal "2"))) (, ",") (identifier "iVar27") () ")")))) (; ";")) (expression_statement "puVar18 = (uint *)(param_6 + iVar27);" (assignment_expression "puVar18 = (uint *)(param_6 + iVar27)" (identifier "puVar18") (= "=") (cast_expression "(uint *)(param_6 + iVar27)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_6 + iVar27)" (( "(") (binary_expression "param_6 + iVar27" (identifier "param_6") (+ "+") (identifier "iVar27")) () ")")))) (; ";")) (expression_statement "puVar19 = (uint *)(param_1 + iVar27);" (assignment_expression "puVar19 = (uint *)(param_1 + iVar27)" (identifier "puVar19") (= "=") (cast_expression "(uint *)(param_1 + iVar27)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + iVar27)" (( "(") (binary_expression "param_1 + iVar27" (identifier "param_1") (+ "+") (identifier "iVar27")) () ")")))) (; ";")) (expression_statement "iVar27 = (int)param_2 - iVar27;" (assignment_expression "iVar27 = (int)param_2 - iVar27" (identifier "iVar27") (= "=") (binary_expression "(int)param_2 - iVar27" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (- "-") (identifier "iVar27"))) (; ";")) (expression_statement "uVar25 = *puVar18;" (assignment_expression "uVar25 = *puVar18" (identifier "uVar25") (= "=") (pointer_expression "*puVar18" (* "*") (identifier "puVar18"))) (; ";")) (expression_statement "*puVar19 = uVar4 + uVar25;" (assignment_expression "*puVar19 = uVar4 + uVar25" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (binary_expression "uVar4 + uVar25" (identifier "uVar4") (+ "+") (identifier "uVar25"))) (; ";")) (if_statement "if (uVar4 + uVar25 < uVar4) {\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }\n    else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }" (if "if") (parenthesized_expression "(uVar4 + uVar25 < uVar4)" (( "(") (binary_expression "uVar4 + uVar25 < uVar4" (binary_expression "uVar4 + uVar25" (identifier "uVar4") (+ "+") (identifier "uVar25")) (< "<") (identifier "uVar4")) () ")")) (compound_statement "{\n      if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }\n    }" ({ "{") (if_statement "if (iVar27 < 2) {\nLAB_00041994:\n        iVar27 = 1;\n      }\n      else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }" (if "if") (parenthesized_expression "(iVar27 < 2)" (( "(") (binary_expression "iVar27 < 2" (identifier "iVar27") (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00041994:\n        iVar27 = 1;\n      }" ({ "{") (labeled_statement "LAB_00041994:\n        iVar27 = 1;" (statement_identifier "LAB_00041994") (: ":") (expression_statement "iVar27 = 1;" (assignment_expression "iVar27 = 1" (identifier "iVar27") (= "=") (number_literal "1")) (; ";"))) (} "}")) (else_clause "else {\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }" (else "else") (compound_statement "{\n        uVar4 = puVar18[1];\n        puVar19[1] = uVar4 + 1;\n        if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }\n        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;\n        puVar22 = puVar18 + iVar30;\n        puVar19 = puVar19 + iVar30;\n        do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);\n        iVar27 = 0;\n      }" ({ "{") (expression_statement "uVar4 = puVar18[1];" (assignment_expression "uVar4 = puVar18[1]" (identifier "uVar4") (= "=") (subscript_expression "puVar18[1]" (identifier "puVar18") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar19[1] = uVar4 + 1;" (assignment_expression "puVar19[1] = uVar4 + 1" (subscript_expression "puVar19[1]" (identifier "puVar19") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar4 + 1 == 0) {\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }\n        else {\n          iVar30 = 2;\n        }" (if "if") (parenthesized_expression "(uVar4 + 1 == 0)" (( "(") (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          puVar20 = puVar18 + 2;\n          iVar30 = 2;\n          puVar22 = puVar19 + 2;\n          do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);\n        }" ({ "{") (expression_statement "puVar20 = puVar18 + 2;" (assignment_expression "puVar20 = puVar18 + 2" (identifier "puVar20") (= "=") (binary_expression "puVar18 + 2" (identifier "puVar18") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" (identifier "iVar30") (= "=") (number_literal "2")) (; ";")) (expression_statement "puVar22 = puVar19 + 2;" (assignment_expression "puVar22 = puVar19 + 2" (identifier "puVar22") (= "=") (binary_expression "puVar19 + 2" (identifier "puVar19") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          } while (uVar4 + 1 == 0);" (do "do") (compound_statement "{\n            if (iVar27 == iVar30) goto LAB_00041994;\n            uVar4 = *puVar20;\n            iVar30 = iVar30 + 1;\n            puVar20 = puVar20 + 1;\n            *puVar22 = uVar4 + 1;\n            puVar22 = puVar22 + 1;\n          }" ({ "{") (if_statement "if (iVar27 == iVar30) goto LAB_00041994;" (if "if") (parenthesized_expression "(iVar27 == iVar30)" (( "(") (binary_expression "iVar27 == iVar30" (identifier "iVar27") (== "==") (identifier "iVar30")) () ")")) (goto_statement "goto LAB_00041994;" (goto "goto") (statement_identifier "LAB_00041994") (; ";"))) (expression_statement "uVar4 = *puVar20;" (assignment_expression "uVar4 = *puVar20" (identifier "uVar4") (= "=") (pointer_expression "*puVar20" (* "*") (identifier "puVar20"))) (; ";")) (expression_statement "iVar30 = iVar30 + 1;" (assignment_expression "iVar30 = iVar30 + 1" (identifier "iVar30") (= "=") (binary_expression "iVar30 + 1" (identifier "iVar30") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar20 = puVar20 + 1;" (assignment_expression "puVar20 = puVar20 + 1" (identifier "puVar20") (= "=") (binary_expression "puVar20 + 1" (identifier "puVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar22 = uVar4 + 1;" (assignment_expression "*puVar22 = uVar4 + 1" (pointer_expression "*puVar22" (* "*") (identifier "puVar22")) (= "=") (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar22 + 1" (identifier "puVar22") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 + 1 == 0)" (( "(") (binary_expression "uVar4 + 1 == 0" (binary_expression "uVar4 + 1" (identifier "uVar4") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n          iVar30 = 2;\n        }" (else "else") (compound_statement "{\n          iVar30 = 2;\n        }" ({ "{") (expression_statement "iVar30 = 2;" (assignment_expression "iVar30 = 2" (identifier "iVar30") (= "=") (number_literal "2")) (; ";")) (} "}")))) (if_statement "if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;" (if "if") (parenthesized_expression "((puVar19 == puVar18) || (iVar27 <= iVar30))" (( "(") (binary_expression "(puVar19 == puVar18) || (iVar27 <= iVar30)" (parenthesized_expression "(puVar19 == puVar18)" (( "(") (binary_expression "puVar19 == puVar18" (identifier "puVar19") (== "==") (identifier "puVar18")) () ")")) (|| "||") (parenthesized_expression "(iVar27 <= iVar30)" (( "(") (binary_expression "iVar27 <= iVar30" (identifier "iVar27") (<= "<=") (identifier "iVar30")) () ")"))) () ")")) (goto_statement "goto LAB_00041acc;" (goto "goto") (statement_identifier "LAB_00041acc") (; ";"))) (expression_statement "puVar22 = puVar18 + iVar30;" (assignment_expression "puVar22 = puVar18 + iVar30" (identifier "puVar22") (= "=") (binary_expression "puVar18 + iVar30" (identifier "puVar18") (+ "+") (identifier "iVar30"))) (; ";")) (expression_statement "puVar19 = puVar19 + iVar30;" (assignment_expression "puVar19 = puVar19 + iVar30" (identifier "puVar19") (= "=") (binary_expression "puVar19 + iVar30" (identifier "puVar19") (+ "+") (identifier "iVar30"))) (; ";")) (do_statement "do {\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        } while (puVar22 != puVar18 + iVar27);" (do "do") (compound_statement "{\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n          puVar19 = puVar19 + 1;\n        }" ({ "{") (expression_statement "uVar4 = *puVar22;" (assignment_expression "uVar4 = *puVar22" (identifier "uVar4") (= "=") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))) (; ";")) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar22 + 1" (identifier "puVar22") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar19 = uVar4;" (assignment_expression "*puVar19 = uVar4" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (identifier "uVar4")) (; ";")) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" (identifier "puVar19") (= "=") (binary_expression "puVar19 + 1" (identifier "puVar19") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar22 != puVar18 + iVar27)" (( "(") (binary_expression "puVar22 != puVar18 + iVar27" (identifier "puVar22") (!= "!=") (binary_expression "puVar18 + iVar27" (identifier "puVar18") (+ "+") (identifier "iVar27"))) () ")")) (; ";")) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }" (else "else") (compound_statement "{\n      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }\nLAB_00041acc:\n      iVar27 = 0;\n    }" ({ "{") (if_statement "if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }" (if "if") (parenthesized_expression "((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27))" (( "(") (binary_expression "(puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)" (parenthesized_expression "(puVar19 != puVar18)" (( "(") (binary_expression "puVar19 != puVar18" (identifier "puVar19") (!= "!=") (identifier "puVar18")) () ")")) (&& "&&") (parenthesized_expression "(puVar22 = puVar18 + 1, 1 < iVar27)" (( "(") (comma_expression "puVar22 = puVar18 + 1, 1 < iVar27" (assignment_expression "puVar22 = puVar18 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar18 + 1" (identifier "puVar18") (+ "+") (number_literal "1"))) (, ",") (binary_expression "1 < iVar27" (number_literal "1") (< "<") (identifier "iVar27"))) () ")"))) () ")")) (compound_statement "{\n        do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);\n      }" ({ "{") (do_statement "do {\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        } while (puVar18 + iVar27 != puVar22);" (do "do") (compound_statement "{\n          puVar19 = puVar19 + 1;\n          uVar4 = *puVar22;\n          puVar22 = puVar22 + 1;\n          *puVar19 = uVar4;\n        }" ({ "{") (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" (identifier "puVar19") (= "=") (binary_expression "puVar19 + 1" (identifier "puVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar4 = *puVar22;" (assignment_expression "uVar4 = *puVar22" (identifier "uVar4") (= "=") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))) (; ";")) (expression_statement "puVar22 = puVar22 + 1;" (assignment_expression "puVar22 = puVar22 + 1" (identifier "puVar22") (= "=") (binary_expression "puVar22 + 1" (identifier "puVar22") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*puVar19 = uVar4;" (assignment_expression "*puVar19 = uVar4" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (identifier "uVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar18 + iVar27 != puVar22)" (( "(") (binary_expression "puVar18 + iVar27 != puVar22" (binary_expression "puVar18 + iVar27" (identifier "puVar18") (+ "+") (identifier "iVar27")) (!= "!=") (identifier "puVar22")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00041acc:\n      iVar27 = 0;" (statement_identifier "LAB_00041acc") (: ":") (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";"))) (} "}")))) (expression_statement "piVar11 = param_1;" (assignment_expression "piVar11 = param_1" (identifier "piVar11") (= "=") (identifier "param_1")) (; ";")) (expression_statement "uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);" (assignment_expression "uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2)" (identifier "uVar4") (= "=") (call_expression "(*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2)" (parenthesized_expression "(*(code *)PTR___gmpn_sub_n_00097514)" (( "(") (pointer_expression "*(code *)PTR___gmpn_sub_n_00097514" (* "*") (cast_expression "(code *)PTR___gmpn_sub_n_00097514" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___gmpn_sub_n_00097514"))) () ")")) (argument_list "(param_1,param_1,param_6 + (int)param_2,param_2)" (( "(") (identifier "param_1") (, ",") (identifier "param_1") (, ",") (binary_expression "param_6 + (int)param_2" (identifier "param_6") (+ "+") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) (, ",") (identifier "param_2") () ")")))) (; ";")) (expression_statement "uVar25 = param_1[(int)param_2];" (assignment_expression "uVar25 = param_1[(int)param_2]" (identifier "uVar25") (= "=") (subscript_expression "param_1[(int)param_2]" (identifier "param_1") ([ "[") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (] "]"))) (; ";")) (expression_statement "param_1[(int)param_2] = uVar25 - uVar4;" (assignment_expression "param_1[(int)param_2] = uVar25 - uVar4" (subscript_expression "param_1[(int)param_2]" (identifier "param_1") ([ "[") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (] "]")) (= "=") (binary_expression "uVar25 - uVar4" (identifier "uVar25") (- "-") (identifier "uVar4"))) (; ";")) (if_statement "if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;" (if "if") (parenthesized_expression "((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1))" (( "(") (binary_expression "(uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)" (parenthesized_expression "(uVar4 <= uVar25)" (( "(") (binary_expression "uVar4 <= uVar25" (identifier "uVar4") (<= "<=") (identifier "uVar25")) () ")")) (|| "||") (parenthesized_expression "(iVar27 = iVar27 + -1, iVar27 != -1)" (( "(") (comma_expression "iVar27 = iVar27 + -1, iVar27 != -1" (assignment_expression "iVar27 = iVar27 + -1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + -1" (identifier "iVar27") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "iVar27 != -1" (identifier "iVar27") (!= "!=") (number_literal "-1"))) () ")"))) () ")")) (goto_statement "goto LAB_000418b4;" (goto "goto") (statement_identifier "LAB_000418b4") (; ";"))) (expression_statement "iVar27 = *param_1;" (assignment_expression "iVar27 = *param_1" (identifier "iVar27") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*param_1 = iVar27 + 1;" (assignment_expression "*param_1 = iVar27 + 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar27 + 1 != 0) {\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }" (if "if") (parenthesized_expression "(iVar27 + 1 != 0)" (( "(") (binary_expression "iVar27 + 1 != 0" (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar27 = 0;\n      goto LAB_000418b4;\n    }" ({ "{") (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_000418b4;" (goto "goto") (statement_identifier "LAB_000418b4") (; ";")) (} "}"))) (labeled_statement "LAB_000413ec:\n    if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }" (statement_identifier "LAB_000413ec") (: ":") (if_statement "if ((int)param_2 < 2) {\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }" (if "if") (parenthesized_expression "((int)param_2 < 2)" (( "(") (binary_expression "(int)param_2 < 2" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (< "<") (number_literal "2")) () ")")) (compound_statement "{\nLAB_00041438:\n      iVar27 = 1;\n      goto LAB_000418b4;\n    }" ({ "{") (labeled_statement "LAB_00041438:\n      iVar27 = 1;" (statement_identifier "LAB_00041438") (: ":") (expression_statement "iVar27 = 1;" (assignment_expression "iVar27 = 1" (identifier "iVar27") (= "=") (number_literal "1")) (; ";"))) (goto_statement "goto LAB_000418b4;" (goto "goto") (statement_identifier "LAB_000418b4") (; ";")) (} "}")))) (expression_statement "iVar27 = param_1[1];" (assignment_expression "iVar27 = param_1[1]" (identifier "iVar27") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_1[1] = iVar27 + 1;" (assignment_expression "param_1[1] = iVar27 + 1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar27 + 1 == 0) {\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }" (if "if") (parenthesized_expression "(iVar27 + 1 == 0)" (( "(") (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      piVar26 = (int *)0x2;\n      piVar23 = param_1 + 2;\n      do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);\n    }" ({ "{") (expression_statement "piVar26 = (int *)0x2;" (assignment_expression "piVar26 = (int *)0x2" (identifier "piVar26") (= "=") (cast_expression "(int *)0x2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x2"))) (; ";")) (expression_statement "piVar23 = param_1 + 2;" (assignment_expression "piVar23 = param_1 + 2" (identifier "piVar23") (= "=") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      } while (iVar27 + 1 == 0);" (do "do") (compound_statement "{\n        bVar1 = param_2 == piVar26;\n        piVar26 = (int *)((int)piVar26 + 1);\n        piVar11 = param_2;\n        if (bVar1) goto LAB_00041438;\n        iVar27 = *piVar23;\n        *piVar23 = iVar27 + 1;\n        piVar23 = piVar23 + 1;\n      }" ({ "{") (expression_statement "bVar1 = param_2 == piVar26;" (assignment_expression "bVar1 = param_2 == piVar26" (identifier "bVar1") (= "=") (binary_expression "param_2 == piVar26" (identifier "param_2") (== "==") (identifier "piVar26"))) (; ";")) (expression_statement "piVar26 = (int *)((int)piVar26 + 1);" (assignment_expression "piVar26 = (int *)((int)piVar26 + 1)" (identifier "piVar26") (= "=") (cast_expression "(int *)((int)piVar26 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar26 + 1)" (( "(") (binary_expression "(int)piVar26 + 1" (cast_expression "(int)piVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar26")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "piVar11 = param_2;" (assignment_expression "piVar11 = param_2" (identifier "piVar11") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (bVar1) goto LAB_00041438;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_00041438;" (goto "goto") (statement_identifier "LAB_00041438") (; ";"))) (expression_statement "iVar27 = *piVar23;" (assignment_expression "iVar27 = *piVar23" (identifier "iVar27") (= "=") (pointer_expression "*piVar23" (* "*") (identifier "piVar23"))) (; ";")) (expression_statement "*piVar23 = iVar27 + 1;" (assignment_expression "*piVar23 = iVar27 + 1" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 1" (identifier "piVar23") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar27 + 1 == 0)" (( "(") (binary_expression "iVar27 + 1 == 0" (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000418b4:\n  if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }" (statement_identifier "LAB_000418b4") (: ":") (if_statement "if (local_2c != *(int *)puVar3) {\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }" (if "if") (parenthesized_expression "(local_2c != *(int *)puVar3)" (( "(") (binary_expression "local_2c != *(int *)puVar3" (identifier "local_2c") (!= "!=") (pointer_expression "*(int *)puVar3" (* "*") (cast_expression "(int *)puVar3" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar3")))) () ")")) (compound_statement "{\n    (*(code *)PTR___stack_chk_fail_000974d0)();\n    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);\n  }" ({ "{") (expression_statement "(*(code *)PTR___stack_chk_fail_000974d0)();" (call_expression "(*(code *)PTR___stack_chk_fail_000974d0)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000974d0)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000974d0" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000974d0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000974d0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);" (return "return") (binary_expression "(local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f)" (binary_expression "(local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1" (parenthesized_expression "(local_2c + -1 >> ((uint)piVar11 & 0x1f))" (( "(") (binary_expression "local_2c + -1 >> ((uint)piVar11 & 0x1f)" (binary_expression "local_2c + -1" (identifier "local_2c") (+ "+") (number_literal "-1")) (>> ">>") (parenthesized_expression "((uint)piVar11 & 0x1f)" (( "(") (binary_expression "(uint)piVar11 & 0x1f" (cast_expression "(uint)piVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar11")) (& "&") (number_literal "0x1f")) () ")"))) () ")")) (+ "+") (number_literal "1")) (<< "<<") (parenthesized_expression "((uint)piVar11 & 0x1f)" (( "(") (binary_expression "(uint)piVar11 & 0x1f" (cast_expression "(uint)piVar11" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "piVar11")) (& "&") (number_literal "0x1f")) () ")"))) (; ";")) (} "}")))) (return_statement "return iVar27;" (return "return") (identifier "iVar27") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator 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: (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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator 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: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (number_literal) (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) (identifier) (identifier) (identifier) (identifier) (number_literal) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) 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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))))) (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: (pointer_expression argument: (identifier))) right: (comma_expression left: (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (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: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (goto_statement label: (statement_identifier))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (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: (pointer_expression argument: (identifier))) right: (comma_expression left: (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier))) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))))))) right: (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 (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (comma_expression left: (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (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)))) (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: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (goto_statement label: (statement_identifier)))) (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: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (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: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (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: (parenthesized_expression (binary_expression left: (number_literal) right: (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: (parenthesized_expression (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: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (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: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (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: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (identifier))))) (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: (subscript_expression argument: (identifier) index: (number_literal))) right: (comma_expression left: (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (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: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (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: (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 (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (binary_expression left: (identifier) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (identifier))) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (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: (unary_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (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: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (break_statement)) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (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: (unary_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) 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: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (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: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (comma_expression left: (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))) right: (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (identifier)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))))))))))))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (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))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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 (call_expression function: (identifier) arguments: (argument_list (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: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (identifier)) right: (number_literal)) right: (identifier)))) right: (identifier))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (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)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (identifier)) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (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: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (identifier)) (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (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: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (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: (pointer_expression argument: (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: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (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: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (subscript_expression argument: (identifier) index: (identifier)) (identifier) (identifier) (identifier) (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (identifier) (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: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (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 (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (number_literal) (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (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: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (number_literal)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (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 (do_statement body: (compound_statement (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: (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: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) 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: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) 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: (identifier))) right: (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: (identifier) right: (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: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_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: (identifier))) right: (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)))))) 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: (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: (identifier)) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (return_statement (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))))) (return_statement (identifier)))))

int MASKED(int *param_1,int *param_2,uint param_3,int *param_4,int *param_5,int *param_6,
                uint param_7,int param_8,int param_9,int param_10,undefined4 *param_11,int param_12)

{
  bool bVar1;
  undefined *puVar2;
  undefined *puVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  undefined4 uVar8;
  undefined4 uVar9;
  undefined4 uVar10;
  int *piVar11;
  int iVar12;
  int iVar13;
  code *pcVar14;
  code *pcVar15;
  undefined4 uVar16;
  undefined4 *puVar17;
  uint *puVar18;
  uint *puVar19;
  uint *puVar20;
  int iVar21;
  uint *puVar22;
  int *piVar23;
  int iVar24;
  uint uVar25;
  int *piVar26;
  int iVar27;
  int *piVar28;
  uint uVar29;
  int iVar30;
  int *piVar31;
  int *piVar32;
  int iVar33;
  int iVar34;
  int *local_74;
  int local_68;
  int local_64;
  int local_60;
  int local_58;
  int local_30;
  int local_2c;
  
  puVar3 = PTR___stack_chk_guard_00097540;
  iVar30 = 1 << (param_3 & 0x1f);
  param_10 = param_10 + param_3 * 4;
  local_2c = *(int *)PTR___stack_chk_guard_00097540;
  iVar27 = param_9 << 1;
  FUN_00040208(param_4,iVar30,param_10,iVar27,param_7,1,param_11);
  if (param_12 == 0) {
    FUN_00040208(param_5,iVar30,param_10,iVar27,param_7,1,param_11);
    if (param_4 == param_5) {
      param_12 = 1;
      goto LAB_00040bb8;
    }
    iVar7 = 0x270;
    local_74 = param_5;
    if (0x26f < (int)param_7) goto LAB_00040bc8;
LAB_0004149c:
    local_30 = 0;
    puVar19 = (uint *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,param_7 * 8);
    puVar18 = puVar19 + param_7;
    if (0 < iVar30) {
      iVar5 = 0;
      piVar11 = (int *)*param_4;
      iVar7 = *local_74;
      if (param_4 == local_74) goto LAB_000415dc;
LAB_000414fc:
      puVar22 = (uint *)(piVar11 + param_7);
      (*(code *)PTR___gmpn_mul_n_00097364)(puVar19,iVar7,piVar11,param_7);
      uVar4 = *puVar22;
      piVar23 = (int *)(iVar7 + param_7 * 4);
      if (uVar4 != 0) goto LAB_0004160c;
      do {
        pcVar14 = (code *)PTR___gmpn_sub_n_00097514;
        if (*piVar23 != 0) goto LAB_00041640;
LAB_00041544:
        iVar7 = (*pcVar14)(piVar11,puVar19,puVar18,param_7);
        if ((iVar7 == 0) || (iVar7 = *piVar11, *piVar11 = iVar7 + 1, iVar7 + 1 != 0)) {
LAB_0004199c:
          uVar4 = 0;
        }
        else {
          uVar4 = 1;
          if (1 < (int)param_7) {
            iVar7 = piVar11[1];
            piVar11[1] = iVar7 + 1;
            if (iVar7 + 1 == 0) {
              puVar20 = (uint *)(piVar11 + 2);
              do {
                if (puVar20 == puVar22) {
                  uVar4 = 1;
                  goto LAB_000415b0;
                }
                uVar4 = *puVar20;
                *puVar20 = uVar4 + 1;
                puVar20 = puVar20 + 1;
              } while (uVar4 + 1 == 0);
            }
            goto LAB_0004199c;
          }
        }
LAB_000415b0:
        *puVar22 = uVar4;
        iVar5 = iVar5 + 1;
        if (iVar30 == iVar5) goto LAB_00040f88;
        piVar11 = (int *)param_4[iVar5];
        iVar7 = local_74[iVar5];
        if (param_4 != local_74) goto LAB_000414fc;
LAB_000415dc:
        puVar22 = (uint *)(piVar11 + param_7);
        (*(code *)PTR___gmpn_sqr_00097394)(puVar19,piVar11,param_7);
        uVar4 = *puVar22;
        piVar23 = (int *)(iVar7 + param_7 * 4);
      } while (uVar4 == 0);
LAB_0004160c:
      uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,iVar7,param_7);
      if (*piVar23 != 0) {
LAB_00041640:
        iVar7 = (*(code *)PTR___gmpn_add_n_00097334)(puVar18,puVar18,piVar11,param_7);
        uVar4 = iVar7 + uVar4 + *puVar22;
      }
      pcVar14 = (code *)PTR___gmpn_sub_n_00097514;
      if ((((uVar4 != 0) && (uVar25 = *puVar19, *puVar19 = uVar4 + uVar25, uVar4 + uVar25 < uVar4))
          && (1 < (int)(param_7 << 1))) &&
         (uVar4 = puVar19[1], puVar19[1] = uVar4 + 1, uVar4 + 1 == 0)) {
        puVar20 = puVar19 + 2;
        do {
          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;
          if (puVar20 == puVar19 + param_7 * 2) break;
          uVar4 = *puVar20;
          *puVar20 = uVar4 + 1;
          puVar20 = puVar20 + 1;
          pcVar14 = (code *)PTR___gmpn_sub_n_00097514;
        } while (uVar4 + 1 == 0);
      }
      goto LAB_00041544;
    }
LAB_00040f88:
    if (local_30 != 0) {
      (*(code *)PTR___gmp_tmp_reentrant_free_00097614)();
    }
    iVar7 = param_7 + 1;
    piVar23 = param_11 + iVar7;
    FUN_00040648(param_4,iVar30,iVar27,param_7,param_11);
    puVar2 = PTR_LAB_00097078;
    *param_5 = (int)piVar23;
    FUN_0003f5dc(piVar23,*param_4,param_7 * 0x40 - param_3,param_7);
    piVar26 = piVar23 + param_7;
    piVar11 = piVar23;
    if (*piVar26 != 0) {
      do {
        iVar27 = *piVar11;
        *piVar11 = iVar27 + -1;
        piVar11 = piVar11 + 1;
      } while (iVar27 == 0);
      if (*piVar26 == 0) {
        uVar4 = param_7;
        if (param_7 != 0) {
          do {
            uVar4 = uVar4 - 1;
            *piVar23 = 0;
            piVar23 = piVar23 + 1;
          } while (uVar4 != 0);
        }
        *piVar26 = 1;
      }
      else {
        *piVar26 = 0;
      }
    }
    if (1 < iVar30) {
      piVar23 = param_4 + 1;
      iVar27 = param_7 * 0x40 - ((iVar30 + -1) * param_9 + param_3);
      piVar11 = param_5;
      do {
        piVar11 = piVar11 + 1;
        piVar31 = (int *)piVar23[-1];
        *piVar11 = (int)piVar31;
        (*(code *)(puVar2 + -0xa24))(piVar31,*piVar23,iVar27,param_7);
        piVar32 = piVar31 + param_7;
        piVar26 = piVar31;
        if (*piVar32 != 0) {
          do {
            iVar5 = *piVar26;
            *piVar26 = iVar5 + -1;
            piVar26 = piVar26 + 1;
          } while (iVar5 == 0);
          if (*piVar32 == 0) {
            uVar4 = param_7;
            if (param_7 != 0) {
              do {
                uVar4 = uVar4 - 1;
                *piVar31 = 0;
                piVar31 = piVar31 + 1;
              } while (uVar4 != 0);
            }
            *piVar32 = 1;
          }
          else {
            *piVar32 = 0;
          }
        }
        piVar23 = piVar23 + 1;
        iVar27 = iVar27 + param_9;
      } while (piVar23 != (int *)((int)param_4 + (4 << (param_3 & 0x1f))));
    }
    local_74 = (int *)(iVar30 - 1);
    puVar17 = param_11;
    iVar27 = iVar7;
    if (param_7 != 0xffffffff) {
      do {
        iVar27 = iVar27 + -1;
        *puVar17 = 0;
        puVar17 = puVar17 + 1;
      } while (iVar27 != 0);
    }
    iVar5 = (int)local_74 * param_8;
    local_60 = (int)param_2 * 2;
    local_58 = param_7 + iVar5;
    local_64 = local_58 + 1;
    piVar11 = param_6;
    iVar27 = local_64;
    if (local_64 == 0) {
      iVar24 = -1;
    }
    else {
      do {
        iVar27 = iVar27 + -1;
        *piVar11 = 0;
        piVar11 = piVar11 + 1;
        iVar24 = local_58;
      } while (iVar27 != 0);
    }
    if (-1 < (int)local_74) {
      local_68 = 0;
      piVar23 = param_6 + iVar7 + iVar5 + 1;
      piVar26 = param_6 + iVar24;
      piVar31 = param_6 + iVar5;
      piVar11 = local_74;
      uVar4 = param_7;
LAB_000411b8:
      do {
        uVar25 = (uint)piVar11;
        iVar27 = (*(code *)PTR___gmpn_add_n_00097334)
                           (piVar31,piVar31,param_5[iVar30 - uVar25 & (uint)local_74],iVar7);
        if ((iVar27 != 0) && (iVar27 = piVar23[-1], piVar23[-1] = iVar27 + 1, iVar27 + 1 == 0)) {
          if ((int)(uVar4 - param_7) < 2) {
LAB_00041254:
            local_68 = local_68 + 1;
          }
          else {
            iVar27 = *piVar23;
            *piVar23 = iVar27 + 1;
            if (iVar27 + 1 == 0) {
              iVar27 = 2;
              piVar11 = piVar23;
              do {
                piVar11 = piVar11 + 1;
                if (uVar4 - param_7 == iVar27) goto LAB_00041254;
                iVar33 = *piVar11;
                iVar27 = iVar27 + 1;
                *piVar11 = iVar33 + 1;
              } while (iVar33 + 1 == 0);
            }
          }
        }
        iVar27 = param_5[iVar30 - uVar25 & (uint)local_74];
        param_11[param_8 * 2] = uVar25 + 1;
        puVar18 = (uint *)(iVar27 + param_7 * 4);
        iVar27 = iVar7;
        puVar19 = param_11 + param_7;
        do {
          iVar27 = iVar27 + -1;
          if (iVar27 < 0) goto LAB_000412a0;
          uVar6 = *puVar18;
          uVar29 = *puVar19;
          puVar18 = puVar18 + -1;
          puVar19 = puVar19 + -1;
        } while (uVar6 == uVar29);
        if (uVar29 < uVar6) {
          iVar27 = *piVar31;
          *piVar31 = iVar27 + -1;
          if (iVar27 == 0) {
            if ((int)(uVar4 + 1) < 2) {
LAB_000417cc:
              local_68 = local_68 + -1;
            }
            else {
              iVar27 = piVar31[1];
              piVar31[1] = iVar27 + -1;
              if (iVar27 == 0) {
                iVar27 = 2;
                piVar11 = piVar31 + 2;
                do {
                  bVar1 = uVar4 + 1 == iVar27;
                  iVar27 = iVar27 + 1;
                  if (bVar1) goto LAB_000417cc;
                  iVar33 = *piVar11;
                  *piVar11 = iVar33 + -1;
                  piVar11 = piVar11 + 1;
                } while (iVar33 == 0);
              }
            }
          }
          iVar27 = *piVar26;
          *piVar26 = iVar27 + -1;
          if (iVar27 == 0) {
            iVar27 = ((iVar5 + 1) - iVar24) + uVar4;
            if (iVar27 < 2) {
LAB_00041838:
              piVar31 = piVar31 + -param_8;
              piVar23 = piVar23 + -param_8;
              local_68 = local_68 + -1;
              uVar4 = uVar4 + param_8;
              piVar26 = piVar26 + -param_8;
              piVar11 = (int *)(uVar25 - 1);
              if (uVar25 - 1 == 0xffffffff) break;
              goto LAB_000411b8;
            }
            iVar33 = piVar26[1];
            piVar26[1] = iVar33 + -1;
            if (iVar33 == 0) {
              iVar33 = 2;
              piVar11 = piVar26 + 2;
              do {
                if (iVar33 == iVar27) goto LAB_00041838;
                iVar34 = *piVar11;
                iVar33 = iVar33 + 1;
                *piVar11 = iVar34 + -1;
                piVar11 = piVar11 + 1;
              } while (iVar34 == 0);
            }
          }
        }
LAB_000412a0:
        piVar31 = piVar31 + -param_8;
        piVar23 = piVar23 + -param_8;
        uVar4 = uVar4 + param_8;
        piVar26 = piVar26 + -param_8;
        piVar11 = (int *)(uVar25 - 1);
      } while (uVar25 - 1 != 0xffffffff);
      if (local_68 == uVar25 - 1) {
        iVar30 = local_64 - (int)param_2;
        piVar11 = param_6 + iVar30;
        iVar27 = *piVar11;
        *piVar11 = iVar27 + 1;
        if (iVar27 + 1 == 0) {
          iVar27 = iVar30 * 4 + -4;
          if ((int)param_2 < 2) goto LAB_00041ccc;
          iVar27 = piVar11[1];
          piVar11[1] = iVar27 + 1;
          if (iVar27 + 1 == 0) {
            piVar23 = (int *)0x2;
            piVar11 = piVar11 + 2;
            do {
              bVar1 = param_2 == piVar23;
              piVar23 = (int *)((int)piVar23 + 1);
              if (bVar1) {
                piVar11 = param_6 + iVar30 + -1;
                iVar27 = *piVar11;
                *piVar11 = iVar27 + -1;
                if (iVar27 != 0) goto LAB_00041a74;
                iVar27 = piVar11[1];
                goto LAB_00041a38;
              }
              iVar27 = *piVar11;
              *piVar11 = iVar27 + 1;
              piVar11 = piVar11 + 1;
            } while (iVar27 + 1 == 0);
          }
        }
      }
      else if (local_68 == 1) {
        if (local_64 < local_60) {
          piVar11 = param_6 + (local_64 - (int)param_2);
          iVar27 = *piVar11;
          *piVar11 = iVar27 + -1;
          if (((iVar27 == 0) && (1 < (int)param_2)) &&
             (iVar27 = piVar11[1], piVar11[1] = iVar27 + -1, iVar27 == 0)) {
            piVar23 = (int *)0x2;
            piVar11 = piVar11 + 2;
            do {
              bVar1 = param_2 == piVar23;
              piVar23 = (int *)((int)piVar23 + 1);
              if (bVar1) break;
              iVar27 = *piVar11;
              *piVar11 = iVar27 + -1;
              piVar11 = piVar11 + 1;
            } while (iVar27 == 0);
          }
        }
        else {
          piVar11 = param_6 + local_64 + (int)param_2 * -2;
          while( true ) {
            iVar27 = *piVar11;
            do {
              *piVar11 = iVar27 + 1;
              if (iVar27 + 1 != 0) goto LAB_000412d8;
              iVar27 = 0;
            } while (local_60 < 2);
            iVar27 = piVar11[1];
            piVar11[1] = iVar27 + 1;
            if (iVar27 + 1 != 0) break;
            iVar27 = 2;
            piVar23 = piVar11 + 2;
            while (bVar1 = iVar27 != local_60, iVar27 = iVar27 + 1, bVar1) {
              iVar30 = *piVar23;
              *piVar23 = iVar30 + 1;
              piVar23 = piVar23 + 1;
              if (iVar30 + 1 != 0) goto LAB_000412d8;
            }
          }
        }
      }
    }
  }
  else {
LAB_00040bb8:
    iVar7 = 0x230;
    local_74 = param_4;
    if ((int)param_7 < 0x230) goto LAB_0004149c;
LAB_00040bc8:
    local_30 = 0;
    uVar4 = (*(code *)PTR___gmpn_fft_best_k_00097320)(param_7,param_12);
    iVar5 = 1 << (uVar4 & 0x1f);
    if ((iVar5 - 1U & param_7) == 0) {
      iVar24 = iVar5;
      if (iVar5 < 0x20) {
        iVar24 = 0x20;
      }
      iVar33 = (int)param_7 >> (uVar4 & 0x1f);
      if (iVar24 == 0) {
        trap(7);
      }
      iVar24 = ((int)(((int)(param_7 << 5) >> (uVar4 & 0x1f)) * 2 + uVar4 + 2 + iVar24) / iVar24) *
               iVar24;
      iVar34 = iVar24;
      if (iVar24 < 0) {
        iVar34 = iVar24 + 0x1f;
      }
      uVar25 = iVar34 >> 5;
      if (iVar7 <= (int)uVar25) {
        while( true ) {
          uVar6 = (*(code *)PTR___gmpn_fft_best_k_00097320)(uVar25,param_12);
          iVar7 = 1 << (uVar6 & 0x1f);
          if ((iVar7 - 1U & uVar25) == 0) break;
          uVar25 = -iVar7 & (uVar25 + iVar7) - 1;
          iVar24 = uVar25 << 5;
        }
      }
      if ((int)param_7 <= (int)uVar25) goto LAB_00041cb0;
      iVar7 = 4 << (uVar4 & 0x1f);
      uVar8 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);
      iVar34 = uVar25 + 1;
      uVar9 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar7);
      iVar24 = iVar24 >> (uVar4 & 0x1f);
      iVar7 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)
                        (&local_30,(iVar34 * 2 << (uVar4 & 0x1f)) << 2);
      uVar10 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,iVar34 * 8);
      iVar34 = iVar7 + (iVar34 << (uVar4 & 0x1f)) * 4;
      piVar11 = (int *)(*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,(uVar4 + 1) * 4);
      iVar12 = (*(code *)PTR___gmp_tmp_reentrant_alloc_000972f0)(&local_30,8 << (uVar4 & 0x1f));
      if (-1 < (int)uVar4) {
        uVar6 = 0;
        piVar23 = piVar11;
        do {
          uVar29 = uVar6 & 0x1f;
          *piVar23 = iVar12;
          uVar6 = uVar6 + 1;
          iVar12 = iVar12 + (4 << uVar29);
          piVar23 = piVar23 + 1;
        } while (uVar6 != uVar4 + 1);
      }
      FUN_0003f560(piVar11,uVar4);
      if (0 < iVar30) {
        iVar13 = (iVar33 << (uVar4 & 0x1f)) + 1;
        pcVar14 = (code *)(PTR_LAB_00097078 + 0xad4);
        pcVar15 = (code *)(PTR_LAB_00097078 + -0x4ac);
        iVar12 = 0;
        do {
          piVar32 = param_4 + iVar12;
          piVar31 = (int *)*piVar32;
          piVar26 = piVar31 + param_7;
          piVar23 = piVar31;
          if (*piVar26 != 0) {
            do {
              iVar21 = *piVar23;
              *piVar23 = iVar21 + -1;
              piVar23 = piVar23 + 1;
            } while (iVar21 == 0);
            piVar23 = piVar31;
            uVar6 = param_7;
            if (*piVar26 == 0) {
              do {
                uVar6 = uVar6 - 1;
                *piVar23 = 0;
                piVar23 = piVar23 + 1;
              } while (uVar6 != 0);
              *piVar26 = 1;
            }
            else {
              *piVar26 = 0;
            }
          }
          if (param_4 == local_74) {
            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);
          }
          else {
            piVar26 = (int *)local_74[iVar12];
            piVar28 = piVar26 + param_7;
            piVar23 = piVar26;
            if (*piVar28 != 0) {
              do {
                iVar21 = *piVar23;
                *piVar23 = iVar21 + -1;
                piVar23 = piVar23 + 1;
              } while (iVar21 == 0);
              uVar6 = param_7;
              if (*piVar28 == 0) {
                do {
                  uVar6 = uVar6 - 1;
                  *piVar26 = 0;
                  piVar26 = piVar26 + 1;
                } while (uVar6 != 0);
                *piVar28 = 1;
              }
              else {
                *piVar28 = 0;
              }
            }
            (*pcVar15)(iVar7,uVar8,iVar5,uVar25,piVar31,iVar13,iVar33,iVar24,uVar10);
            (*pcVar15)(iVar34,uVar9,iVar5,uVar25,local_74[iVar12],iVar13,iVar33,iVar24,uVar10);
          }
          iVar12 = iVar12 + 1;
          uVar16 = (*pcVar14)(*piVar32,param_7,uVar4,uVar8,uVar9,iVar34,uVar25,iVar33,iVar24,piVar11
                              ,uVar10,param_12);
          *(undefined4 *)(*piVar32 + param_7 * 4) = uVar16;
        } while (iVar30 != iVar12);
      }
      goto LAB_00040f88;
    }
    (*(code *)PTR___gmp_assert_fail_00097420)
              (PTR_DAT_0009706c + -0x149c,0x1c1,PTR_DAT_0009706c + -0x1490);
LAB_00041cb0:
    iVar27 = (*(code *)PTR___gmp_assert_fail_00097420)
                       (PTR_DAT_0009706c + -0x149c,0x1d7,PTR_DAT_0009706c + -0x147c);
LAB_00041ccc:
    piVar11 = (int *)((int)param_6 + iVar27);
    iVar27 = *piVar11;
    *piVar11 = iVar27 + -1;
    if ((iVar27 == 0) && (param_2 == (int *)0x1)) {
      iVar27 = piVar11[1];
LAB_00041a38:
      piVar11[1] = iVar27 + -1;
      if (iVar27 == 0) {
        iVar27 = 2;
        piVar11 = piVar11 + 2;
        do {
          bVar1 = (int)param_2 < iVar27;
          iVar27 = iVar27 + 1;
          if (bVar1) break;
          iVar30 = *piVar11;
          *piVar11 = iVar30 + -1;
          piVar11 = piVar11 + 1;
        } while (iVar30 == 0);
      }
    }
LAB_00041a74:
    param_6[local_58] = param_6[local_58] + -1;
  }
LAB_000412d8:
  iVar27 = local_64 - local_60;
  if (iVar27 < 1) {
    if (param_2 != (int *)0x0) {
      iVar30 = (int)param_2 + -1;
      iVar7 = *param_6;
      piVar23 = param_1;
      piVar11 = param_6;
      if (iVar30 == 0) {
        *param_1 = iVar7;
      }
      else {
        do {
          *piVar23 = iVar7;
          iVar30 = iVar30 + -1;
          iVar7 = piVar11[1];
          piVar23 = piVar23 + 1;
          piVar11 = piVar11 + 1;
        } while (iVar30 != 0);
        param_1[(int)param_2 + -1] = iVar7;
      }
    }
    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)
                      (param_1,param_1,param_6 + (int)param_2,(int)param_2 + iVar27);
    puVar19 = (uint *)(param_1 + (int)param_2 + iVar27);
    uVar25 = *puVar19;
    piVar11 = (int *)(uVar25 - uVar4);
    *puVar19 = (uint)piVar11;
    if (uVar25 < uVar4) {
      if (local_60 - local_64 < 2) {
LAB_000413d8:
        iVar27 = *param_1;
        *param_1 = iVar27 + 1;
        if (iVar27 + 1 == 0) goto LAB_000413ec;
      }
      else {
        uVar4 = puVar19[1];
        puVar19[1] = uVar4 - 1;
        if (uVar4 == 0) {
          iVar30 = 2;
          puVar19 = puVar19 + 2;
          do {
            bVar1 = local_60 - local_64 == iVar30;
            iVar30 = iVar30 + 1;
            if (bVar1) goto LAB_000413d8;
            uVar4 = *puVar19;
            piVar11 = (int *)(uVar4 - 1);
            *puVar19 = (uint)piVar11;
            iVar27 = 0;
            puVar19 = puVar19 + 1;
          } while (uVar4 == 0);
          goto LAB_000418b4;
        }
      }
    }
  }
  else {
    uVar4 = (*(code *)PTR___gmpn_add_n_00097334)(param_1,param_6,param_6 + (int)param_2 * 2,iVar27);
    puVar18 = (uint *)(param_6 + iVar27);
    puVar19 = (uint *)(param_1 + iVar27);
    iVar27 = (int)param_2 - iVar27;
    uVar25 = *puVar18;
    *puVar19 = uVar4 + uVar25;
    if (uVar4 + uVar25 < uVar4) {
      if (iVar27 < 2) {
LAB_00041994:
        iVar27 = 1;
      }
      else {
        uVar4 = puVar18[1];
        puVar19[1] = uVar4 + 1;
        if (uVar4 + 1 == 0) {
          puVar20 = puVar18 + 2;
          iVar30 = 2;
          puVar22 = puVar19 + 2;
          do {
            if (iVar27 == iVar30) goto LAB_00041994;
            uVar4 = *puVar20;
            iVar30 = iVar30 + 1;
            puVar20 = puVar20 + 1;
            *puVar22 = uVar4 + 1;
            puVar22 = puVar22 + 1;
          } while (uVar4 + 1 == 0);
        }
        else {
          iVar30 = 2;
        }
        if ((puVar19 == puVar18) || (iVar27 <= iVar30)) goto LAB_00041acc;
        puVar22 = puVar18 + iVar30;
        puVar19 = puVar19 + iVar30;
        do {
          uVar4 = *puVar22;
          puVar22 = puVar22 + 1;
          *puVar19 = uVar4;
          puVar19 = puVar19 + 1;
        } while (puVar22 != puVar18 + iVar27);
        iVar27 = 0;
      }
    }
    else {
      if ((puVar19 != puVar18) && (puVar22 = puVar18 + 1, 1 < iVar27)) {
        do {
          puVar19 = puVar19 + 1;
          uVar4 = *puVar22;
          puVar22 = puVar22 + 1;
          *puVar19 = uVar4;
        } while (puVar18 + iVar27 != puVar22);
      }
LAB_00041acc:
      iVar27 = 0;
    }
    piVar11 = param_1;
    uVar4 = (*(code *)PTR___gmpn_sub_n_00097514)(param_1,param_1,param_6 + (int)param_2,param_2);
    uVar25 = param_1[(int)param_2];
    param_1[(int)param_2] = uVar25 - uVar4;
    if ((uVar4 <= uVar25) || (iVar27 = iVar27 + -1, iVar27 != -1)) goto LAB_000418b4;
    iVar27 = *param_1;
    *param_1 = iVar27 + 1;
    if (iVar27 + 1 != 0) {
      iVar27 = 0;
      goto LAB_000418b4;
    }
LAB_000413ec:
    if ((int)param_2 < 2) {
LAB_00041438:
      iVar27 = 1;
      goto LAB_000418b4;
    }
    iVar27 = param_1[1];
    param_1[1] = iVar27 + 1;
    if (iVar27 + 1 == 0) {
      piVar26 = (int *)0x2;
      piVar23 = param_1 + 2;
      do {
        bVar1 = param_2 == piVar26;
        piVar26 = (int *)((int)piVar26 + 1);
        piVar11 = param_2;
        if (bVar1) goto LAB_00041438;
        iVar27 = *piVar23;
        *piVar23 = iVar27 + 1;
        piVar23 = piVar23 + 1;
      } while (iVar27 + 1 == 0);
    }
  }
  iVar27 = 0;
LAB_000418b4:
  if (local_2c != *(int *)puVar3) {
    (*(code *)PTR___stack_chk_fail_000974d0)();
    return (local_2c + -1 >> ((uint)piVar11 & 0x1f)) + 1 << ((uint)piVar11 & 0x1f);
  }
  return iVar27;
}

